python - 神经网络损失突然下降
问题描述
我正在练习预测https://www.kaggle.com/c/house-prices-advanced-regression-techniques/overview的房价。
在某个训练点,我正在经历一个非常突然的损失下降。该图如下所示:
起初这让我觉得学习率太低了,但是当我在下降后放大时:
似乎它太高了(并且也有过度拟合?)。
我选择的NN是(使用 PyTorch)
net = nn.Sequential(
nn.Linear(331, 96),
nn.ReLU(),
nn.Linear(96, 8),
nn.ReLU(),
nn.Linear(8, 1)
)
谁能向我解释发生了什么?它是否与我使用的自定义损失函数有关(我尝试过某种“相对分数损失”)?
def my_loss(y_hat, y):
frac = (y_hat - y) / y
return torch.abs(frac)
解决方案
如果您正在寻找此问题的最终解决方案:
您应该进行数据预处理。
你肯定会看到它的数据是不平衡的,并且在某处积累。
如果您的数据有异常值,您可能需要删除您拥有的大部分数据。
以下是数据预处理的提示:
https://www.geeksforgeeks.org/data-preprocessing-in-data-mining/
推荐阅读
- unity3d - 在 Admob 中完成激励视频广告后,文本未更改
- python - 从插入查询中获取数据?
- wpf - 在 WPF 的 ListView 中将 ComboBox 放在一个特殊的行中
- mysql - 如何通过 bash 创建新的 mysql 数据库/模式?
- javascript - 如何以编程方式访问 vuetify 元素的属性?
- amazon-web-services - 扫描 DynamoDB 并过滤具有空数组值的项目
- javascript - 使用 JS 浏览网站文件服务器端?
- java - 我可以将 JSON-LD 转换为 Java 对象吗?
- azure-ad-b2c - 在 Google 注册过程中在 AAD B2C 中编写自定义属性
- android - 订阅聊天室