用于 Caffe 训练的自定义 python 损失层的 'forward' 中的 'self.diff' 是什么意思?
What is the meaning of 'self.diff' in 'forward' of a custom python loss layer for Caffe training?
我尝试使用自定义 python 损失层。当我在网上查了几个例子,比如:
Euclidean loss layer, Dice loss layer,
我注意到变量 'self.diff' 总是在 'forward' 中赋值。特别是对于 Dice 损失层,
self.diff[...] = bottom[1].data
我想知道是否有任何理由必须在 forward
中引入这个变量,或者我可以只使用 bottom[1].data
来访问地面实况标签?
此外,reshape
中的top[0].reshape(1)
有什么意义,因为根据forward
中的定义,损失输出本身就是一个标量。
您需要设置层的diff属性以实现整体一致性和数据通信协议;它在 class 中的其他地方以及损失层对象出现的任何地方可用。 bottom 是一个本地参数,在其他地方以相同的形式不可用。
总的来说,代码是可扩展的,适用于各种应用程序和更复杂的计算;重塑是其中的一部分,确保返回值是标量,即使有人扩展输入以使用向量或矩阵。
我尝试使用自定义 python 损失层。当我在网上查了几个例子,比如:
Euclidean loss layer, Dice loss layer,
我注意到变量 'self.diff' 总是在 'forward' 中赋值。特别是对于 Dice 损失层,
self.diff[...] = bottom[1].data
我想知道是否有任何理由必须在 forward
中引入这个变量,或者我可以只使用 bottom[1].data
来访问地面实况标签?
此外,reshape
中的top[0].reshape(1)
有什么意义,因为根据forward
中的定义,损失输出本身就是一个标量。
您需要设置层的diff属性以实现整体一致性和数据通信协议;它在 class 中的其他地方以及损失层对象出现的任何地方可用。 bottom 是一个本地参数,在其他地方以相同的形式不可用。
总的来说,代码是可扩展的,适用于各种应用程序和更复杂的计算;重塑是其中的一部分,确保返回值是标量,即使有人扩展输入以使用向量或矩阵。