【问题标题】:How do you export .caffemodels to other applications?如何将 .caffemodel 导出到其他应用程序?
【发布时间】:2016-02-17 15:38:32
【问题描述】:

是否可以翻译 .caffemodel 文件中的信息,以便(例如)Matlab 读取它。也就是说,有没有办法使用 prototxt 的其他东西编写模型并导入使用 Caffe 训练的权重?

如果答案是“不,它是一个二进制文件,并且将始终保持这种状态”,是否有一些关于文件结构的文档,以便人们可以以某种方式提取重要信息?

【问题讨论】:

    标签: caffe pycaffe matcaffe


    【解决方案1】:

    如您所知,.caffemodel 由权重和偏差组成。 在给定 prototxt 的情况下,读取 caffemodel 的权重和偏差的一种简单方法是在 Python 中加载网络并读取权重。

    你可以使用:

    import caffe
    net = caffe.Net(<prototxt-file>,<model-file>,<phase>);
    

    并从net.params访问参数

    source

    【讨论】:

    • 我明白了。难道只有通过那个界面才能做到吗? Pycaffe 不在我的单元上工作。它找不到 Google protobuf。
    • 我相信这是最简单的方法。尝试研究为什么 Pycaffe 不起作用 (groups.google.com/forum/#!topic/caffe-users/9Q10WkpCGxs)。
    • 上帝加西姆,你解决了我的两个问题!你是最棒的。
    【解决方案2】:

    我以VGG为例

    from caffe.proto import caffe_pb2
    net = caffe_pb2.NetParameter()
    caffemodel = sys.argv[1]
    with open(caffemodel, 'rb') as f:
        net.ParseFromString(f.read())
    for i in net.layer:
        print i.ListFields()[0][-1]
    #conv1
    #relu1
    #norm1
    #pool1
    #conv2
    #relu2
    #norm2
    #pool2
    #conv3
    #relu3
    #conv4
    #relu4
    #conv5
    #relu5
    #pool5
    #fc6
    #relu6
    #drop6
    #fc7
    #relu7
    #drop7
    #fc8
    #prob
    

    【讨论】:

      猜你喜欢
      • 2023-01-13
      • 1970-01-01
      • 2013-10-13
      • 2012-01-06
      • 2022-06-10
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      相关资源
      最近更新 更多