机器学习 – 何时在Caffe中使用就地图层?

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

目前我知道我可以安全地使用“BatchNorm”,“Scale”和“ReLU”图层(如果我错了,请让我知道)。虽然它似乎有其他层面的一些问题(this issue似乎是一个例子)。

何时在Caffe中使用就地层?
它如何与反向传播协同工作?

最佳答案
如你所知,就地层通常不会“开箱即用”。
对于某些层次来说,这是非常微不足道的(“ReLU”和其他神经元激活层)。
然而,对于别人来说,它需要代码中的特殊处理。例如,"PReLU"层的实现具有特定的缓存bottom_memory_成员变量,用于存储backprop所需的信息。
您可以看到其他层的类似代码,专门测试if(top [0] == bottom [0])以查看该层是否在“就地”情况下使用。

此外,输入和输出具有不同形状的就地层是没有意义的,因此诸如“卷积”,“内在产品”,“池”的层不被认为是“就地”的候选者,层。

转载注明原文:机器学习 – 何时在Caffe中使用就地图层? - 代码日志