편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2021.10.18

    pytorch 초급 코드 질문(linear regression)


    안녕하십니까, 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')
    
  • 프로필 알 수 없는 사용자님의 편집
    날짜2021.10.18

    pytorch 초급 코드 질문(linear regression)


    안녕하십니까, 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')