Tensorflow进阶
记录,成为更好的自己
1.图
2.会话
3.张量
4.变量
5.模型保存和加载
6.自定义命令行参数
4. 变量
变量也是一种op,是一种特殊的张量,能够进行存储持久化,它的值就是张量
1. 变量op能够持久化保存,普通张量是不行的。如线性回归中的参数,系数就需要持久化保存。
2. 当定义一个变量op的时候,一定要在会话当中去运行初始化
-
变量的创建
-
创建一个带值initial_value的新变量
tf.Variable(initial_value=None, name=None)
-
-
变量的初始化
- tf.global_variables_initializer()
# 变量op
a = tf.constant([1,2,3,4,5])
var = tf.Variable(tf.random_normal([2,3],mean=0.0,stddev=1.0))
print(a, var)
# 必须做初始化
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
# 必须运行初始化op
sess.run(init_op)
print(sess.run([a, var]))
- 变量的作用域
-
作用:
让模型代码更加清晰,作用分明
-
tf.variable_scope(<scope_name>)创建指定名字的变量作用域
可视化学习Tensorboard
- 数据序列化
- events文件
- tensorboard通过读取TensorFlow的事件文件来运行
- tf.summary.FileWriter('文件路径', graph=)
返回filewriter,写入事件文件到指定目录(最好用绝对路劲),以提供给tensorboard使用 - 开启tensorboard
--logdir='文件路径'
一般浏览器打开为127.0.0.1:6006
注意:修改程序后,再保存一遍会有新的事件文件,打开默认为最新的。
with tf.Session() as sess:
# 把程序的图结构写入事件文件,graph:把指定的图写入事件中
filewriter = tf.summary.FileWriter('./summary/test', graph=sess.graph)
增加变量显示
目的:观察模型的参数,损失值等变量值的变化
- 收集变量
-
tf.summary.scalar(name="",tensor)收集对于损失函数和准确率等单值变量。
name为变量的名字,tensor为收集哪一个tensor
-
tf.summary.histogram(name="", tensor)收集高维度的变量参数
-
tf.summary.image(name="",tensor)收集输入的图片张量能显示图片
-
- 合并变量写入事件文件
- merged=tf.summary.merge_all()
- 运行合并:summary=sess.run(merged)每次迭代都需运行
- 添加:FileWriter.add_summary(summary, i)i表示第几次的值
5. 模型保存和加载
保存的就是变量
保存模型的文件:checkpoint文件 检查点文件
- tf.train.Saver(var_list=None,max_to_keep=5)
- var_list:指定将要保存和还原的变量。它可以作为一个dict或者一个列表传递。
- max_to_keep:指定要保留的最近检查点文件的最大数量。创建新文件时,会删除较旧的文件。如果无或0,则保留所有检查点文件。默认为5。(保留最新的5个检查点文件。)
6. 自定义命令行参数
- 首先定义有哪些参数需要在运行时候指定
- 程序当中获取定义命令行参数
import tensorflow as tf
# 获取命令行参数名字
FLAGS = tf.app.flags.FLAGS
# 第一个参数:名字,默认值,说明
tf.app.flags.DEFINE_integer("max_step", 100, "模型训练的步数")
tf.app.flags.DEFINE_string("model_dir", "./ckpt/model", "模型文件的加载路径")
# 调用
print(FLAGS.max_step)
print(FLAGS.model_dir)
网友评论