且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

深度学习:Tensorflow变量op和可视化TensorBoard

更新时间:2022-09-05 10:31:29

变量op

变量也是一种op,是一种特殊的张量

能够进行存储持久化,它的值就是张量,默认被训练


变量op特点:

1、变量op能够持久化保存,普通张量op是不行的

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

3、name参数,在tensorboard显示名字,区分相同op


变量的创建

tf.Variable(initial_value=NOne, name=None, trainable=True)

赋值

assign(value)

返回变量值

eval(session=None)

初始化所有变量op

tf.global_varibles_initializer()

可视化学习TensorBoard

数据序列化 events事件文件

TensorBoard通过读取TensorFlow的事件文件来运行

filewriter = tf.summary.FileWriter("/temp/", graph)

写入事件文件到指定目录(***是绝对路径),以提供tensorboard使用

开启

$ tensorboard --logdir="/temp/"

打开浏览器 127.0.0.1:6006

代码示例

# -*- coding: utf-8 -*-

import tensorflow as tf

a = tf.constant([1, 2, 3], name="a")

b = tf.constant(3.0, name="b")
c = tf.constant(3.0, name="c")
e = tf.add(b, c, name="add")

var = tf.Variable(tf.random_normal((2, 3), mean=0.0, stddev=1.0), name="name")

print(a, var)
# Tensor("Const:0", shape=(3,), dtype=int32)
# <tf.Variable 'Variable:0' shape=(2, 3) dtype=float32_ref>


# 显示初始化op
init_op = tf.global_variables_initializer()

with tf.Session() as session:
    # 必须运行初始化op
    session.run(init_op)

    # 把程序的graph图结构写入事件文件
    filewriter = tf.summary.FileWriter("temp/", graph=session.graph)

    print(session.run([a, var]))
    # [array([1, 2, 3], dtype=int32),
    # array([[ 1.0577981 , -1.1390951 , -0.12928246],
    #   [ 1.2623566 ,  0.7676961 ,  0.46882382]], dtype=float32)]

增加变量显示

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

1、收集变量

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

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

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

2、合并变量写入事件文件

merged = tf.summary.merge_all()

# 合并运行,每次迭代都需要运行
summary = sess.run(merged)

# 添加,i表示第几次的值
FileWriter.add_summary(summary, i)