我在预测自行车的练习赛中,定义了这样的一个神经网络,但是我预测的结果都是一样的,请问我该怎么改进!谢谢指导!
net = torch.nn.Sequential(
torch.nn.Linear(7,100), # 输入层到隐藏层
torch.nn.Sigmoid(),
torch.nn.Linear(100,1), # 隐藏层到输出层
)
optimizer = torch.optim.Adam(net.parameters(),lr=0.02)
loss_func = torch.nn.MSELoss()
下面是训练过程!
for i in range(60):
prediction = net(train)
loss = loss_func(prediction,y_train)
# 梯度归零
optimizer.zero_grad()
# 计算梯度
loss.backward()
# 更新结点
optimizer.step()
if i % 20 == 0:
print(loss)
本应该输出的结果:
tensor([15., 48., 21., 11., 39., 12., 11., 67., 77., 2.])
Out
tensor([[51.4017],
[49.5164],
[48.2066],
[49.3453],
[49.4258],
[48.9165],
[48.8166],
[49.5939],
[50.7129],
[49.8309]], grad_fn=
1个回答
我感觉你的预测值就是平均值,没有去进行收敛的。
问题可能是
1)你的输入值没有进行标准化处理
2)你的学习率设置不当,你可以减小试试
SofaSofa数据科学社区DS面试题库 DS面经
谢谢了,我发现神经网络在处理这种问题时,效果没有机器学习的回归模型的好。
-
liuyang
2019-07-25 17:12