我有一个在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 }
这是我目前所做的。我不能确定它是否正确。
#---构建模型----- model = models.Sequential() # 输入层 model.add(layers.Dense(4, activation = "relu", input_shape=(4,))) # 隐藏层 model.add(layers.Dense(25, activation = "relu")) model.add(layers.Dense(5, activation = "relu")) # 输出层 model.add(layers.Dense(1, activation = "linear")) model.summary() # 编译模型 model.compile(loss= "mean_squared_error" , optimizer="adam", metrics=["mean_squared_error"])
回答:
根据Convnet.js文档:“你的最后一层必须是损失层(分类使用’softmax’或’svm’,回归使用’regression’)。”此外:“创建一个回归层,它接受一个目标列表(任意数字,不一定是softmax/svm中的单一离散类别标签)并反向传播L2损失。”
这不太清楚。我怀疑“regression”层只是另一个全连接(Dense)神经元层。’regression’这个词可能指的是线性激活。所以,这次不使用’relu’吗?
无论如何,它可能会看起来像这样(非顺序模式):
from keras.layers import Densefrom keras.models import Modelmy_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似乎是一个不错的项目。如果有了解神经网络的人加入,将会更好。