您在这里提出了很多问题,我将为您提供一些重点和指导,希望这些对您有所帮助。我不会明确回答您的所有问题。
您似乎对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,原则上需要在反向传播期间将渐变传递给 所有
bottoms。但是,
label损失层底部的梯度是什么意思?在某些情况下,您不想传播到 所有
bottoms:这是此标志的作用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)