在python中构建自定义Caffe层

在python中构建自定义Caffe层,第1张

在python中构建自定义Caffe层

您在这里提出了很多问题,我将为您提供一些重点和指导,希望这些对您有所帮助。我不会明确回答您的所有问题。

您似乎对Blob和图层的输入/输出之间的差异感到最困惑。实际上,大多数层都有一个 单一的 Blob作为输入,一个 单一的
Blob作为输出,但并非总是如此。考虑一个损失层:它有 两个 输入:预测和地面真相标签。因此,在这种情况下,

bottom
是一个长度为 2
(!)的向量,是一个
bottom[0]
表示预测的(4-D)斑点,而
bottom[1]
另一个是带有标签的斑点。因此,在构造这样的层时,您必须确定您具有(硬编码)2个输入Blob(例如,
ExactNumBottomBlobs()
AccuracyLayer
定义)。

这同样适用于

top
斑点和:确实是在大多数情况下,有一个单一的
top
每一层,但它并非总是如此(见例如
AccuracyLayer
)。因此,
top
也是4-D斑点的
向量 ,每
top
一层一个。大多数情况下,该向量中只有一个元素,但有时您可能会发现多个。

我相信这涵盖了您的问题1,3,4和6。

reshape()
(Q.2)开始,此函数未在每次正向传递时调用,仅在设置net来为输入/输出和参数分配空间时才调用此函数。
有时,您可能想更改网络的输入大小(例如,检测网络),然后需要调用网络
reshape()
的所有层以适应新的输入大小。

至于

propagate_down
参数(Q.7):由于一层可能有多个
bottom
,原则上需要在反向传播期间将渐变传递给 所有
bottom
s。但是,
label
损失层底部的梯度是什么意思?在某些情况下,您不想传播到 所有
bottom
s:这是此标志的作用。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5654255.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存