TL; DR:
Имеет ли значение, какие потери я использую для обучения для запуска функции loss.backward ()?
Нет для MSE, Да для NLL.
Предполагая, что вектор истинности равен x
, а выходной вектор равен y
,
Старый MSE = (x-y).T.dot(x-y)
После преобразования вектор истинности земли становится A.dot(x)
и вывод становится A.dot(y)
.
New MSE = (x-y).T.dot(M).dot(x-y)
, где M=A.T.dot(A)
, где A
- матрица преобразования.
Благодаря свойствам линейного преобразования, мы также have A.T.dot(A)=I
Итак, мы видим, что M
всегда будет единичной матрицей, и, следовательно, MSE останется неизменной.
Теперь потеря NLL, которая обычно применяется после nn.LogSoftmax
просто выполняет Y[x].mean()
, где Y - результат после nn.LogSoftmax
, а x - цель. (Я имею в виду это ).
Это не то же самое, что вы получили бы после линейного преобразования вывода и цели.