首页 文章

关于将caffe模型转换为火炬的一些问题

提问于
浏览
0

我使用torch-caffe-binding将caffe模型转换为火炬 . 我想删除最后的损失层并添加其他火炬层,我可以删除 .prototxt 文件中的图层和"train"模型以获取 .caffemodel 文件并导入火炬吗?
并且模型使用lmdb类型数据,当我使用 net:forward(input) 来训练模型时,模型只使用数据层中定义的数据而不是使用 input 数据 . 那么如何训练使用lmdb数据的模型呢?
caffe模型有一些自定义层,所以我不能使用 loadcaffe 在火炬中加载模型

1 回答

  • 1

    你有3个问题 -

    • 您可能需要用于训练的损失层(这是您想要最小化的) . 因此,训练结束后,在完成训练后将其从原型中移除,然后再转换为火炬 .

    • 为了使用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
      }
    }
    
    • 对于自定义图层,您必须在火炬中找到等效的实现,或者自己实现它

相关问题