python - 我的神经网络是过拟合还是欠拟合?
问题描述
我正在尝试构建一个多类神经网络,从我创建的数据集中尽可能准确地预测石头或剪刀。
当我处理各种参数时,训练集的损失/准确性似乎差异很大。然而,经过大量的试验和错误,这似乎是最好的模型版本。我查看了与我有关的其他问题,我认为这些图表似乎是合适的,但由于我是机器学习的新手,我想知道该模型是否存在一些问题(过度拟合/欠拟合),而我只是没有看到。
我理解过度拟合是指随着时代的增加,准确率上升而损失下降的情况,但我仍然不确定图表上是否有明显的东西超出了我的理解。
这就是我目前编译和拟合模型的方式。
model.compile(loss=['categorical_crossentropy'], optimizer=Adam(.01), metrics=['accuracy'])
history = model.fit(X_train,y_train, epochs=30, verbose=True, validation_split=.33, batch_size=3)
编辑:
该模型应根据先前确定的系数与 9 个特征相乘来预测石头纸或剪刀。5 个特征是随机创建的系数,代表 5 大人格维度的连续值,范围从 -2 到 2。
其他四个是:
- 如果他们赢了或输了。
2, 3, 4) 如果他们赢了,选择石头、纸或剪刀:这三者中的每一个都与一个系数相乘,该系数作为他们获胜的偏见。
选择石头或剪刀的概率有一个内置的激活,它会偏向各自的选择。Scissors 的偏差最大。
有 999 次试验(由于随机机会而排除了第一次),并且 100 次试验值中的每一个,对于 Big 5 Personality 维度,都保持不变。只有代表赢/输和赢选择石头、纸或剪刀的列会逐次更改。
解决方案
从损失和准确率曲线来看,您似乎已经非常精确地将模型拟合到训练数据(过度拟合的迹象)。如果您担心过拟合问题,那么您可以采用一些正则化方法,例如 L1/L2 正则化器(权重衰减)、Dropout、Batch Norm 等。它们将有助于模型很好地泛化到看不见的数据。此外,类似“提前停止”的方法也适用于这种场景。希望它能帮助您减轻过度拟合的问题。
推荐阅读
- php - 如何知道 APCu 缓存何时因为已满而被清除?
- c++ - C ++中的memset函数无法正常工作
- android - 如何在 Cordova 中下载大文件?
- c# - 如何在 C# 中获取具有未知连接信息的 SQL 文件信息?
- javascript - javascript中的闰秒在哪里?
- python - 如何在python中更改vlc媒体播放器的视频纵横比
- laravel-5 - 非静态方法 Maatwebsite\Excel\Readers\LaravelExcelReader::all() 不应被静态调用,假设 $this 来自不兼容的上下文
- javascript - 检测页面是在三星股票浏览器中查看还是作为独立的 Web 应用程序查看
- angular - 错误类型错误:无法将属性“googleUri”设置为空?使用接口进行 2 路绑定?
- json - 如何使用 wordpress rest api 从 wordpress 网站查询帖子类型,如 faq