10分钟搞懂TensorBoard用法
时间:2022-05-07
本文章向大家介绍10分钟搞懂TensorBoard用法,主要内容包括基本用法、对模型归类、采集运行信息、比较模型的不同参数,调参用、总结:、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
基本用法
启动采集器,将运行session环境内的参数都保存到文件里,后续就可以用
with tf.Session() as sess: sess.run(tf.global_variables_initializer()) file_writer = tf.summary.FileWriter('./logs/1', sess.graph)
后续通过TensorBoard打开这个文件,查看这个session的模型,运行
tensorboard --logdir=./logs/1
打开浏览器,通常是通过本机的6006端口访问
对模型归类
在session中,对模型做归类
with tf.name_scope("RNN_layers"): lstm = tf.contrib.rnn.BasicLSTMCell(lstm_size) drop = tf.contrib.rnn.DropoutWrapper(lstm, output_keep_prob=keep_prob) cell = tf.contrib.rnn.MultiRNNCell([drop] * num_layers)with tf.name_scope("RNN_layers")
查看session文件效果如图
采集运行信息
with tf.name_scope('logits'): softmax_w = tf.Variable(tf.truncated_normal((lstm_size, num_classes), stddev=0.1), name='softmax_w') softmax_b = tf.Variable(tf.zeros(num_classes), name='softmax_b') logits = tf.matmul(output, softmax_w) + softmax_b tf.summary.histogram('softmax_w', softmax_w) tf.summary.histogram('softmax_b', softmax_b) #以直方图采集权重 ....merged = tf.summary.merge_all() #收集全部采集点.....with tf.Session() as sess: sess.run(tf.global_variables_initializer()) train_writer = tf.summary.FileWriter('./logs/2/train', sess.graph) .... summary, batch_loss, new_state, _ = sess.run([model.merged, model.cost, model.final_state, model.optimizer], feed_dict=feed) #运行采集点的收集器merge .... train_writer.add_summary(summary, iteration) #采集到的信息写入文件
比较模型的不同参数,调参用
epochs = 20batch_size = 100num_steps = 100train_x, train_y, val_x, val_y = split_data(chars, batch_size, num_steps)for lstm_size in [128,256,512]: for num_layers in [1, 2]: for learning_rate in [0.002, 0.001]: log_string = 'logs/4/lr={},rl={},ru={}'.format(learning_rate, num_layers, lstm_size) #每一对参数写入一个文件 writer = tf.summary.FileWriter(log_string) model = build_rnn(len(vocab), batch_size=batch_size, num_steps=num_steps, learning_rate=learning_rate, lstm_size=lstm_size, num_layers=num_layers) train(model, epochs, writer)#每个文件用采集器收集信息
对每个参数配置做记录,最终可以得到他们之间对比的图案
总结:
- 图形做归类:
withtf.name_scope('logits'):
- 埋点:
tf.summary.histogram('softmax_w',softmax_w)
- 打包点:
merged=tf.summary.merge_all()
- 设置读写文件:
train_writer=tf.summary.FileWriter('./logs/2/train',sess.graph)
- javascript单线程环境实现真正的setTimeout
- 利用pipework与OVS构建跨主机容器网络
- Docker系列教程07-Dockerfile指令详解
- Docker系列教程06-实战:修改Nginx首页
- prompt() 方法,弹框带输入框
- Docker系列教程05-容器常用命令
- 数据分析利器-NumPy
- 【LEETCODE】模拟面试-134-Gas Station
- Docker系列教程17-默认bridge网络中配置DNS
- Docker系列教程16-network命令
- 【LEETCODE】模拟面试-206. Reverse Linked List
- Eslint检测出的问题如何自动修复
- 【LEETCODE】模拟面试-215. Kth Largest Element in an Array
- Docker系列教程15-Docker容器网络
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Promise教程之产房里生孩子的故事
- 一个现实生活中的例子让你理解Promise的使用场景
- react 跨级组件传参方式 context方式的传参
- Excel文件导入导出操作
- nprogress路由切换添加进度条
- vue-json-excel导出excle表格
- Dom树 CSS树 渲染树(render树) 规则、原理
- Canvas圆形时钟
- 浅谈 Hooks
- Java进阶训练营 第一周JVM 预习笔记
- LeetCode905. 按奇偶排序数组 题解
- codeforces 1133D (map+精度控制)
- 只要十步,你就可以应用表达式树来优化动态调用
- 宏任务和微任务的一个小事
- 如何使用ES6的新特性async await进行异步处理