Потери от линейно преобразованных выходных данных и достоверные данные для обучения - PullRequest
0 голосов
/ 03 августа 2020

У меня есть модель прогнозирования в pytorch, которая принимает входные данные и генерирует выходные данные в определенной системе координат c. В моем процессе я преобразовываю результат и основную истину в другую систему координат (2-мерный перенос и вращение). Теперь я могу рассчитать потери в обеих системах координат, которые имеют одинаковые значения (потери RMSE и NLL).

Имеет ли значение, какие потери я использую для тренировки, чтобы запустить loss.backward ()?

1 Ответ

0 голосов
/ 03 августа 2020

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 - цель. (Я имею в виду это ).

Это не то же самое, что вы получили бы после линейного преобразования вывода и цели.

...