Keras模型无法学习和预测三门课中只有一门课

时间:2020-05-13 22:19:55

标签: tensorflow keras deep-learning

深度学习领域的新手,目前正在进行this竞赛,以预测建筑物的地震破坏。

我创建的模型开始于.56的精度,但对于我允许其运行的任何时期,其精度都保持不变。完成后,模型仅预测三个类之一(我将其热编码到具有三列的数据框中)。 更改层数,优化器,数据准备,退出不会改变任何事情。即使尝试使用神经网络的过度参数化来过度拟合我的模型,仍然会具有相同的准确性和非学习模型

我在做什么错?

这是我的代码:

model = keras.models.Sequential()
model.add(keras.layers.Dense(64, input_dim = 85, activation = "relu"))
keras.layers.Dropout(0.3)
model.add(keras.layers.Dense(128, activation = "relu"))
keras.layers.Dropout(0.3)
model.add(keras.layers.Dense(256, activation = "relu"))
keras.layers.Dropout(0.3)
model.add(keras.layers.Dense(512, activation = "relu"))
model.add(keras.layers.Dense(3, activation = "softmax"))

adam = keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)

model.compile(optimizer = adam,
              loss='categorical_crossentropy',
              metrics = ['accuracy'])

history = model.fit(traindata, trainlabels,
                    epochs = 5,
                    validation_split = 0.2,
                    verbose = 1,)



1 个答案:

答案 0 :(得分:0)

您的模型在视觉上没有任何问题,但是学习任何有用的功能可能太麻烦了。

  1. 尝试使用https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html

  2. 标准化输入
  3. 仅从2层和少量神经元开始。

  4. 增加batch_size并尝试学习速率安排。

  5. 观察validation_accuracy,当它开始过拟合时停止。

最后,对于3类分类,准确度56%比基线好,请记住这是一项竞争,因此该数据不是虚拟的操场数据,您可以期望首次尝试使用MLP即可获得90%的准确度。

最后,尝试使用tuner进行超参数优化。