gpt4 book ai didi

python - 在Tensorflow中,sampled_softmax_loss和softmax_cross_entropy_with_logits有什么区别

转载 作者:太空狗 更新时间:2023-10-29 17:05:14 24 4
gpt4 key购买 nike

在tensorflow中,有一种叫做softmax_cross_entropy_with_logits的方法和 sampled_softmax_loss .

我阅读了 tensorflow 文档并在 google 上搜索了更多信息,但我找不到不同之处。在我看来,两者都使用 softmax 函数计算损失。

使用sampled_softmax_loss计算损失

loss = tf.reduce_mean(tf.nn.sampled_softmax_loss(...))

使用softmax_cross_entropy_with_logits计算损失

loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(P, Q))

对我来说,计算 softmax 损失与计算 softmax 交叉熵相同(例如 cross_entropy(softmax(train_x)))

有人能告诉我为什么有两种不同的方法以及在哪种情况下我应该使用哪种方法吗?

最佳答案

如果你的目标词汇量(或者换句话说,你想要预测的类的数量)真的很大,那么很难使用常规的 softmax,因为你必须计算字典中每个词的概率。通过使用 sampled_softmax_loss,您只需考虑词汇表的子集 V 即可计算损失。

仅当我们采样(我们的 V)小于词汇量时,采样的 softmax 才有意义。如果您的词汇量(标签数量)很小,则使用 sampled_softmax_loss 没有意义。

您可以在本文中查看实现细节: http://arxiv.org/pdf/1412.2007v2.pdf

您还可以看到使用它的示例 - 在此 example 中的序列到序列翻译

关于python - 在Tensorflow中,sampled_softmax_loss和softmax_cross_entropy_with_logits有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35241251/

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