#pytorch #cross-entropy
Вопрос:
Я хочу распечатать потерю проверки модели в каждую эпоху, как правильно получить и распечатать потерю проверки?
Это похоже на это:
criterion = nn.CrossEntropyLoss(reduction='mean')
for x, y in validation_loader:
optimizer.zero_grad()
out = model(x)
loss = criterion(out, y)
loss.backward()
optimizer.step()
losses = loss
display_loss = losses/len(validation_loader)
print(display_loss)
или вот так
criterion = nn.CrossEntropyLoss(reduction='mean')
for x, y in validation_loader:
optimizer.zero_grad()
out = model(x)
loss = criterion(out, y)
loss.backward()
optimizer.step()
losses = loss
display_loss = losses/len(validation_loader.dataset)
print(display_loss)
или что-то еще? Спасибо.
Комментарии:
1. никогда и НИКОГДА НЕ создавайте резервную копию, используя данные проверки/тестирования!!!!!
Ответ №1:
Ни при каких обстоятельствах вы не должны обучать свою модель (т. е. звонить loss.backward()
optimizer.step()
), используя данные проверки / тестирования!!!
Если вы хотите проверить свою модель:
model.eval() # handle drop-out/batch norm layers
loss = 0
with torch.no_grad():
for x,y in validation_loader:
out = model(x) # only forward pass - NO gradients!!
loss = criterion(out, y)
# total loss - divide by number of batches
val_loss = loss / len(validation_loader)
Обратите внимание, что » как optimizer
» не имеет ничего общего с оценкой модели в наборе проверки.
Вы не изменяете модель в соответствии с данными проверки — только проверяете ее.
Комментарии:
1. Ах, извините, я просто учусь глубокому обучению, и спасибо вам.
2. @rubiks — главное здесь то, что вы понимаете, ПОЧЕМУ вы не должны создавать резервные копии с использованием данных проверки
3. Есть небольшая ошибка 🙂 Это должно быть потеря = критерий(out, y)