在Caffe中获取和编辑渐变参数

时间:2017-01-31 08:13:45

标签: tensorflow neural-network deep-learning caffe

是否有可能获得CNN中Caffe中每一层的渐变,编辑它们并在训练过程中再次应用新的渐变?如果可能,使用pycaffe接口。

例如在TensorFlow中,它可以通过函数来​​完成:

<PropertyGroup>
        <fileName>$(FilePath.Substring($(FilePath.LastIndexOf('\'))))</fileName>    
</PropertyGroup>

1 个答案:

答案 0 :(得分:1)

我不确定你的意思&#34;在训练过程中应用新的渐变&#34;,但你可以访问pycaffe界面中的渐变:

import caffe
net = caffe.Net('/path/to/net.prototxt', '/path/to/weights.caffemodel', caffe.TEST)
# provide inputs to the net, do a pass so that meaningful data/gradients propagate to all the layers
net.forward_backward_all()

# once data/gradients are updated, you can access them
net.blobs['blob_name'].diff  # access the gradient of blob 'blob_name'
net.layers[5].blobs[0].diff  # access the gradient of the first parameter blob of the 6th layer

要在图层名称和图层索引之间进行映射,您可以使用以下代码:

list(net._layer_names).index('layer_name')

这将返回图层'layer_name'的索引。