Ответ на вопрос с собеседования 💼



❶ 17 строка: не поставили параметр shuffle в True. Train loader нужно шафлить



❷ 14 и 20: использовали Softmax + CrossEntropyLoss. Так делать не нужно, ведь CrossEntropyLoss уже содержит в себе Softmax. Поэтому мы убираем Softmax из сетки. Можно почитать наш пост про лоссы, чтобы точно со всем разобраться 🙂



❸ 32-35: не использовали torch.no_grad, а значит, отслеживали градиенты, что нам нужно только при обучении



❹ 32-35: не перевели модель в eval() режим при подсчете метрик, поэтому неправильно посчитался BatchNorm1d. Кстати, у нас есть об этом пост, а еще большой пост про виды нормализаций



❺ 15 и 25-30: модель лежит на gpu, а датасет на cpu. Лучше всегда выносить параметр device, чтобы модель и данные всегда лежали на одном устройстве



❻ 35 строчка: забыли сделать detach().cpu(). Из-за этого потечет память



Также в комментариях заметили, что переменные epoch и features не определены, а epoch затирает себя в цикле — это было не по плану, но вы молодцы 🙂



Никто не написал ответ, который содержит в себе все наши пункты, поэтому первый победитель был выбран по меньшему числу упущенных пунктов. А также мы не смогли выбрать одного призера зрительских симпатий внутри команды, поэтому дарим 3️⃣ пиццы!



Итак, наши победители, к которым отправляются пиццы:

🍕 @KalabiYauu — первый ответ со всего одним упущенным пунктом

🍕 @zen0no — приз зрительских симпатий, который совпал с нашим мнением и мнением подписчиков (судя по количеству реакций)

🍕 @Xallt — приз зрительских симпатий от нашей команды