i使用火炬粘合绑定将Caffe模型转换为火炬。我想最终删除损失层并添加其他火炬层,我可以在.prototxt
文件中删除层和" train"。获取.caffemodel
文件并导入火炬的模型?
并且该模型使用LMDB类型数据,当我使用net:forward(input)
训练模型时,该模型仅使用数据层中定义的数据而不是使用input
数据。那么如何训练使用LMDB数据的模型?
Caffe模型有一些自定义层,因此我无法使用loadcaffe
加载模型
您在这里有3个问题 -
- 您可能需要训练的损失层(这就是您想要最小化)。因此,训练它,训练完成后在转换为火炬之前,将其从原始版中删除。
-
为了使用LMDB而不是使用数据层,请连接您对第一个Conv层的输入(假设您的第一个未输入层是转为的,例如说你有
layer { name: "input-data" type: "DummyData" top: "data" top: "im_info" dummy_data_param { shape { dim: 1 dim: 3 dim: 224 dim: 224 } } }
以及
input: "data" input_shape: { dim: 1 dim: 3 dim: 224 dim: 224 }
,然后
layer { name: "conv1" type: "Convolution" bottom: "data" --> **here put data instead of input-data** top: "conv1" convolution_param { num_output: 96 kernel_size: 3 pad: 1 stride: 1 } }
- 至于自定义层,您必须找到等效的在火炬中实现或用自己的 实施