Я тренирую FFNN для классификации и удивляюсь, почему моя потеря при проверке всегда кажется низкой по сравнению с потерей при обучении, так как точность также хуже для проверки, чем при обучении.
Я нашел несколько похожих вопросов, которые привели к тому, что по сути можно добиться большей производительности в наборе данных проверки, чем в обучающем наборе, но не в сценарии с меньшими потерями И более низкой точностью.
![enter image description here](https://i.stack.imgur.com/qA4sA.png)
вот код, который я использую для тренировки моего NN-патрона, включая расчет потерь:
optimizer = optim.Adam(model_pyt.parameters(), lr=learning_rate, betas=(0.9,0.999))
criterion = nn.CrossEntropyLoss()
for epoch in range(epochs):
start_time = time.time()
train_running_loss = 0
train_acc = 0
with torch.set_grad_enabled(True):
for i, data_pack in enumerate(training_generator):
x_data, y_data = data_pack
optimizer.zero_grad()
outputs = model_pyt(x_data)
loss = criterion(outputs, y_data)
loss.backward()
optimizer.step()
train_running_loss += loss.detach().item()
train_acc += get_accuracy(outputs, y_data, batch_size)
test_labels = torch.tensor(labels_test).long()
test_inputs = torch.tensor(np.array(data_bal_test)).float()
test_outputs = model_pyt(test_inputs)
test_loss = criterion(test_outputs, test_labels).detach().item()
test_acc = get_accuracy(test_outputs, test_labels, len(test_labels))
print('Epoch: %d | Loss: %.4f | Acc %.4f | Test-Loss: %.4f | Test-Acc %.4f | Time Elapsed: %s'
%(epoch+1, train_running_loss/(i+1), train_acc/(i+1), loss, test_acc, time_since(start_time)))
print('=====================================================================================================')