6.5 softmax 算法与损失函数的综合应用
在神经网络中使用 softmax 计算 loss 时对于初学者常常会范很多错误,下面通过具体的实
例代码演示需要注意哪些关键的地方与具体的用法。
6.5.1 实例 22 交叉熵实验
对于交叉熵这个比较生僻的术语,在深度学习领域中是最常见不过了,由于其常用性,在
TensorFlow 中会被封装成为多个版本, 有的公式里直接带了交叉熵,有的需要自己单独求一下
交叉熵,而在构建模型时,如果这块知识不扎实,出现问题时很难分析是模型的问题还是交叉熵
的使用问题。 这里有必要通过几个小实验将其弄得更明白一些。
案例描述
下面一段代码,假设有一个标签 labels 和一个网络输出值 logits。
这个案例就是以这两个值来进行以下 3 次实验:
(1)两次 softmax 实验:将输出值 logits 分别进行 1 次和 2 次 softmax,观察两次的区别
及意义;
(2)观察交叉熵:将上个步骤中的两个值分别进行 softmax_cross_entropy_with_logits,
观察区别;
(3)自建公式实验:将做两次 softmax 的值放到自建组合的公式里得到正确的值。
代码 6-1 softmax 应用
可以看到: logits 里面的值原本
在神经网络中使用 softmax 计算 loss 时对于初学者常常会范很多错误,下面通过具体的实
例代码演示需要注意哪些关键的地方与具体的用法。
6.5.1 实例 22 交叉熵实验
对于交叉熵这个比较生僻的术语,在深度学习领域中是最常见不过了,由于其常用性,在
TensorFlow 中会被封装成为多个版本, 有的公式里直接带了交叉熵,有的需要自己单独求一下
交叉熵,而在构建模型时,如果这块知识不扎实,出现问题时很难分析是模型的问题还是交叉熵
的使用问题。 这里有必要通过几个小实验将其弄得更明白一些。
案例描述
下面一段代码,假设有一个标签 labels 和一个网络输出值 logits。
这个案例就是以这两个值来进行以下 3 次实验:
(1)两次 softmax 实验:将输出值 logits 分别进行 1 次和 2 次 softmax,观察两次的区别
及意义;
(2)观察交叉熵:将上个步骤中的两个值分别进行 softmax_cross_entropy_with_logits,
观察区别;
(3)自建公式实验:将做两次 softmax 的值放到自建组合的公式里得到正确的值。
代码 6-1 softmax 应用

运行上面代码输出结果如下:

可以看到: logits 里面的值原本