Machine learning 何时在Caffe中使用在位层?

Machine learning 何时在Caffe中使用在位层?,machine-learning,neural-network,deep-learning,caffe,backpropagation,Machine Learning,Neural Network,Deep Learning,Caffe,Backpropagation,通过将底部和顶部blob设置为相同,我们可以告诉Caffe进行“就地”计算以保留内存消耗 目前我知道我可以安全地就地使用“BatchNorm”、“Scale”和“ReLU”层(如果我错了,请告诉我)。虽然它似乎对其他层有一些问题(似乎是一个例子) 何时在Caffe中使用在位层? 它是如何与反向传播一起工作的?正如您所指出的,就地层通常不会“开箱即用”地工作。 对于某些层来说,它非常简单(“ReLU”和其他神经元激活层)。 然而,对于其他人,它需要在代码中进行特殊处理。例如,层的实现具有特定的缓存

通过将底部和顶部blob设置为相同,我们可以告诉Caffe进行“就地”计算以保留内存消耗

目前我知道我可以安全地就地使用
“BatchNorm”
“Scale”
“ReLU”
层(如果我错了,请告诉我)。虽然它似乎对其他层有一些问题(似乎是一个例子)

何时在Caffe中使用在位层?

它是如何与反向传播一起工作的?

正如您所指出的,就地层通常不会“开箱即用”地工作。
对于某些层来说,它非常简单(
“ReLU”
和其他神经元激活层)。
然而,对于其他人,它需要在代码中进行特殊处理。例如,层的实现具有特定的缓存
bottom\u memory\u
成员变量,该变量存储backprop所需的信息。
您可以看到其他层的类似代码,这些层专门测试
if(top[0]==bottom[0])
以查看该层是否用于“就地”情况


此外,对于输入和输出具有不同形状的就地层来说没有什么意义,因此诸如
“卷积”
“内部产品”
“池”
等层不被视为“就地”层的候选层

@Shai谢谢你的回答,肯定有帮助!谢谢BatchNorm层的
in-place=True
in-place=False
如何?有时,我看到BatchNorm层的文件
in-place=False
。我们在这种情况下有什么好处吗?@user8264我不太熟悉BatchNorm层的内部,所以我不能对此发表评论。有时就地使用需要更多的计算(为了节省空间)。。。您真的需要询问在\u place=False中指定
的人。。。