【发布时间】:2020-06-10 20:28:12
【问题描述】:
我正在使用 PyTorch 学习回归(Profit vs R&D)。我创建了以下脚本:
url =https://raw.githubusercontent.com/LakshmiPanguluri/Linear_Multiple_Regression/master/50_Startups.csv
starup = pd.read_csv(url)
profit = np.array(starup['Profit']).reshape(-1,1)
rd = np.array(starup['R&D Spend']).reshape(-1,1)
marketing = np.array(starup['Marketing Spend']).reshape(-1,1)
administration = np.array(starup['Administration']).reshape(-1,1)
profit_torch = torch.from_numpy(profit).float()
rd_torch = torch.from_numpy(rd).float().requires_grad_(True)
model = nn.Linear(1,1)
loss_function = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.010)
losses = []
iterations = 1000
for i in range(iterations):
pred = model(rd_torch)
loss = loss_function(pred, profit_torch)
losses.append(loss.data)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(loss)
plt.plot(range(iterations), losses)
tensor(nan, grad_fn=<MeanBackward0>)
我的问题是为什么它给了我一个带有 NaN 值的张量,以及为什么每次迭代中损失都在增长。
损失图是一条斜率为正的线:
【问题讨论】:
标签: python pytorch linear-regression nan gradient-descent