Рассчитайте растерянность с Sklearn и NumPy вместо Keras - PullRequest
0 голосов
/ 04 января 2019

В чем разница (математически) между этими двумя фрагментами кода? На самом деле я хочу построить функцию недоумения без вызовов функций Keras / Tensorflow. В то время как версия Keras / tf дает хорошие результаты, версия numpy / sklearn не дает. Для того же входа Keras / tf выводит значение около 300 (что реалистично), но версия numpy / sklearn близка к 1.

Существует еще немного кода для предварительной и последующей обработки, но с математической точки зрения это должно быть важной частью. Я прочитал http://wiki.fast.ai/index.php/Log_Loss#Log_Loss_vs_Cross-Entropy, что log_loss является эквивалентом перекрестной энтропии. Таким образом, при одинаковом входе эти фрагменты должны вычислять один и тот же результат.
1.

xentropy = K.sparse_categorical_crossentropy(tf.keras.backend.cast(all_labels[i], dtype='float32'), tf.keras.backend.cast(all_predictions[i], dtype='float32'))
perplexity.append(K.eval(K.pow(2.0, xentropy)))

2

perplexity += np.power(sklearn.metrics.log_loss(one_hot_label[i], all_predictions[i]), 2.0)
...