————————————————————————————
原文发表于夏木青 | JoselynZhao Blog,欢迎访问博文原文。
————————————————————————————
深度学习教程与实战案列系列文章
深度学习 | 绪论
深度学习 | 线性代数基础
深度学习 | 机器学习基础
深度学习 | 实践方法论
深度学习 | 应用
深度学习 | 安装conda、opencv、pycharm以及相关问题
深度学习 | 工具及实践(TensorFlow)
深度学习 | TensorFlow 命名机制和变量共享、变量赋值与模型封装
深度学习 | TFSlim介绍
深度学习 | TensorFlow可视化
深度学习 | 训练及优化方法
深度学习 | 模型评估与梯度下降优化
深度学习 | 物体检测
深度学习| 实战1-python基本操作
深度学习 | 实战2-TensorFlow基础
深度学习 | 实战3-设计变量共享网络进行MNIST分类
深度学习 | 实战4-将LENET封装为class,并进行分类
深度学习 | 实战5-用slim 定义Lenet网络,并训练测试
深度学习 | 实战6-利用tensorboard实现卷积可视化
深度学习 | 实战7- 连体网络MINIST优化
深度学习 | 实战8 - 梯度截断
深度学习 | 实战9- 参数正则化
TensorFlow 可视化
TensorBoard简介
什么是TensoBoard
TF 提供的可视化工具,通过网页浏览的方式可视化展示与我们 TF 构建的模型相关的信息
Tensorboard 能帮助我们看到什么
- 看网络结构:graph
- 看训练过程中的指标:loss、acc…
- 看参数变化:参数均值、方差、分布
- 看中间结果:中间生成图像、语音等
- 看数据关系:样本、分类结果分布
怎样启动 Tensorboard?
1 在 TF 程序中添加记录并存储日志 events…xxxx
2. 命令行启动读取日志文件
3. tensorboard –logdir=logs (logs 目录不能包含中文,或者空格) 4. 打开浏览器(用 chrome),按命令行提示输入本机地址和 tensorboard 通讯端口,刷新浏览例:http://DESKTOP-xxx:6006 5. 输入:http://127.0.0.1:6006 也可以
Tensorboard 基础
Summary 类: 负责汇总数据 并写入事件文件
使用TensorBoard 展示数据,需要在执行TensorFlow计算图的过程中,将各种类型的数据汇总并记录到日志文件中。 然后使用TensorBoard读取这些日志文件,解析数据并产生数据可视化的web页面,让我们可以在浏览器中观察各项中汇总数据。
TF 程序中添加 Tensorboard 日志记录方法
-
TF程序中添加TensorBoard日志记录方法:
对感兴趣 tensor 添加记录操作:summary operation:
例如tf.summary.scalar(′ name′ , variable)
-
汇总需要写入日志的记录:
使用merged = tf.merge_all_summaries()
-
实例化一个日志书写器:
使用summary_writer = tf.summary.FileWriter(logdir, graph = None, flush_secs = 120, max_queue = 10)
可选同时传入模型graph。 或之后用`add_graph(graph,global_step= None) 添加 -
运行汇总节点,得到汇总结果:
summary = sess.run(merged)
-
调用书写器实例将汇总日志写入文件
summary_writer.add_summary(summary, global_step = i)
-
缓存写入磁盘文件,关闭文件:
summary_writer.flush()
写入,否则flush_secs
间隔写入summary_writer.close()
,写入加关闭文件
通过TensorBoard查找编程错误
tf.summary.FileWriter(n):一个用于输出 Tensorboard 数据的Python类
sess = tf.Session()
writer = tf.summary.FileWriter(LOGDIR+'2')
writer.add_graph(sess.graph)
- 在 TensorBoard 里指定变量名,提高流图可读性*
输出中间数据
- Summary(n) 用于输出中间数
据 - tf.summary.scalar (标量)
- tf.summary.image (图片)
- tf.summary.audio (声音)
- tf.summary.histogram (统计数 据)
添加代码以查看中间数据
tf.summary.image('input',x_image,3)
tf.summary.scalar('cross_entropy',cross_entropy)
tf.summary.scalar('accuracy',accuracy)
变量不能都初始化为 0
我们的损失是 cross entropy,要和 softmax 一起配对使用
TensorBoard进行超参数搜索
不同学习率以及卷积层数
梯度、特征可视化
CNN可视化
卷积核:滤波器、模式相关性
有意义的卷积核:有一定规律的 pattern,不是特别随机,特别是 底层
不同层的模式规律不同
参数的泛化性能?冗余?稀疏?
CNN 可视化 -卷积核
weight 可视化出来的效果图,左图存在很多噪点,右图则比较平滑,
举例:下图两张图都是将一个神经网络的第一个卷机层的 filter 出现左图这个情形,往往意味着我们模型训练过程出现了问题。
梯度可视化
梯度可视化对网络调参的好处在训练过程中,由于设置了较高的 学习率,学习跨度太大,中间层的梯度可能会随着训练过程的推进逐 渐变为 0。
梯度消失当出现梯度消失或梯度弥散时,梯度图能很好的表现出
来。