728x90
반응형
SMALL
선형 회귀 꿀팁!! 파이토치리듬 🚀
-> 파이토치로 딥러닝 모델을 만들 때 꼭 지켜야 할 '3단계 핵심 흐름'
(선형 회귀 뿐만아니라, 복잡한딥러닝 모델에도 모두 적용된다.)
<파이토치 리듬 (공식용어x)>
1) 모델에서 쓸 클래스와 변수 설정하기 - (설계)
-> 데이터가 입력되었을 때, 어떤 수학적 연산을 거쳐 출력할지 결정
2) 파이토치 api를 사용하여 loss와 optimizer 구성하기 - (목표 설정)
-> 모델이 얼마나 잘 예측하는지 평가하고 잘못된 부분을 어떻게 수정할지 결정하는 도구 필요!
-> 목표점수를 정하고, 목표에 달성하기 위해 그 도구를 준비하는 단계
-> Loss function: 예측값과 실제값의 차이를 측정하고 그 오차를 최소화하기 위함
-> Optimizer: loss를 줄이기 위해 가중치과 편향을 조정 (ex 경사하강법 SGD)
3) training cycle (forward, backward, update) - (학습 반복)
https://colab.research.google.com/drive/1SnVpPpvXDhiTakux8fYtDgydOJwj2Bu2?usp=sharing
Linear Regression
Colab notebook
colab.research.google.com
# data : 데이터 정의 - 입력과 출력 y=2x
x_data = Variable(torch.Tensor([[1.0],[2.0],[3.0]]))
y_data = Variable(torch.Tensor([[2.0],[4.0],[6.0]]))
# 1) 모델에서 쓸 클래스와 변수 설정하기
'''
torch.nn.Module 상속 -> 신경망 모델 클래스 정의
Linear(1,1) -> 입출력 1씩 선형레이어 형성
'''
class Model(torch.nn.Module): # 초기화
def __init__(self):
super(Model,self).__init__()
self.linear = torch.nn.Linear(1,1) # one in and one out
def forward(self, x): #예측값 계산
y_pred = self.linear(x)
return y_pred
#our model
model = Model()
# 2) loss와 optimizer 구성하기
criterion = torch.nn.MSELoss(size_average = False) # 평균 제곱 오차 손실 함수
optimizer = torch.optim.SGD(model.parameters(), lr = 0.01) # 확률적 경사하강법 (SGD) / 학습률 0.01 / 모델의 가중치와 편향 최적화
# 3) Training : forward, loss, backward, step
#training loop
for epoch in range(500):
#Forward pass : compute predicted y by passing x to the model : 1) 예측값 계산
y_pred = model(x_data)
#compute and print loss : 2) loss 계산
loss = criterion(y_pred, y_data)
print(epoch, loss.item())
#zero gradients, perform a backward pass, and update the weights : 역전파로 기울기 계산
optimizer.zero_grad() # 이전 기울기 초기화
loss.backward() # 기울기 계산
optimizer.step() #경사하강법으로 가중치 업데이트
# After training
hour_var = Variable(torch.Tensor([[4.0]])) # 입력값
print("predict (after training)", 4, model.forward(hour_var).data[0][0]) #예측값 계산
728x90
반응형
LIST
'💻 본업(컴공생) 이야기 > 파이토치 공부 이야기' 카테고리의 다른 글
[파이토치 (PyTorch)] 7. Wide and Deep (3) | 2025.01.08 |
---|---|
[파이토치 (PyTorch)] 6. Logistic Regression (로지스틱 회귀) (1) | 2025.01.08 |
[파이토치 (PyTorch)] 4. Back-propagation (역전파) (0) | 2025.01.07 |
[파이토치 (PyTorch)] 3. Gradient Descent (경사 하강법) (0) | 2025.01.07 |
[파이토치 (PyTorch) ] 2. Linear Model (Linear regression : 선형 회귀) (1) | 2025.01.07 |