본문으로 바로가기

[PyTorch] Linear Regression Model

category AI/PyTorch 2019. 10. 27. 11:33
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

 

 

[torch.nn & torch.nn.Module]

PyTorch에서는 nn 패키지가 동일한 목적으로 제공됩니다. nn 패키지는 신경망 계층(layer)들과 거의 동일한 Module 의 집합을 정의합니다. Module은 입력 Tensor를 받고 출력 Tensor를 계산하는 한편, 학습 가능한 매개변수를 갖는 Tensor 같은 내부 상태(internal state)를 갖습니다. nn 패키지는 또한 신경망을 학습시킬 때 주로 사용하는 유용한 손실 함수들도 정의하고 있습니다.

 

때때로 기존 모듈의 구성(sequence)보다 더 복잡한 모델을 구성해야 할 때가 있습니다; 이럴 때는 nn.Module 의 서브클래스로 새 모듈을 정의하고, 입력 Tensor를 받아 다른 모듈 또는 Tensor의 autograd 연산을 사용하여 출력 Tensor를 만드는 forward 를 정의합니다.

 

[torch.optim]

PyTorch의 optim 패키지는 최적화 알고리즘에 대한 아이디어를 추상화하고 일반적으로 사용하는 최적화 알고리즘의 구현체(implementation)를 제공합니다.

 

 

import torch

class LinearRegressionModel(torch.nn.Module):
    def __init__(self):
        super().__init__()
        self.linear = torch.nn.Linear(3,1)
        
    def forward(self, x):
        return self.linear(x)
    

x_train = torch.FloatTensor([[73, 80, 75], [93, 88, 93], [89,91,80], [96,98,100],[73,66,70]])
y_train = torch.FloatTensor([[152], [185], [180], [196], [142]])

model = LinearRegressionModel()

optimizer = torch.optim.SGD(model.parameters(), lr=1e-5)

epochs = 20

for epoch in range(epochs + 1):
    prediction = model(x_train)
    cost = torch.nn.functional.mse_loss(prediction, y_train)
    
    optimizer.zero_grad()
    cost.backward()
    optimizer.step()
    

    print('Epoch : {:4d}/{} hypothesis : {} Cost : {:.6f}'
          .format(epoch, epochs, prediction.squeeze().detach(), cost.item()))
    

 

 

 

 

출처 : https://tutorials.pytorch.kr/beginner/pytorch_with_examples.html#tensorflow-static-graph

출처 : https://youtu.be/1JT8KhvymmY

 

 

 

 

'AI > PyTorch' 카테고리의 다른 글

[PyTorch] MNIST with Dropout  (0) 2019.10.28
[PyTorch] MNIST with ReLU and Weight Initialization  (0) 2019.10.28
[PyTorch] MNIST Introduction  (0) 2019.10.28
[PyTorch] Logistic Regression & Softmax  (0) 2019.10.27
[PyTorch] Minibatch Gradient Descent  (0) 2019.10.27