首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tf.losses.softmax与tf.nn.softmax的Tensorflow差异

tf.losses.softmax与tf.nn.softmax的Tensorflow差异
EN

Stack Overflow用户
提问于 2019-03-12 23:24:21
回答 1查看 450关注 0票数 0

tf.nn.softmax_cross_entropy_with_logitstf.losses.softmax_cross_entropy有什么区别,什么时候使用哪个函数??

EN

回答 1

Stack Overflow用户

发布于 2019-03-12 23:32:58

自从我上次使用Tensorflow以来已经有一段时间了,但我非常确定后者是前者的包装器。

tf.losses.softmax_cross_entropy只使用tf.nn.softmax_cross_entropy_with_logits来计算损失,同时允许您使用额外的功能,如类权重、标签平滑等。

tf.losses.softmax_cross_entropy还将损失添加到tf.GraphKeys.LOSSES集合中,这样您就不需要一直将其“路由”到顶部,而只需收集您的损失

代码语言:javascript
复制
  losses = tf.get_collection(tf.GraphKeys.LOSSES)
  loss = tf.reduce_sum(reg_losses)

我个人喜欢能够个性化我的损失函数,所以我使用了"nn“函数,但是如果您不打算做任何事情,请使用tf.losses。

我也喜欢使用sparse_softmax_cross_entropy,因为大多数时候我使用的是互斥的类,这样我就可以避免自己将标签转换为一种热编码。

不同之处在于,在tf.nn.softmax中,您需要对标签使用one-hot编码,而在tf.nn.sparse_softmax_cross_entropy中,您也可以使用整数来指定标签所属的类号。不同的是

代码语言:javascript
复制
labels = [
 [0, 0, 1],
 [1, 0, 0],
 [0, 1, 0],
]

vs

代码语言:javascript
复制
labels = [2, 0, 1]

最后,如果你不打算做很多低级的事情,我建议你看看Keras。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55125115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档