pytorch 초급 코드 질문(linear regression)

조회수 416회

안녕하십니까, pytorch를 막 시작한 학생입니다.

선형 회귀를 시도하는 중이고, 일부러 class로 net model을 구현하는 연습중인데, neural net이 update되지 않는 문제를 해결할 수 없어 질문드립니다.

데이터는

![이미지][1]

입니다.

아래 코드에 대해 comment 부탁드립니다. 여러분의 깊은 지식을 공유해 주시길 바랍니다. 감사합니다.

import pandas as pd

import torch
from torch import nn

import matplotlib.pyplot as plt

class net(nn.Module):
    def __init__(self):
        super(net, self).__init__()
        self.f1=nn.Linear(1,10)
        self.f2=nn.Linear(10,1)
        self.optimizer=optim.Adam(self.parameters(),lr=0.01)
        self.criterion = nn.MSELoss()

        optimizer.zero_grad()

    def forward(self,state):
        m=nn.LeakyReLU(0.1)
        x=self.f1(state)
        x=m(x)
        x=self.f2(x)
        x=m(x)

        return x

    def train(self,state,y):
        self.prediction = model.forward(x)
        self.loss = criterion(input=prediction, target=y)
        loss.backward
        optimizer.step()

data = pd.read_csv('data_linear_regression.csv')
# Avoid copy data, just refer
x = torch.from_numpy(data['x'].values).unsqueeze(dim=1).float()
y = torch.from_numpy(data['y'].values).unsqueeze(dim=1).float()




plt.xlim(0, 11);    plt.ylim(0, 8)
plt.title('02_Linear_Regression_Model_Data')
plt.scatter(x, y)

plt.show()

model=net()

criterion = nn.MSELoss()

print(model.forward(x))

plt.scatter(x,y)
for i in range(1000):
    model.train(x,y)

    if i%100==0:

        print(model.forward(x))
        plt.plot(x,prediction.data.numpy())

plt.show()

torch.save(obj=model, f='02_Linear_Regression_Model.pt')

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)