machine-learning - 如何在 Caffe 中检索图层

标签 machine-learning neural-network deep-learning caffe pycaffe

给定一个 caffe.Net 对象,访问特定层的最佳方式是什么?
现在我只知道如何迭代它们,这不是很有用:

for i in range(n_layers):
  print net.layers[i].type

最佳答案

您可以通过以下方式获取所有图层的名称

all_names = [n for n in net._layer_names]

当然,如果你想检查学习参数的值,你可以在 net surgery 中看到它是如何完成的。示例。

例如,如果您想检查 conv1 层的过滤器(假设您的模型中有一个具有该名称的层),您可以访问

In [1]: net.params['conv1'][0].data.shape
Out[1]: (64, 3, 3, 3)

以及该层的偏置项

In [2]: net.params['conv1'][1].data.shape
Out[2]: (64,)

如您所见,这是图像处理网络的第一层,它有 64 个滤波器,作用于 BGR(3 channel )输入的 3x3 block 。

如果您已经通过网络馈送数据(使用 net.forwardnet.backward),您可以检查不同层对馈送的特定输入的响应通过网络:

In [3]: net.blobs['conv1'].data.shape
Out[3]: (1, 64, 198, 198)

conv1层的输出形状为198x198像素,64个 channel (该层有64个滤波器),批量大小为1。
如果您也执行了向后传递,您还可以检查在这一层计算的梯度:

In [4]: net.blobs['conv1'].diff.shape
Out[4]: (1, 64, 198, 198)

关于machine-learning - 如何在 Caffe 中检索图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36265507/

相关文章:

python - Pytorch:如何将数据转换为张量

python - PyTorch 中的神经网络、损失和优化器如何连接?

python - TensorFlow:在自定义图像数据集上训练模型

machine-learning - 如何使用 Keras 更改 RNN 中的隐藏状态激活大小?

python - 加载保存的检查点并预测不会产生与训练中相同的结果

python - 如何将 MLP 的数据调整为 LSTM(预期 ndim=3,发现 ndim=2 错误)

matlab - 多类朴素贝叶斯分类器 : Getting Same Error Rate

machine-learning - 幕府将军安装窗口

machine-learning - 通过自然语言处理构建成分树结构来无监督地提取菜肴特征

java - 将支持 vector 机与 Encog 3 和多输出一起使用