PyTorch 기초 - 손실함수

ingeol·2023년 2월 14일
0

pytorch

목록 보기
2/5

손실함수

  • 신경망 내부 가중치 파라미터 조절을 통해 근사치 계산가능하게 도와준다.
  • 손실 값은 낮을수록 좋다.
  • 가중치 변화에 손실 값이 변한다.
  • MSE의 경우 예측값과 실제(정답)갑의 차이를 제곱한 평균을낸다.

MSE 수식을 코드로 옮기기

import torch
import torch.nn as nn

def mse(x_hat,x):
    y = ((x-x_hat)**2).mean()

    return y
x = torch.FloatTensor([[1,1],[2,2]])
x_hat = torch.FloatTensor([[0,0],[0,0]])
print(mse(x_hat, x))

torch.nn.functional

reduction 인자를 통해 차원 감소 연산에 대해 설정 할 수 있다.

reference : https://pytorch.org/docs/stable/nn.functional.html

import torch.nn.functional as F
print(F.mse_loss(x_hat, x))
# tensor(2.5000)
print(F.mse_loss(x_hat, x, reduction = 'sum')) # 덧셈까지 진행된다.
# tensor(10.)

print(F.mse_loss(x_hat, x, reduction = 'none')) # tensor그대로 나오게 함.
# tensor([[1., 1.],
#         [4., 4.]])

torch.nn

위의 방법과 차이는 없지만, nn.Module 하위 클래스 내부에 선언하기 때문에 계층 하나처럼 취급 가능하다.

import torch.nn as nn
mse_loss = nn.MSELoss()
mse_loss(x_hat, x)
#tensor(2.5000)

0개의 댓글