如何将卷积神经网络从一种语言导出到另一种语言?

时间:2016-01-21 16:30:02

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

我想用一种语言训练卷积神经网络,但是在另一种语言中使用它(出于各种技术/性能相关的原因)。有没有一种程序化的方法来保存权重?

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

2 个答案:

答案 0 :(得分:1)

简而言之 - 没有一般的方式,而且它不是,因为它是高度专业化的数据类型,没有人,他们应该如何看待它们。

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

答案 1 :(得分:0)

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