Что касается пользовательских потерь в керасах, гиперах - PullRequest
0 голосов
/ 30 января 2019

Как я могу определить пользовательские функции потерь в Hyperas?

Я использую архитектуру с 4 слоями с 3 выходами.Для потери я хотел бы определить это как:

Loss

( (Output1 Error) / max[Output1_pred, Output1_true] ) +
( (Output2 Error) / max[Output2_pred, Output2_true] ) +
( (Output3 Error) / max[Output3_pred, Output3_true] )

Это тривиально, чтобы достигнуть?Как я могу индексировать y_pred и y_true в таком случае?

1 Ответ

0 голосов
/ 30 января 2019

Чтобы создать настраиваемую функцию потерь в кератах, выполните следующие действия. Создайте настраиваемую функцию потерь в кератах

Теперь, чтобы векторизовать функцию потерь, чтобы у вас не было очень медленной скорости,используйте векторизацию, чтобы сделать это, вы можете написать свою функцию потерь как:

loss = np.sum(np.divide(Output_Error,np.amax(np.hstack((Output_pred,Output_true)),axis=1)))

Теперь давайте разберем это

np.hstack((M1,M2)) складывает матрицы как [M1 |M2], которые оба являются векторами в вашем случае.

np.amax(M,axis = 1) создает вектор максимальных значений вдоль оси x, то есть для каждой строки.

np.divide(M1,M2) Выполняет поэлементное деление по матрицам, так что выбудет по-прежнему получать вектор.

np.sum(M) предоставляет скалярную сумму матрицы M.

Чтобы узнать больше о любой из этих функций, посетите https://docs.scipy.org/doc/numpy-1.15.1/reference/

Если выЕсли у вас есть вопросы, прокомментируйте их ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...