caffe模型转torch的一些问题
Some questions about convert caffe model to torch
我使用torch-caffe-binding将caffe模型转换为torch。我想最后删除损失层并添加其他火炬层,我可以只删除 .prototxt
文件中的层并“训练”模型以获取 .caffemodel
文件并导入火炬?
而且模型使用的是lmdb类型的数据,当我使用net:forward(input)
训练模型时,模型只是使用数据层中定义的数据,而不是使用input
数据。那么如何训练使用lmdb数据的模型呢?
caffe 模型有一些自定义层,所以我不能使用 loadcaffe
在 torch
中加载模型
这里有 3 个问题 -
- 你可能需要训练的损失层(这就是你
想要最小化)。所以用它训练,训练完成后
在转换为 torch 之前将其从 prototxt 中删除。
为了使用lmdb而不是使用数据层,连接
您对第一个转换层的输入(假设您的第一个非输入
图层是转换的,例如说你有
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
}
}
- 至于自定义层,您必须找到一个等效层
在火炬中实现或自己实现
我使用torch-caffe-binding将caffe模型转换为torch。我想最后删除损失层并添加其他火炬层,我可以只删除 .prototxt
文件中的层并“训练”模型以获取 .caffemodel
文件并导入火炬?
而且模型使用的是lmdb类型的数据,当我使用net:forward(input)
训练模型时,模型只是使用数据层中定义的数据,而不是使用input
数据。那么如何训练使用lmdb数据的模型呢?
caffe 模型有一些自定义层,所以我不能使用 loadcaffe
在 torch
这里有 3 个问题 -
- 你可能需要训练的损失层(这就是你 想要最小化)。所以用它训练,训练完成后 在转换为 torch 之前将其从 prototxt 中删除。
为了使用lmdb而不是使用数据层,连接 您对第一个转换层的输入(假设您的第一个非输入 图层是转换的,例如说你有
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 } }
- 至于自定义层,您必须找到一个等效层 在火炬中实现或自己实现