一、手写数字识别的改进:将识别准确率提高到98%以上
在代码里
L1_drop = tf.nn.dropout(L1, keep_prob)
这一句报错ValueError: Shapes (?, 10) and () are incompatible,可能是定义占位符的时候定义成了:
keep_prob = tf.placeholder(tf.float32, [None,10])
应该定义成:
keep_prob = tf.placeholder(tf.float32)
这时候如果还报错,可能是后面sess.run的时候没有给keep_prob赋初始值。
代码如下:使用AdamOptimizer。每迭代一次更新学习率。
特点:一开始给予更大的学习率快速收敛,之后学习率逐渐降低。
结果如下:可以发现准确率能达到98%以上。
二、TensorBoard的网络结构
用tensorboard来画神经网络的结构。
需要先定义一个命名空间name_scope。
然后加一句用于创建新文件夹和画图:
然后logs文件夹下就会出现一个新的文件。
之后在windows下打开Anaconda Prompt,路径改到当前磁盘的目录下,比如"d:"
视频里说打开命令行,但是我的电脑里打开命令行不承认tensorboard这个命令,见下:
在Anaconda Prompt下输入:"tensorboard --logdir=logs",‘=‘’后面加logs文件夹所在的路径,因为本身就在当前文件夹下,所以直接输入logs就可以了。
复制最下面一行的网址,粘贴到谷歌浏览器内,就可以看到图了。
TensorBoard的具体操作:鼠标左键移动,滚轮放大,双击展开。
一些namespace可以右键并且点“remove from the graph”或者点“add to the graph”移动到右边或者移动到图内。
然后点击namespace旁边的+号或者双击namespace查看具体内容:输入输出。
图例如下:
继续定义一个命令空间:
删除上一个图,再运行一次,然后在命令行里输入两次“ctrl+c”,再执行一次tensorboard的命令。然后在网址里刷新。此时刷新会发现前后两个图混在了一起。
在Jupyter中点Kernel+Restart+run all,再次刷新图,以防止出现两个图混叠的情况。
完整代码如下:
TensorBoard生成的图如下:
从图上可以看出代码的结构。
三、TensorBoard网络运行(可视化参数)
tf.summary.scalar('mean',mean)
#这个方法是给mean这个变量命名为'mean'
tf.summary.histogram('histogram',var) #直方图
write.add_summary(summary,epoch) # 写入summary和文件运行周期
详细代码截图如下:(在Pycharm上可以跑,在Jupyter上有报错没有y-input,但是明明是有的...)
出来的图在TensorBoard的Scalar标签栏下:
点击Accuracy就可以看到图了:
可以放大(图像下方),也可以进行Smoothing(界面左侧)。
记录了Weight和biases的平均值,标准差,最小值,方差等随迭代次数的变化,并记录了loss随迭代次数的变化。
weight和biases的值的变化情况 loss的变化情况loss随着迭代次数增加而震荡着降低。如果loss曲线震动得比较剧烈,可能因为学习率设置得太大了,导致模型没法收敛。
点击网页上方的“distribution”按钮,可以看到直方图的分布。
的直方图分布是颜色越深,分布得越多。
点击网页上方的“histogram”按钮,可以看到histogram的分布。
四、TensorFlow可视化
参考网站:https://www.tensorflow.org/guide/embedding
用到的图片的下载链接:https://www.tensorflow.org/images/mnist_10k_sprite.png
Shift+Tab组合键可以查看用到的方法的描述
误:embedding = tf.Variable(tf.stack(mnist.test.images[:image_num],trainable=False,name='embedding'))
#这句话报错是因为括号的位置。 trainable和name都是用来定义Variable而不是stack的。
正:embedding = tf.Variable(tf.stack(mnist.test.images[:image_num]), trainable=False, name='embedding')
代码如下:
需要在当前文件夹下新建projector ->data:存放图片
->projector
这时候在projector下的projector文件里出现了很多新文件。
同样按照之前的方法打开tensorboard,点击“projector”。
点击Color并选择,可以给projector上色。
点击T-SNE,可以看到收敛和聚类的过程。也可以改变学习率去看收敛过程。
网友评论