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')
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
댓글 입력