728x90
import torch
import torch.nn as nn
import torch.nn.init as init
import torch.optim as optim
num_data = 1000
num_epoch = 10000
noise = init.normal_(torch.FloatTensor(num_data, 1), std=1)
x = init.uniform_(torch.Tensor(num_data, 1), -15, 15)
y = (x**2) +3
y_noise = y + noise
# Sequential 함수 안에 작성된 순서대로 데이터 연산 진행
# 은닉층은 4개, activation은 ReLU 사용
model = nn.Sequential(
nn.Linear(1,6),
nn.ReLU(),
nn.Linear(6,10),
nn.ReLU(),
nn.Linear(10,6),
nn.ReLU(),
nn.Linear(6,1),
)
loss_func = nn.L1Loss()
optimizer = optim.SGD(model.parameters(), lr=0.002)
loss_array = []
for i in range(num_epoch):
# gradient를 누적하지 않기 위해 매 epoch마다 0으로 초기화
optimizer.zero_grad()
output = model(x)
loss = loss_func(output, y_noise)
# gradient 계산
loss.backward()
# 파라미터 업데이트
optimizer.step()
loss_array.append(loss.item())
# loss 시각화
import matplotlib.pyplot as plt
plt.plot(loss_array)
plt.xlabel("Epoch")
plt.ylabel("Loss")
plt.title("Training Loss Over Epochs")
plt.show()
728x90
'AI' 카테고리의 다른 글
[pytorch] 순환신경망 (Recurrent Neural Network) 예제 코드 (0) | 2024.11.21 |
---|---|
[pytorch] 합성곱 신경망 (Convolution Neural Network) 예제 코드 (0) | 2024.11.20 |
[pytorch] 선형 회귀 (Linear Regression) 예제 코드 (0) | 2024.11.19 |
seq2seq (시퀀스 to 시퀀스) (0) | 2024.09.12 |
RNN (Recurrent Neural Network) (0) | 2024.09.12 |