Open foivospar opened 4 years ago
Αν δεν κάνω λάθος η BCEWithLogitsLoss περιμένει τα targets One hot encoded και τα predictions ως logits.
Με λίγα λόγια τα predictions τα δίνεις σωστά σαν την έξοδο του νευρωνικού (batch, num_classes) και τα targets πρεπει να τα μετασχηματίσεις σε (batch, num_classes). Πχ το
y = [0, 1, 2, 0, 2, 1]
γινεται
y_onehot = [
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
[1, 0, 0],
[0, 0, 1],
[0, 1, 0]
]
Δες και το documentation του loss και την torch.nn.functional.one_hot
Ωραία, δούλεψε, ευχαριστώ πολύ.
Στην train_dataset(), για τον υπολογισμό του loss (π.χ. με loss_function την BCEWithLogitsLoss), μου βγάζει ValueError, ότι πρέπει το input και το target να έχουν ίδιο size. Το input που του δίνω είναι η έξοδος του νευρωνικού, οπότε έχει size (batch_size, n_classes), ενώ το target είναι ένα 1D tensor μήκους batch_size. Τι πρέπει να δώσω ως input ή/και target για να έχουν ίδιο size ;