模型训练
接着上一节,模型已经用y = tf.nn.softmax(tf.matmul(x,W) + b)实现,现在来训练它,但是怎么才能知道训练得好不好呢?所以我们需要定义一个指标来评估模型的好坏,然后让这个指标最小,这个指标一般是成本(cost)或损失(loss),不过这两种方式其实也是一样的。常用的一个好用的成本函数叫交叉熵(cross-entropy)(感觉回到了高等热力学)。交叉熵产生于信息论里面的信息压缩编码技术,不过后来转到博弈论/机器学习等领域的评估手段,看下定义:
其中y是预测的概率分布,y’是实际的分布(就是输入的one-hot vector).可以把它理解为预测用于描述争相的效果如何的量度。这个概念还是很重要的。
为了计算交叉熵,做一个上面的y’,用y_代替
y_ = tf.placeholder("float", [None,10])
计算交叉熵:
cross_entropy = -tf.reduce_sum