gpt4 book ai didi

python - 在 TensorFlow 中计算交叉熵

转载 作者:太空狗 更新时间:2023-10-29 20:33:26 24 4
gpt4 key购买 nike

我很难计算 tensorflow 中的交叉熵。特别是,我正在使用以下功能:

tf.nn.softmax_cross_entropy_with_logits()

使用看似简单的代码,我只能让它返回一个零

import tensorflow as tf
import numpy as np

sess = tf.InteractiveSession()

a = tf.placeholder(tf.float32, shape =[None, 1])
b = tf.placeholder(tf.float32, shape = [None, 1])
sess.run(tf.global_variables_initializer())
c = tf.nn.softmax_cross_entropy_with_logits(
logits=b, labels=a
).eval(feed_dict={b:np.array([[0.45]]), a:np.array([[0.2]])})
print c

返回

0

我对交叉熵的理解是这样的:

H(p,q) = p(x)*log(q(x))

其中 p(x) 是事件 x 的真实概率,q(x) 是事件 x 的预测概率。

如果输入 p(x) 和 q(x) 的任意两个数字,则

0<p(x)<1 AND 0<q(x)<1

应该有一个非零交叉熵。我期望我错误地使用了 tensorflow。在此先感谢您的帮助。

最佳答案

除了 Don 的回答 (+1),this answer written by mrry您可能会感兴趣,因为它给出了在 TensorFlow 中计算交叉熵的公式:

An alternative way to write:

xent = tf.nn.softmax_cross_entropy_with_logits(logits, labels)

...would be:

softmax = tf.nn.softmax(logits)
xent = -tf.reduce_sum(labels * tf.log(softmax), 1)

However, this alternative would be (i) less numerically stable (since the softmax may compute much larger values) and (ii) less efficient (since some redundant computation would happen in the backprop). For real uses, we recommend that you use tf.nn.softmax_cross_entropy_with_logits().

关于python - 在 TensorFlow 中计算交叉熵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42521400/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com