“第一个TF程序:训练模型”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
第3行: 第3行:
 
<p>[[文件:t1-12.png]]</p>
 
<p>[[文件:t1-12.png]]</p>
 
<p>y 是我们预测的概率分布, y' 是实际的分布(我们输入的one-hot vector)。'''比较粗糙的理解是,交叉熵是用来衡量我们的预测用于描述真相的低效性。'''更详细的关于交叉熵的解释超出本教程的范畴,但是你很有必要好好理解它。</p>
 
<p>y 是我们预测的概率分布, y' 是实际的分布(我们输入的one-hot vector)。'''比较粗糙的理解是,交叉熵是用来衡量我们的预测用于描述真相的低效性。'''更详细的关于交叉熵的解释超出本教程的范畴,但是你很有必要好好理解它。</p>
<p> 名词解释:交叉熵 https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E7%86%B5/8983241?fr=aladdin </p>
+
*以下关于交叉熵的解释出自:https://www.zhihu.com/question/41252833
 +
*[[文件:t1-14.png]]
 
<p>为了计算交叉熵,我们首先需要添加一个新的占位符用于输入正确值:</p>
 
<p>为了计算交叉熵,我们首先需要添加一个新的占位符用于输入正确值:</p>
 
  y_ = tf.placeholder("float", [None,10])
 
  y_ = tf.placeholder("float", [None,10])

2017年12月23日 (六) 08:31的版本

为了训练我们的模型,我们首先需要定义一个指标来评估这个模型是好的。其次,在机器学习,我们通常定义指标来表示一个模型是坏的,这个指标称为成本(cost)或损失(loss),然后尽量最小化这个指标。但是,这两种方式是相同的。

一个非常常见的,非常漂亮的成本函数是“交叉熵”(cross-entropy)。交叉熵产生于信息论里面的信息压缩编码技术,但是它后来演变成为从博弈论到机器学习等其他领域里的重要技术手段。它的定义如下:

T1-12.png

y 是我们预测的概率分布, y' 是实际的分布(我们输入的one-hot vector)。比较粗糙的理解是,交叉熵是用来衡量我们的预测用于描述真相的低效性。更详细的关于交叉熵的解释超出本教程的范畴,但是你很有必要好好理解它。

为了计算交叉熵,我们首先需要添加一个新的占位符用于输入正确值:

y_ = tf.placeholder("float", [None,10])

然后我们可以用T1-13.png 计算交叉熵:

cross_entropy = -tf.reduce_sum(y_*tf.log(y))

首先,用 tf.log 计算 y 的每个元素的对数。接下来,我们把 y_ 的每一个元素和 tf.log(y_) 的对应元素相乘。最后,用 tf.reduce_sum 计算张量的所有元素的总和。(注意,这里的交叉熵不仅仅用来衡量单一的一对预测和真实值,而是所有100幅图片的交叉熵的总和。对于100个数据点的预测表现比单一数据点的表现能更好地描述我们的模型的性能。

(注意,这里的交叉熵不仅仅用来衡量单一的一对预测和真实值,而是所有100幅图片的交叉熵的总和。对于100个数据点的预测表现比单一数据点的表现能更好地描述我们的模型的性能。

参考文档: