我正在用Keras构建我的第一个人工多层感知器神经网络。在
这是我的输入数据:
这是我用来构建初始模型的代码,基本上遵循Keras示例代码:
model = Sequential()
model.add(Dense(64, input_dim=14, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(64, init='uniform'))
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(2, init='uniform'))
model.add(Activation('softmax'))
sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)
model.fit(X_train, y_train, nb_epoch=20, batch_size=16)
输出:
^{pr2}$我如何训练和调整这个模型,让我的代码输出我最好的预测模型?我是神经网络新手,只是完全搞不清在建立模型后下一步是什么。我知道我想优化它,但我不确定要调整哪些特性,或者是否应该手动执行,或者如何编写代码来实现。在
你可以做的一些事情是:
mean_squared_error
更改为binary_crossentropy
。mean_squared_error
用于回归,但您需要对数据进行分类。在show_accuracy=True
添加到fit()
函数中,该函数将在每个历元输出模型的精度。这些信息可能比损失价值对你更有用。在validation_split=0.2
添加到fit()
函数中。目前你只在一个训练集上训练,什么都没有验证。这是机器学习的禁区,因为你不能确定你的模型是否仅仅记住了数据集的正确答案(没有真正理解为什么这些答案是正确的)。在Republican
。在Adam
和{SGD
。有时候他们表现得更好。(见documentation about optimizers。)Activation('relu')
、LeakyReLU
、PReLU
和{64
到{BatchNormalization
层(在Activation
层之前)。(见documentation。)0.5
改为0.25
)。在相关问题 更多 >
编程相关推荐