Caffe deploy.prototxt具有不同维度的多个输入

时间:2017-06-06 12:39:04

标签: input neural-network deep-learning caffe dimensions

我在Caffe中有一个网络接受多个图像输入(可能是不同的尺寸),并将它们用作网络初始部分的单独blob。

在培训阶段,我按照文档中的建议创建了一个HDF5数据库。

但是,对于部署阶段,我需要使用输入层替换训练阶段的数据层,并指定输入blob的尺寸。

对于单个blob,这是使用input_param的shape属性完成的。在这种情况下我怎么能这样做呢?我有多个blob,可能有不同的尺寸?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果仔细查看caffe.proto,您会发现inputinput_shape的属性为repeated

// DEPRECATED. See InputParameter. The input blobs to the network.
repeated string input = 3;
// DEPRECATED. See InputParameter. The shape of the input blobs.
repeated BlobShape input_shape = 8;

这意味着你可以几个这样的条目:

name: "AnAmazingNetWithMultipleInputs_ThankYouShai_IwillForeverBeInYourDebt"
input: "first_input_1x3x127x127"
input_shape { dim: 1 dim: 3 dim: 127 dim: 127 }
input: "second_input_2x4x224x224"
input_shape { dim: 2 dim: 4 dim: 224 dim: 224 }
# I hope you can take it from here ;)

如果你仔细观察caffe.proto的相关部分,你会注意到这种形式的输入形状声明"已弃婚 更好的方法是使用"Input"图层:

layer {
  type: "Input"
  name: "one_input_layer"
  top: "first_input_1x3x127x127"
  shape { dim: 1 dim: 3 dim: 127 dim: 127 }
  top: "second_input_2x4x224x224"
  shape { dim: 2 dim: 4 dim: 224 dim: 224 }
}

如果您发现每个输入更容易理解/阅读,也可以使用不同的"Input"图层。