일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- shrinkmatch paper
- Entropy Minimization
- SSL
- dcgan
- ConMatch
- conjugate pseudo label paper
- simclrv2
- adamatch paper
- GAN
- cifar100-c
- Pix2Pix
- 최린컴퓨터구조
- WGAN
- CGAN
- dann paper
- 백준 알고리즘
- shrinkmatch
- tent paper
- CoMatch
- semi supervised learnin 가정
- CycleGAN
- 컴퓨터구조
- UnderstandingDeepLearning
- mocov3
- BYOL
- 딥러닝손실함수
- Meta Pseudo Labels
- mme paper
- Pseudo Label
- remixmatch paper
Archives
- Today
- Total
Hello Computer Vision
Cross Entropy 초기 loss알아보기 본문
사실 딥러닝 모델을 훈련시키면 그냥 loss가 떨어지면 떨어지는 갑다~ 하고 그냥 지켜보고 거의 무조건적으로 수렴할 생각으로 지켜본다. 그러나 최근에 와서 느낀건데 수렴을 안하는 경우도 상당히 많으며 이를 위해서는 초기 loss가 어느정도 되는지도 중요하다. 그래야 1epoch후 얼마나 줄어들었고를 어느정도 알 수 있기 때문이다.
CrossEntropy를 사용할 경우 10개의 클래스를 시험해본다면 평균 정답률은 10%정도일 것이다. 그러면 초기 loss는 어느 정도 될까?
dataset = datasets.CIFAR10(root = './sample_data', train = True, download = True, transform = transforms.ToTensor())
dataloader = DataLoader(dataset, batch_size = 32, shuffle = True)
loss_fn = nn.CrossEntropyLoss(reduction = 'mean')
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(32* 32 * 3, 128)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(128, 100)
self.fc3 = nn.Linear(100, 10)
def forward(self, x):
x = x.view(-1, 32 * 32 * 3)
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
x = self.relu(x)
x = self.fc3(x)
return x
net = Net()
running_loss = 0
for x, y in dataloader:
output = net(x)
loss = loss_fn(output, y)
running_loss += loss
print(running_loss / len(dataloader))
tensor(2.3045, grad_fn=<DivBackward0>)
초기 loss 는 2.3인걸 알 수 있다. 주의할 점은 여기서 crossentropy의 기본 세팅은 mean으로되어있다. sum으로 한다면 배치 안 데이터 모든 loss가 합쳐지고 여기서배치사이즈는 32이기 때문에 32 * 2.3인 약 72정도가 나올 것이다. 즉 우리가 주로하는 running loss를 epoch마다 0으로 설정하고 배치개수만큼 나눠주고 이를 출력해 나오는 loss는 데이터 1개 평균 loss인것을 알 수 있다. 똑같은 메커니즘으로 같은 개수의 클래스를 가지고 있는MNIST도 초기 loss는 2.3이 나온다.
그렇다면 CIFAR 100의 초기 loss는 어떻게 나올까?
실험해본 결과 4.6. 딱 2배로 나온다. 간단한 실험이고 어렵지 않으니 재미로 한번 해보는 것도 좋을 거 같다.
'딥러닝 > 손실함수' 카테고리의 다른 글
Gaussian distribution과 Mean Squared Error와의 관계 (1) | 2023.09.30 |
---|---|
Focal Loss 공부해보기 (0) | 2023.07.09 |
Softmax 활성화함수 알아보기 (0) | 2023.01.03 |
딥러닝 손실함수 알아보기(MSE, BCE, CE) (0) | 2022.11.16 |