我在Caffe中有一个网络接受多个图像输入(可能是不同的尺寸),并将它们用作网络初始部分的单独blob。
在培训阶段,我按照文档中的建议创建了一个HDF5数据库。
但是,对于部署阶段,我需要使用输入层替换训练阶段的数据层,并指定输入blob的尺寸。
对于单个blob,这是使用input_param的shape属性完成的。在这种情况下我怎么能这样做呢?我有多个blob,可能有不同的尺寸?
谢谢。
答案 0 :(得分:1)
如果仔细查看caffe.proto
,您会发现input
和input_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"
图层。