将 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的主要内容,如果未能解决你的问题,请参考以下文章