import torch
import torch.nn as nn
import torch.nn.functional as F
#1
torch.nn.functional.cross_entropy(input, target, weight=None, size_average=None,
ignore_index=- 100, reduce=None, reduction='mean', label_smoothing=0.0)
#2
torch.nn.BCELoss(weight=None, size_average=None, reduce=None, reduction='mean')
#3
torch.nn.BCEWithLogitsLoss(weight=None, size_average=None, reduce=None, reduction='mean', pos_weight=None)
첫번째의 CrossEntropyLoss의 경우 클래스의 개수에 맞게 output 차원을 추출한다
ex) class가 4개일경우 출력값은 (batch_size,4)가 되어야한다.
두번째의 BinaryCrossEntropyLoss의 경우 이진분류이기 때문에 softmax가 따로 없으므로
Sigmoid를 통과 시킨 후 비교를해야한다
세번째의 BCEWithLogitLoss의 경우 CrossEntropy에 softmax가 내장되어있는 것 처럼
BCE에 Sigmoid가 추가된 모듈이다