在解析了许多有关在Python中构建Caffe层的链接之后,我仍然很难理解一些概念。可以请别人澄清一下吗?
我仍然缺少的是:
setup()
方法:我应该在这里做什么?为什么在示例中我应该将“底部”参数的长度与“ 2”进行比较?为什么应该是2?似乎不是批处理大小,因为它是任意的?据我了解,底部是blob,然后第一维是批处理大小?reshape()
方法:据我所知,“底部”输入参数是下层的Blob,“顶层”参数是上层的Blob,我需要根据我的计算输出形状使用前向传递来重塑顶层。但是,如果这些形状在传球之间不改变,而只是权重发生变化,为什么我需要在每个前传球上都这样做呢?reshape
和forward
方法对于使用的“顶部”输入参数有0个索引。为什么我需要使用top[0].data=...
或top[0].input=...
代替top.data=...
and top.input=...
?这个指数是关于什么的?如果我们不使用此顶部列表的其他部分,为什么以这种方式公开它?我可以怀疑它或C ++主干的巧合,但是最好确切知道。reshape()
方法,符合:if bottom[0].count != bottom[1].count
我在这里做什么?为什么它的尺寸又是2?我在这里算什么?为什么blob的两个部分(0和1)在某些成员(count
)中的数量应该相等?
forward()
方法,我在此行中定义:self.diff[...] = bottom[0].data - bottom[1].data
如果我定义正向路径后使用它?我们可以使用吗
diff = bottom[0].data - bottom[1].data
而是稍后在此方法中计算损失,而不分配给self
,还是出于某种目的而完成?
backward()
方法:这是关于什么的for i in range(2):
?为什么范围再次是2?
backward()
方法,propagate_down
参数:为什么要定义?我的意思是,如果应该将其True渐变分配给bottom[X].diff
我,但是为什么有人会调用什么都不做的方法propagate_down = False
,如果它什么都不做并且仍然在内部循环呢?
如果这些问题太明显了,我感到抱歉,我只是无法找到一个很好的指南来理解它们并在这里寻求帮助。
您在这里提出了很多问题,我将为您提供一些重点和指导,希望这些对您有所帮助。我不会明确回答您的所有问题。
您似乎对Blob和图层的输入/输出之间的差异感到最困惑。实际上,大多数层都有一个 单一的 Blob作为输入,一个 单一的
Blob作为输出,但并非总是如此。考虑一个损失层:它有 两个 输入:预测和地面真相标签。因此,在这种情况下,bottom
是一个长度为 2
(!)的向量,是一个bottom[0]
表示预测的(4-D)斑点,而bottom[1]
另一个是带有标签的斑点。因此,在构造这样的层时,您必须确定您具有(硬编码)2个输入Blob(例如,ExactNumBottomBlobs()
见AccuracyLayer
定义)。
这同样适用于top
斑点和:确实是在大多数情况下,有一个单一的top
每一层,但它并非总是如此(见例如AccuracyLayer
)。因此,top
也是4-D斑点的
向量 ,每top
一层一个。大多数情况下,该向量中只有一个html" target="_blank">元素,但有时您可能会发现多个。
我相信这涵盖了您的问题1,3,4和6。
从reshape()
(Q.2)开始,此函数未在每次正向传递时调用,仅在设置net来为输入/输出和参数分配空间时才调用此函数。
有时,您可能想更改网络的输入大小(例如,检测网络),然后需要调用网络reshape()
的所有层以适应新的输入大小。
至于propagate_down
参数(Q.7):由于一层可能有多个bottom
,原则上需要在反向传播期间将渐变传递给 所有
bottom
s。但是,label
损失层底部的梯度是什么意思?在某些情况下,您不想传播到 所有
bottom
s:这是此标志的作用。
3.4.2 构建类型 默认情况下,Android plugin 会自动的设置工程,构建 release 和 debug 两个版本。 他们主要的差异主要在于是否可以在设备上调试应用以及APK如何签名。 debug 版本会被使用已知的名称/密码自动生成的密钥/证书签名。release 版本在构建过程中不会被签名,需要构建后再签名。 这些配置可以通过一个叫 BuildType 配置。默认情况下,已经创建
下面的这些代码可以帮助您通过CSS文件和SCSS文件,创建和编译 CSS 和 JS 文件的source-maps。 安装依赖 为了运行编译和压缩任务,你必须安装 node 和 npm。 命令行 // (Optional) Install Gulp module globally npm install gulp -g // Install fullpage's build dependen
问题内容: 我试图在Python中创建具有自定义等待条件的函数。但是,我得到一个错误: TypeError:“布尔”对象不可调用 问题答案: 我最终要做的是使用兰巴舞
问题内容: 创建一个新的数据库架构,并创建一个不存在的数据库架构,并更新现有的数据库架构。如果我想检查数据库模式是否存在,并根据将要创建的数据库模式来检查,该如何实现。目前,我的配置是: 和HibernateEMSDao.java: 这是工作。什么配置可以帮助我实现这一目标?就像是: 检查ID = 1的用户是否存在 如果没有创建架构 感谢致敬。 问题答案: 您可以禁用该选项,检查条件(可能使用普通
3.4.5 清理资源 在构建的时候,你也可以自动的移除一些未使用的资源。更多信息,请参考资源清理文档