Caffe deploy.prototxt 具有多个不同维度的输入
Caffe deploy.prototxt with multiple inputs of different dimensions
我在 Caffe 中有一个网络,它接受多个图像输入(可能具有不同的维度)并将它们用作网络初始部分的单独 blob。
在训练阶段,我按照文档中的建议创建了一个 HDF5 数据库来实现这一点。
但是,对于部署阶段,我需要用输入层替换训练阶段的数据层,并指定输入 blob 的维度。
对于单个 blob,这是使用 input_param 的 属性 形状完成的。在这种情况下我该怎么做,我有多个 blob,可能具有不同的尺寸?
谢谢。
如果仔细观察 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 shape declaration" 的这种形式已被弃用。
更好的方法是使用 "Input"
layer:
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 }
}
如果您觉得 understand/read.
更容易,您也可以为每个输入设置不同的 "Input"
层
我在 Caffe 中有一个网络,它接受多个图像输入(可能具有不同的维度)并将它们用作网络初始部分的单独 blob。
在训练阶段,我按照文档中的建议创建了一个 HDF5 数据库来实现这一点。
但是,对于部署阶段,我需要用输入层替换训练阶段的数据层,并指定输入 blob 的维度。
对于单个 blob,这是使用 input_param 的 属性 形状完成的。在这种情况下我该怎么做,我有多个 blob,可能具有不同的尺寸?
谢谢。
如果仔细观察 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 shape declaration" 的这种形式已被弃用。
更好的方法是使用 "Input"
layer:
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 }
}
如果您觉得 understand/read.
更容易,您也可以为每个输入设置不同的"Input"
层