因此,我使用以下命令初始化了一个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)这应该会给我每一层的激活,权重和偏差。然后我救了他们。不过,对渐变没有概念。
这种权重/偏差/激活的方法是正确的吗?
发布于 2019-02-06 20:00:11
使用.diff代替.data
实现详情
由于我们通常对斑点的值和梯度感兴趣,因此一个斑点存储了两块内存、数据和差异。前者是我们传递的正常数据,后者是网络计算的梯度。
http://caffe.berkeleyvision.org/tutorial/net_layer_blob.html
请注意,除非您运行了一些训练步骤,否则这些值将被初始化为零。
https://stackoverflow.com/questions/53703199
复制相似问题