第1章
在您的计算机上安装必要的软件:Python、TensorFlow和Matplotlib。
所有代码都在这里:
https://download.csdn.net/download/qq_39683748/10800108
本教程的示例代码在tensorflow-mnist-tutorial文件夹中。文件夹包含多个文件。
现在你将要打开的的是mnist_1.0_softmax.py。
其他文件既可以是解决方案,也可以是支持数据加载和可视化结果的代码。
当启动初始Python脚本时,您应该看到训练过程的实时可视化:
故障排除:如果不能运行实时可视化,或者如果您希望只处理文本输出,则可以通过注释一行和注释另一行来取消激活可视化。请参阅mnist_1.0_softmax.py文件底部的说明。
为TensorFlow构建的可视化工具是TensorBoard。为TensorFlow构建的可视化工具是TensorBoard。
它的构建使您可以在远程服务器上执行您的分布式TensorFlow作业。
我们需要在matplotlib做这个实验,得到实时动画。
但是如果你用TensorFlow处理正式的工作,一定要检查TensorBoard
第2章
理论:训练神经网络
我们将首先观察正在训练的神经网络。
下一节将解释代码,因此现在不必查看它。
我们的神经网络接收手写数字并将它们分类,也就是说,把它们识别为0、1、2等数字,直到 9。
它基于内部变量(稍后解释的“权重”和“偏差”)来这样做,这些变量需要具有正确的值,以便分类工作正常。
这个“正确的值”是通过训练过程学习的,稍后也会详细解释。
现在你需要知道的是,训练循环是这样的:
训练数据= >更新权重和偏置=更好的识别效果(循环)
让我们逐个浏览可视化的六个面板,看看训练神经网络需要什么。
首先是测试集的数据:
为了测试真实情况下的识别效果,我们必须使用系统在训练期间没有用过的的数据。
否则,它可能会死记硬背地记住所有的训练数据,但是却仍然不能识别新写的一个“8”。
MNIST数据集包含10000个测试数字。
在这里,大约1000个,其中所有被误认的都在顶部(红色背景)排序。
左边的刻度可以让你大致了解分类器的准确度(%正确识别的测试数字)
损失函数:
为了使训练能进行,我们要定义一个损失函数,即一个值,它表示系统识别数字的准确程度(值越小越准确),并通过训练使其最小化。损失函数的选择将在后面解释(这里选择的是“交叉熵”)。我们可以看到,随着训练的进行,训练集和测试集的损失函数都下降了:这是个好现象,因为这意味着神经网络在学习。X轴表示通过学习循环的迭代。
准确率:
准确率:正确识别的数字占总数的百分比。
红线和蓝线是在训练集和测试集上计算得到的。
如果训练正常的情况下,准确率会渐渐提高。
权重和偏置的变化:
最后两个图表示了内部变量所取值的变化。
随着训练的进行,权重和偏置的值会变化。
在这里,我们发现,偏置最初是从0开始的,最终取值大约均匀地分布在-1.5和1.5之间。
如果系统不能很好地收敛,这些图有助于我们判断问题所在。
如果你看到重量和偏见变化到100或1000,你的训练可能会有问题。
图中的带是百分位。有7个波段,所以每个波段是100/7=所有值的14%。
可视化GUI的键盘快捷方式:
1 ......... 只显示第1张图片
2 ......... 只显示第2张图片
3 ......... 只显示第3张图片
4 ......... 只显示第4张图片
5 ......... 只显示第5张图片
6 ......... 只显示第6张图片
7 ......... 显示第1,2张图片
8 ......... 显示第4,5张图片
9 ......... 显示第3,6张图片
ESC or 0 .. 返回,显示所有图片
SPACE ..... 暂停/继续
O ......... 界面缩放模式 (然后用鼠标操作)
H ......... 重置所有缩放
Ctrl-S .... 保存当前的图片