在我的理解里面,交叉熵( cross-entry)损失函数中的 log 能够抵消 softmax 函数中的 exp.使得梯度能够更好的反向传播。
在看 niftyNet 代码的时候,发现如下内容:
在__init__中:
if data_loss_function_name.startswith('cross_entropy') \
or 'xent' in data_loss_function_name:
tf.logging.info(
'Cross entropy loss function calls '
'tf.nn.sparse_softmax_cross_entropy_with_logits '
'which always performs a softmax internally.')
self._softmax = False
在 layer_op 中
if self._softmax:
pred_b = tf.cast(pred_b, dtype=tf.float32)
pred_b = tf.nn.softmax(pred_b)
为什么损失函数是 cross_entropy 的时候,不需要进行 softmax?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.