美文网首页tensflow
Tensorflow进阶(二)

Tensorflow进阶(二)

作者: Daily_Note | 来源:发表于2018-11-19 16:13 被阅读146次

    Tensorflow进阶

    记录,成为更好的自己

    1.图

    2.会话

    3.张量

    4.变量

    5.模型保存和加载

    6.自定义命令行参数


    4. 变量

    变量也是一种op,是一种特殊的张量,能够进行存储持久化,它的值就是张量

    1. 变量op能够持久化保存,普通张量是不行的。如线性回归中的参数,系数就需要持久化保存。

    2. 当定义一个变量op的时候,一定要在会话当中去运行初始化

    1. 变量的创建

      • 创建一个带值initial_value的新变量

        tf.Variable(initial_value=None, name=None)

    2. 变量的初始化

      • 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]))
    
    1. 变量的作用域
    • 作用:

      让模型代码更加清晰,作用分明

    • 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)
    

    增加变量显示

    目的:观察模型的参数,损失值等变量值的变化

    1. 收集变量
      • tf.summary.scalar(name="",tensor)收集对于损失函数和准确率等单值变量。

        name为变量的名字,tensor为收集哪一个tensor

      • tf.summary.histogram(name="", tensor)收集高维度的变量参数

      • tf.summary.image(name="",tensor)收集输入的图片张量能显示图片

    2. 合并变量写入事件文件
      • 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. 自定义命令行参数

    1. 首先定义有哪些参数需要在运行时候指定
    2. 程序当中获取定义命令行参数
    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)
    

    相关文章

      网友评论

        本文标题:Tensorflow进阶(二)

        本文链接:https://www.haomeiwen.com/subject/parafqtx.html