【问题标题】:Output layer doesn't have activation function in custom estimator输出层在自定义估计器中没有激活功能
【发布时间】:2018-03-27 00:16:36
【问题描述】:

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 作为激活 计算损失时输出层的功能?

【问题讨论】:

    标签: tensorflow machine-learning neural-network


    【解决方案1】:

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

    例如在API docs for the softmax op你通常可以找到诸如

    这样的段落

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-15
      • 2019-05-09
      • 1970-01-01
      • 2019-11-25
      • 2018-09-26
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      相关资源
      最近更新 更多