将 Convnet.js 神经网络模型转换为 Keras Tensorflow

Posted

技术标签:

【中文标题】将 Convnet.js 神经网络模型转换为 Keras Tensorflow【英文标题】:Convert Convnet.js neural network model to Keras Tensorflow 【发布时间】:2019-03-19 19:28:34 【问题描述】:

我有一个在 convnet.js 中创建的神经网络模型,我必须使用 Keras 定义它。有谁知道我该怎么做?

neural = 
          net : new convnetjs.Net(),
          layer_defs : [
            type:'input', out_sx:4, out_sy:4, out_depth:1,
            type:'fc', num_neurons:25, activation:"regression",
            type:'regression', num_neurons:5
          ],
          neuralDepth: 1
      

这是我目前所能做的。我不能确定它是否正确。

   #---Build Model-----
    model = models.Sequential()
    # Input - Layer 
    model.add(layers.Dense(4, activation = "relu", input_shape=(4,)))  
    # Hidden - Layers 
    model.add(layers.Dense(25, activation = "relu")) 
    model.add(layers.Dense(5, activation = "relu"))
    # Output- Layer
    model.add(layers.Dense(1, activation = "linear")) 
    model.summary()
    # Compile Model
    model.compile(loss= "mean_squared_error" , optimizer="adam", metrics=["mean_squared_error"])

【问题讨论】:

为什么convnetjs中的网络使用regression作为激活函数?你确定这是正确的吗? regression 应该用作类型 你能以某种方式验证两者是否给出相同的结果吗? 【参考方案1】:

来自 Convnet.js 文档:“您的最后一层必须是损失层('softmax' 或 'svm' 用于分类,或 'regression' 用于回归)。” 另外:“创建一个回归层,它采用目标列表(任意数字,不一定是 softmax/svm 中的单个离散类标签)并反向支持 L2 损失。”

不清楚。我怀疑“回归”层只是另一层密集(完全连接)神经元。 “回归”一词可能是指线性活动。所以,这次没有'relu'?

无论如何,它可能看起来像(无顺序模式):

from keras.layers import Dense
from keras.models import Model
my_input = Input(shape = (4, ))
x = Dense(25, activation='relu')(x)
x = Dense(4)(x)
my_model = Model(input=my_input, output=x, loss='mse', metrics='mse')
my_model.compile(optimizer=Adam(LEARNING_RATE), loss='binary_crossentropy', metrics=['mse'])

阅读一些文档后,convnet.js 似乎是一个不错的项目。有神经网络知识的人会更好。

【讨论】:

以上是关于将 Convnet.js 神经网络模型转换为 Keras Tensorflow的主要内容,如果未能解决你的问题,请参考以下文章

网络基础之网络模型及各分层的设备

将 Keras 模型转换为 C++ [关闭]

将张量流模型转换为英特尔Movidius图的问题

PyTorch参数模型转换为PT模型

TensorFlow 保存和加载不一致

Keras 卷积神经网络转换为 CoreML 模型的输入是多数组而不是图像?