728x90
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.init as init
num_data = 1000
num_epoch = 500
x = init.uniform(torch.Tensor(num_data, 1), -10, 10)
noise = init.normal(torch.Tensor(num_data, 1), std=1)
y = 2*x+3
y_noise = 2*(x+noise)+3
model = nn.Linear(1,1)
# Loss함수로 L1 Loss
loss_func = nn.L1Loss()
# Optimizer로 Stochastic Gradient Descent
optimizer = optim.SGD(model.parameters(), lr=0.01)
label = y_noise
# model 학습
for i in range(num_epoch):
# gradient를 누적하지 않도록 zero_grad 를 통해 매번 0으로 초기화
optimizer.zero_grad()
output = model(x)
loss = loss_func(output, label)
# gradient 계산
loss.backward()
# 파라미터 업데이트
optimizer.step()
if i%10 == 0:
print(loss.data)
# 학습을 통해 결정된 weight와 bias 출력
param_list = list(model.parameters())
print(param_list[0].item(), param_list[1].item())
728x90
'AI' 카테고리의 다른 글
[pytorch] 합성곱 신경망 (Convolution Neural Network) 예제 코드 (0) | 2024.11.20 |
---|---|
[pytorch] 심층신경망 (Deep Neural Network) 예제 코드 (0) | 2024.11.19 |
seq2seq (시퀀스 to 시퀀스) (0) | 2024.09.12 |
RNN (Recurrent Neural Network) (0) | 2024.09.12 |
VGGnet (0) | 2024.09.12 |