这两个代码段之间在数学上有什么区别?实际上,我想构建一个没有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)