【问题标题】:How to export a convolutional neural network from one language to another?如何将卷积神经网络从一种语言导出到另一种语言?
【发布时间】:2016-04-28 00:24:23
【问题描述】:

我想用一种语言训练卷积神经网络,但在另一种语言中使用它(出于各种技术/性能相关的原因)。有没有通过节省权重的编程方式来做到这一点?

例如,我可以在 Python 中训练一个多层感知器,然后将所有权重保存在一个 CSV 文件中,然后在 Java 中创建一个新的 MLP 并使用该文件来设置权重。但是,我不确定如何用卷积神经网络做类似的事情,因为我不知道如何处理卷积层。我认为我的主要问题是了解如何导出/保存网络的卷积部分,然后将它们加载到其他地方。

【问题讨论】:

  • 如果你保存权重矩阵,我推荐HDF5(例如python
  • 没有单一的数据格式。不过,Caffe 的 prototxt 格式还是不错的。很长一段时间以来,我都想为此编写一个标准,但这是一项艰巨的任务,我会在空闲时间完全完成。而且我不确定主要框架是否愿意添加导入/导出脚本。它只适用于非常标准的架构。

标签: machine-learning computer-vision neural-network deep-learning conv-neural-network


【解决方案1】:

简而言之 - 没有通用的方法,也不会是,因为它是一种高度专业化的数据类型,没有人知道它们应该是什么样子。

换句话说,您必须自己将其导出到 .txt、.csv、数据库或您选择的任何其他存储系统。 CNN 与 MLP 没有太大区别,它们也有层和权重,唯一的区别是它们的结构有点复杂——而且这种结构是你需要保存的额外的几个数字,例如你需要保存的空间卷积知道层的大小、内核的大小及其移动/填充,因此您可以用新语言重建整个对象。

【讨论】:

    【解决方案2】:

    如果我说得对,你想用一种语言训练 CNN,然后保存它的权重,然后你想用其他语言使用这些权重。
    如果是这种情况,那么答案将完全取决于您要使用的语言。我见过有人使用 C++/Python 训练 CNN,使用 caffe 并将权重保存为 .caffemodel。然后,您可以使用 loadcaffe 接口将此“.caffemodel”与 lua 语言一起使用。 所以更高层次的答案是;是的,您可以找到一种在 python/C++ 和 lua 之间共享的方法。您还可以使用 mattorch/matio 在 lua 和 matlab 之间共享权重。

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 2011-01-04
      • 2018-02-15
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      相关资源
      最近更新 更多