何时在Caffe中使用就地层?

时间:2016-07-20 07:26:55

标签: machine-learning neural-network deep-learning caffe backpropagation

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

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

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

1 个答案:

答案 0 :(得分:12)

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

此外,具有输入和输出具有不同形状的就地层是没有意义的,因此"Convolution""InnerProduct""Pool"等层不是被视为“就地”层的候选人。