Я использую потерю игральных костей для своей реализации полностью сверточной сети (FCN), которая включает в себя гиперсети. Модель имеет два входа и один выход, который является двоичной картой сегментации. Модель обновляет вес, но потери постоянны.
Это даже не переобучение только на трех учебных примерах
Я также использовал другие функции потерь, такие как игральные кости + потеря бинарной кроссентропии, потеря жакарда и потеря MSE, но потеря почти постоянна.
Я также попробовал почти все функции активации, такие как ReLU, LeakyReLU, Tanh. Кроме того, я должен использовать сигмоид на выходе, потому что мне нужно, чтобы мои выходы были в диапазоне [0,1]
Скорость обучения составляет 0,01. Кроме того, я пробовал разные скорости обучения, такие как 0,0001, 0,001, 0,1. И независимо от того, с какой потери начинается тренировка, она всегда достигает этой величины
Здесь показаны градиенты для трех обучающих примеров. И общая потеря
tensor(0.0010, device='cuda:0')
tensor(0.1377, device='cuda:0')
tensor(0.1582, device='cuda:0')
Epoch 9, Overall loss = 0.9604763123724196, mIOU=0.019766070265581623
tensor(0.0014, device='cuda:0')
tensor(0.0898, device='cuda:0')
tensor(0.0455, device='cuda:0')
Epoch 10, Overall loss = 0.9616242945194244, mIOU=0.01919178702228237
tensor(0.0886, device='cuda:0')
tensor(0.2561, device='cuda:0')
tensor(0.0108, device='cuda:0')
Epoch 11, Overall loss = 0.960331304506822, mIOU=0.01983801422510155
Я ожидаю, что потери сойдутся в несколько эпох.
Что мне делать?