所以我用
初始化了caffe.Net对象。network = caffe.Net('path/to/lenet.prototxt', caffe.TEST)
,我想获取带参数的每一层的激活,权重,偏差,渐变。我目前的方法是进行step(100)
进行100次迭代,然后查看每一层:
for layer_name in network._layer_names:
if layer_name in network.params:
x = layer_name
output = np.array(network.blobs[x].data)
weight = np.array(network.params[x][0].data)
bias = np.array(network.params[x][1].data)
这应该给我激活,每一层的权重和偏差。然后我保存它们。虽然不知道渐变。
这种权重/偏向/激活方法正确吗?
答案 0 :(得分:0)
使用.diff代替.data
实施细节
由于我们经常对blob的值和梯度感兴趣,因此blob存储两个块的内存,即数据和diff。前者是我们传递的普通数据,后者是网络计算的梯度。
http://caffe.berkeleyvision.org/tutorial/net_layer_blob.html
请注意,除非您已执行一些培训步骤,否则它们将被初始化为零。