想知道网络是不是在学习,你需要比较输出值(z)与预期值(expected)。我们如何计算这种差异(loss)?有许多方法可以实现这一点,因为我们正在与一个分类任务协同工作,最好的衡量损失最好的方法就是“交叉熵代价函数(cross-entropy error)”。 詹姆斯D?麦卡弗里给出了一个出色的解释,解释了为什么这是这种任务的最好的方法。(交叉熵代价函数) 在TensorFlow中你会使用tf.nn.softmax_cross_entropy_with_logits()来计算交叉熵误差(这是softmax激活函数)并计算平均误差(tf.reduced_mean())。 你当然想找到最好的权重值和偏差,以最小化输出误差(我们得到的值和正确的值之间的区别)。为了做到这一点,你需要使用梯度下降法,更具体地说,你将使用随机梯度下降法。 梯度下降法 来源: https://sebastianraschka.com/faq/docs/closed-form-vs-gd.html 也有很多算法来计算梯度下降,你需要使用自适应估计方法(Adam),在TensorFlow中使用这个算法需要通过learning_rate值,它决定增量步的值来找到最好的权重值。 tf.train.AdamOptimizer(learning_rate).minimize(loss)是一种语法糖(syntactic sugar),它做两件事: 1.计算梯度(loss, <list of variables>) 2.运用梯度(<list of variables>) 这种方法用新值来更新所有的tf.Variables,所以我们不需要传递变量的列表。现在你有训练网络的代码(点图放大): 数据操作 你将使用的数据集会有许多英文文字,那么我们需要操纵这些数据使它们通过神经网络。这样做的话你需要做两件事: 为每个单词创建索引 为每个文本创建一个矩阵,如果字在文本中值为1,否则的话为0 让我们看看代码理解这个过程(点图放大): 在上面的示例中,文本内容是‘Hi from Brazil’,矩阵是[1,1,1],那么如果文本内容是‘Hi’呢? 现在你将要使用到独热编码: 运行图表并得到结果 这是最有意思的部分:从模型中得到结果,首先让我们仔细看看输入数据集。 ★数据集 你需要使用20新闻组、约20主题的18000帖子的数据集,为了加载这个数据集,j2直播,你将使用scikit-learn图书馆(scikit-learn图书馆),我们只使用到其中3类:comp.graphics、sci.space和rec.sport.baseball。 (责任编辑:本港台直播) |