neural-network - caffe:模型定义:使用 caffe.NetSpec() 编写具有不同阶段的同一层

标签 neural-network deep-learning caffe

我想用python设置一个caffe CNN,使用caffe.NetSpec()界面。虽然我看到我们可以把测试网放在 solver.prototxt , 我想写在model.prototxt具有不同的相位。例如,caffe model prototxt实现两个不同阶段的数据层:

layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TRAIN
  }
....
}
layer {
  name: "data"
  type: "Data"
  top: "data"
  top: "label"
  include {
    phase: TEST
  }
....
}

我应该如何在 python 中获得这样的实现?

最佳答案

尽管已经给出了几个答案,但没有一个涵盖更真实的场景,您甚至不知道(在编写代码时)层的名称。例如,当您从较小的 block 组装网络时,您不能编写:

n.data = L.Data(#...
n.test_data = L.Data(#...

因为该 block 的每个下一个实例化都会覆盖 datatest_data (或 batchnorm ,它更有可能被放入 block 中)。

幸运的是,您可以通过 __getitem__ 分配给 NetSpec 对象。 ,像这样:
layer_name = 'norm{}'.format(i) #for example
n[layer_name + '_train'] = L.Data(#...
n[layer_name + '_test']  = L.Data(#...

关于neural-network - caffe:模型定义:使用 caffe.NetSpec() 编写具有不同阶段的同一层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36844968/

相关文章:

tensorflow - 不确定函数是否会破坏反向传播

artificial-intelligence - 在神经网络反向传播算法中循环训练数据

python - 未知?塑造keras深度学习

android - android ndk开发中使用的google::protobuf

Caffe 错误无法从层复制参数 0 权重,形状不匹配

machine-learning - 了解卷积神经网络的输出

java - 使用 deeplearning4j 训练简单的神经网络

python - 使用OpenCV检测图像中的盒子

python - AdamW 的衰减学习率计划如何影响权重衰减参数?

tensorflow - Adam Optimizer减轻体重的正确方法是什么