블로그 글 내용 정리
criterion = nn.MSELoss()
loss = criterion(outputs, batch_y)
loss = nn.MSELoss()(outputs, batch_y)
loss = nn.MSELoss(outputs. batch_y) # 잘못된 사용법
loss = F.mse_loss(outputs, batch_y)
소개하는 3가지 경우에서 와 ()는 모두 같은 shape을 가지고 있어야 함
def mse(y, y_pred):
return ((y-y_pred)**2).mean()
import torch
y = torch.FloatTensor([[1, 1],
[2, 2]])
y_pred = torch.FloatTensor([[0, 0],
[0, 0]])
print(mse(y, y_pred)) # tensor(2.5000)
import torch
import torch.nn.functional as F
y = torch.FloatTensor([[1, 1],
[2, 2]])
y_pred = torch.FloatTensor([[0, 0],
[0, 0]])
F.mse_loss(y, y_pred) # tensor(2.5000)
reduction 인자를 이용해 차원 연산에 대한 설정이 가능함reduction = 'mean'import torch
import torch.nn.functional as F
y = torch.FloatTensor([[1, 1],
[2, 2]])
y_pred = torch.FloatTensor([[0, 0],
[0, 0]])
print(F.mse_loss(y, y_pred, reduction = 'mean'))
print(F.mse_loss(y, y_pred, reduction = 'sum'))
print(F.mse_loss(y, y_pred, reduction = 'none'))
tensor(2.5000)
tensor(10.)
tensor([[1., 1.],
[4., 4.]])
torch.nn.MSELoss(size_average=None, reduce=None, reduction='mean') 클래스import torch
import torch.nn as nn
y = torch.FloatTensor([[1, 1],
[2, 2]])
y_pred = torch.FloatTensor([[0, 0],
[0, 0]])
criterion = nn.MSELoss()
criterion(y, y_pred) # tensor(2.5000)