gpt4 book ai didi

python - 如何将输出张量转换为单热张量?

转载 作者:太空狗 更新时间:2023-10-30 00:31:28 25 4
gpt4 key购买 nike

我需要计算 softmax 输出与目标的损失。我的目标是 [0,0,1],输出是 [0.3,0.3,0.4]就目的而言,预测是正确的。但是以下类型的成本函数并没有考虑到这种准确性

self._output = output = tf.nn.softmax(y)
self._cost = cost = tf.reduce_mean(tf.square( output - tf.reshape(self._targets, [-1])))

我如何轻松地将输出 [0.3,0.3,0.4] 转换为 TF 本身的 [0,0,1]?

最佳答案

用于比较两个概率分布的典型损失函数称为 cross entropy . TensorFlow 有 tf.nn.softmax_cross_entropy_with_logits实现该损失的功能。在你的情况下,你可以简单地做:

self._cost = tf.nn.softmax_cross_entropy_with_logits(
y, tf.reshape(self._targets, [-1]))

但如果您真的想将 [0.3, 0.3, 0.4] 转换为用于不同目的的单热表示,您可以使用 tf.one_hot功能如下:

sess = tf.InteractiveSession()
a = tf.constant([0.3, 0.3, 0.4])
one_hot_a = tf.one_hot(tf.nn.top_k(a).indices, tf.shape(a)[0])
print(one_hot_a.eval())
# prints [[ 0. 0. 1.]]

关于python - 如何将输出张量转换为单热张量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38485905/

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