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 里面的值原本加和都是大于 1 的,但是经过 softmax 之后,总和变成了 1。
样本中第一个是跟标签分类相符的,第二与标签分类不符,所以第一个的交叉熵比较小为
0.02215516,而第二个比较大 3.09967351。
下面开始验证下前
在神经网络中使用 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 里面的值原本加和都是大于 1 的,但是经过 softmax 之后,总和变成了 1。
样本中第一个是跟标签分类相符的,第二与标签分类不符,所以第一个的交叉熵比较小为
0.02215516,而第二个比较大 3.09967351。
下面开始验证下前