如何使用Keras训练和调整人工多层感知器神经网络?

2024-04-29 10:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Keras构建我的第一个人工多层感知器神经网络。在

这是我的输入数据:

enter image description here

这是我用来构建初始模型的代码,基本上遵循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}$

我如何训练和调整这个模型,让我的代码输出我最好的预测模型?我是神经网络新手,只是完全搞不清在建立模型后下一步是什么。我知道我想优化它,但我不确定要调整哪些特性,或者是否应该手动执行,或者如何编写代码来实现。在


Tags: 代码模型addmodelinittrain神经网络uniform
1条回答
网友
1楼 · 发布于 2024-04-29 10:39:11

你可以做的一些事情是:

  • 将损失函数从mean_squared_error更改为binary_crossentropymean_squared_error用于回归,但您需要对数据进行分类。在
  • show_accuracy=True添加到fit()函数中,该函数将在每个历元输出模型的精度。这些信息可能比损失价值对你更有用。在
  • validation_split=0.2添加到fit()函数中。目前你只在一个训练集上训练,什么都没有验证。这是机器学习的禁区,因为你不能确定你的模型是否仅仅记住了数据集的正确答案(没有真正理解为什么这些答案是正确的)。在
  • 从奥巴马/罗姆尼改为民主党/共和党,并增加了以往选举的数据。对于神经网络来说,1200个例子是一个相当小的数据集。还可以添加一些有价值的信息,如失业率或人口密度。请注意,相当多的值(如人口数量)可能与提供州名称相似,因此,例如,您的网络可能会了解到德克萨斯的意思是Republican。在
  • 如果还没有这样做,请将所有值规格化为0到1的范围(从每个值中减去列的最小值,然后除以列的(max-min))。神经网络能更好地处理规范化数据。在
  • 尝试Adam和{},而不是SGD。有时候他们表现得更好。(见documentation about optimizers。)
  • 尝试Activation('relu')LeakyReLUPReLU和{}而不是{}。谭很少是最好的选择。(见advanced activation functions。)
  • 尝试增加/减少致密层的大小(例如从64到{})。还可以尝试添加/删除层。在
  • 尝试添加BatchNormalization层(在Activation层之前)。(见documentation。)
  • 尝试改变辍学率(例如从0.5改为0.25)。在

相关问题 更多 >