[Caffe-CNN]如何获得输出的渐变w.r.t.卷积层?

时间:2017-08-04 16:47:01

标签: python caffe gradients

我尝试使用Python实现本文 - https://arxiv.org/abs/1610.02391。为此,我想获得相对于最后一个卷积层的特定类的输出的梯度。我遇到了reverse()函数的以下用法。

label = np.zeros((1, 6))
label[0, interested_class] = 1
net.backward(**{net.output[0]: label}) 

假设我的网络中有六个班级。

然而,它为输入图层提供渐变w.r.t。

我尝试使用以下用法,但它没有提供理想的输出。

label = np.zeros((1,6))
label[0,interested_class] = 1
net.backward(end=conv, **{net.output[0]:label}) 

确切地说,我想获得输出层w.r.t conv 图层值的渐变。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

我通过阅读this postthis discussion了解了如何执行此操作。这是代码。

layer_name = 'conv' #Convolutional layer of interest
class_label= 4 # the class of interest
label = np.zeros((1,6))
label[0,interested_class] = 1    
grads= net.backward(diffs= [layer_name], **{net.outputs[0]:diff})
gradients = grads[layer_name]

希望这会有所帮助!