【问题标题】:Linear Regression with Pytorch : constant loss使用 Pytorch 进行线性回归:恒定损失
【发布时间】:2021-06-17 19:58:13
【问题描述】:

我正在研究 Pytorch 的线性回归问题(y=A*x,其中 A 的尺寸为 2x2)。我写了以下代码。我不知道为什么损失没有改变......有人可以帮助我吗?

谢谢,

托马斯

import torch
import numpy as np
from scipy.integrate import odeint
from matplotlib import pyplot as plt
from torch.autograd import Variable
def EDP(X,t):
    X_0=-2*X[0]
    X_1=-2*X[1]
    grad=np.array([X_0,X_1])
    return grad
T=np.arange(0,10,0.1)
X_train=odeint(EDP,[10,20],T)

Y_train=np.zeros_like(X_train)
for i in range(Y_train.shape[0]):
    Y_train[i,:]=np.dot(np.array([[2,0],[0,2]]),X_train[i,:])
print(X_train,Y_train)

X_train=torch.Tensor(X_train)
torch.transpose(X_train,0,1)
Y_train=torch.Tensor(Y_train)
print(X_train.shape)
import torch.nn as nn
class LinearRegression(torch.nn.Module): 
    
    def __init__(self):
        super(LinearRegression, self).__init__() 
        self.linear = torch.nn.Linear(2,2,bias = False) # bias is default True

    def forward(self, x):
        y_pred = self.linear(x)
        return y_pred
criterion = torch.nn.MSELoss()
optimizer = torch.optim.SGD(our_model.parameters(), lr = 0.0001) 
our_model = LinearRegression()
x_train = X_train
y_train = Y_train
#x_train.requires_grad=True
print(x_train.shape)
print(y_train.shape)
ntrain=10

for t in range(ntrain):
    
    y_pred=our_model(x_train)
    loss=criterion(y_train,y_pred)
    loss.backward()
    optimizer.step()
    optimizer.zero_grad()
    print(t,loss)
print(our_model.linear.weight)

【问题讨论】:

  • 我正在研究 Pytorch 的线性回归问题,所以下次请不要添加不相关的标签,例如tensorflow

标签: python tensorflow pytorch linear-regression loss


【解决方案1】:

在我的笔记本电脑上它工作...
由于您仅在 10 epochs ... 上运行它并使用 lr = 0.0001 ,因此您不会在 10 epochs 上看到它。

我这样做了optimizer = torch.optim.SGD(our_model.parameters(), lr = 0.01)(增加了lr),实际上只用了 10 个 epoch 就减少了损失

【讨论】:

    猜你喜欢
    • 2021-06-21
    • 2019-01-06
    • 2022-01-21
    • 2020-11-01
    • 2017-09-19
    • 2020-05-04
    • 2017-10-14
    • 2021-08-02
    • 2020-11-25
    相关资源
    最近更新 更多