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))
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.]])
위의 방법과 차이는 없지만, nn.Module 하위 클래스 내부에 선언하기 때문에 계층 하나처럼 취급 가능하다.
import torch.nn as nn
mse_loss = nn.MSELoss()
mse_loss(x_hat, x)
#tensor(2.5000)