Кросс-энтропийная реализация в Caffe

Глядя на исходный код в sigmoid_cross_entropy_loss_layer.cpp, который является исходным кодом для функции потери перекрестной энтропии в caffe, я заметил, что код для фактического значения ошибки

  for (int i = 0; i < count; ++i) {
loss -= input_data[i] * (target[i] - (input_data[i] >= 0)) -
log(1 + exp(input_data[i] - 2 * input_data[i] * (input_data[i] >= 0)));
}

которая, кажется, довольно отличается от функции потери CE в документации по реализации Caffe или C ++, которую я нашел здесь:

https://visualstudiomagazine.com/Articles/2014/04/01/Neural-Network-Cross-Entropy-Error.aspx?Page=2

или на самом деле определение функции потерь CE.

Это какое-то приближение? Сначала я подумал, что это расширение Тейлора из log⁡ (1 − x), но это совсем не работает.

1

Решение

потери, реализованные этим слоем, не просто перекрестная энтропия Слой реализует активацию сигмоида с последующей перекрестной потерей энтропии. Это обеспечивает более устойчивую численную реализацию потерь.

увидеть эта тема для дополнительной информации.
Также эта тема.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]