关于convert caffe model to torch的一些问题

Posted

技术标签:

【中文标题】关于convert caffe model to torch的一些问题【英文标题】:Some questions about convert caffe model to torch 【发布时间】:2018-02-26 12:28:39 【问题描述】:

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

【问题讨论】:

【参考方案1】:

这里有 3 个问题 -

    您可能需要损失层进行训练(这就是​​您的 想最小化)。所以用它训练,训练完成后 在转换为 Torch 之前将其从您的 prototxt 中删除。

    为了使用 lmdb 而不是使用数据层,连接 您对第一个 conv 层的输入(假设您的第一个非输入 层是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
      
    
    
    至于自定义层,您必须找到一个等效层 在 Torch 中实现或自行实现

【讨论】:

当我删除prototxt中的损失层时,控制台显示如下:I0923 20:56:19.437440 23288 net.cpp:200] conv1 does not need backward computation.所有层都有保存消息。我不能使用torch来训练它。当我添加损失层,一切正常,当所有层都需要向后时,如何删除损失层?提前致谢。 我找到了解决方法,只需在最后一层添加loss_weight: 1即可。感谢您的帮助 当我使用net = caffe.Net('test.prototxt','test.caffemodel','train')net:getParameters() 得到netGradParameters。但我得到[torch.DoubleTensor with no dimension],我不能在torch 中训练它。所以如果caffe 模型不能用火炬训练还是我用错误的方式训练它?

以上是关于关于convert caffe model to torch的一些问题的主要内容,如果未能解决你的问题,请参考以下文章

Python int too large to convert to C long

「caffe编译bug」.build_release/lib/libcaffe.so: undefined reference to cv::imread

关于在2.7中出现 "UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode

[踩坑] Django "OverflowError: Python int too large to convert to C long" 错误

models-caffes-大全

caffe的model和prototxt转pytorch的model