tensorflow - Keras 模型不学习和预测三类中的一类
问题描述
深度学习领域的新手,目前正在参与这场预测建筑物地震破坏的竞赛。
我创建的模型以 0.56 的精度开始,但在我让它运行的任意数量的 epoch 中都保持在这个精度。完成后,该模型仅预测三个类中的一个(我将其热编码为具有三列的数据帧)。改变层数、优化器、数据准备、dropout不会改变任何东西。即使试图通过神经网络的过度参数化来过度拟合我的模型,仍然具有相同的准确性和非学习模型。
我究竟做错了什么?
这是我的代码:
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,)
解决方案
您的模型在视觉上没有任何问题,但是学习任何有用的功能可能太繁重了。
尝试使用https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html标准化您的输入
仅从 2 层和少量神经元开始。
增加
batch_size
并尝试 learning_rate 调度。观察validation_accuracy,当它开始过拟合时停止。
最后,对于 3 类分类,56% 的准确率优于基线,记住这是一场竞赛,所以数据不是虚拟的游乐场数据,您可以期望在第一次尝试中获得 90% 的准确率。
最后,尝试使用 进行超参数优化tuner
。
推荐阅读
- amazon-web-services - aws-sdk go,功能有效,但出现内部服务器错误
- javascript - AJAX 发送发布请求 REST API(显示临时标头)
- javascript - 有什么方法可以结合使用 JSPDF 和 html2canvas 在移动浏览器上加快 PDF 下载速度?
- java - 错误:带有参数的“$1”postgresql 查询处或附近的语法错误
- node.js - 如何在中间件中获取响应体?
- azure-data-lake - 获取现有文件并将数据附加到现有文件中——U-SQL
- audio - 使用ffmpeg提取视频文件的英文音频
- visual-studio-code - 如何在 VS 代码的活动栏中创建自己的插件?
- json - 如何让自托管 wcf 接受 REST/JSON?
- python - 无法使用在 GPU 实例上训练的深度学习 RNN 模型来推断仅 CPU 实例