输出层在自定义估算器中没有激活功能

时间:2018-03-26 09:06:39

标签: tensorflow machine-learning neural-network

custom estimator中,输出图层没有激活。

logits = tf.layers.dense(net, params['n_classes'], activation=None)

然后使用sparse_softmax_cross_entropy计算损失

loss = tf.losses.sparse_softmax_cross_entropy(labels=labels, logits=logits)  

问题

  1. 一般来说,输出层还应该有激活功能吗?
  2. sparse_softmax_cross_entropy表示使用softmax作为激活 计算损失时输出层的功能?

2 个答案:

答案 0 :(得分:2)

基于它“天真地”计算softmax和交叉熵可能在数值上不稳定。这就是为什么建议在输出层中激活(通常分类为tf.nn.softmax)。相反,Tensorflow提供损失函数,例如sparse_softmax_cross_entropy,它在内部应用softmax(以数字稳定的方式),然后根据它计算交叉熵。也就是说,您应该提供模型输出而不您自己的softmax(通常称为 logits )。

E.g。在API docs for the softmax op中,您通常可以找到诸如

之类的段落
  

警告:此操作需要未缩放的日志,因为它会在内部执行logmax以提高效率。不要使用softmax的输出调用此op,因为它会产生不正确的结果。

答案 1 :(得分:0)

  1. 一般情况下,输出图层(softmax本身旁边)
  2. 后不会使用其他激活功能