5、变量和可视化

 


 1、变量的创建

 变量也是一种op,是一种特殊的张量,能够进行存储持久化(用于保存参数,系数等),它的值就是张量,默认被训练

  tf.Variable(initial_ value=None,name=None, trainable=True)  (name表示在可视化中显示的名字)

  创建一个带值initial_value的新变量,initial_value初始值,可以是随机的值

  • assign(value)

  为变量分配一个新值,返回新值

  • eval(session=None)

  计算并返回此变量的值

  • name 属性表示变量名字
1 import tensorflow as tf
2 import os
3 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #去掉警告,将警告级别提升
4 
5 a = tf.constant([1,2,3,4,5])
6 var = tf.Variable(tf.random.normal([2,3],mean=0.0,stddev=1.0)) #random.normal从正态分布中输出随机值,平均值0.0,标准差1.0
7 print(a)
8 print(var)

输出 :

Tensor("Const_1:0", shape=(5,), dtype=int32)
<tf.Variable 'Variable:0' shape=(2, 3) dtype=float32_ref>

 


2、变量的初始化  (变量在进行run时,必须先要进行初始化)

 没有进行初始化
1
import tensorflow as tf 2 import os 3 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #去掉警告,将警告级别提升 4 5 a = tf.constant([1,2,3,4,5]) 6 var = tf.Variable(tf.random.normal([2,3],mean=0.0,stddev=1.0)) #random.normal从正态分布中输出随机值,平均值0.0,标准差1.0 7 with tf.Session() as sess: 8 print(sess.run([a,var]))

输出:

Attempting to use uninitialized value Variable 

 添加一个初始化所有变量的op(tf.global_variables_initializer())在会话中开启
 1 import tensorflow as tf
 2 import os
 3 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #去掉警告,将警告级别提升
 4 
 5 a = tf.constant([1,2,3,4,5])
 6 var = tf.Variable(tf.random.normal([2,3],mean=0.0,stddev=1.0)) #random.normal从正态分布中输出随机值,平均值0.0,标准差1.0
 7 
 8 #在打印var之前必须做一个显示的初始化
 9 init_op = tf.global_variables_initializer()  #不需要传入值
10 
11 with tf.Session() as sess:
12     sess.run(init_op)   #必须运行初始化op
13     print(sess.run([a,var]))

输出:

[array([1, 2, 3, 4, 5]), array([[-0.11310391,  1.3286809 ,  0.06200764],
       [ 0.45713297, -0.33347377,  1.4530548 ]], dtype=float32)]
  •  变量的op能够持久化保存,普通张量的op是不行的
  •  当定义一个变量op的时候,一定要在会话中初始化

 

4、可视化Tensorboard

 将tensorflow图结构显示在web界面,程序图结构——>序列化为events事件文件——>通过tensorboard工具显示到web界面

  • 数据序列化-events文件

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

  • t.summary.FileWriter(" events事件文件的路径 ", graph= )  summary

    返回filewriter,写入事件文件到指定目录(最好用绝对路径),以提供给tensorboard使 用

  • 开启

    tensorboard -logdir= “events事件文件的路径"
    一"般浏览器打开为127.0.0.1:6006
    注:修改程序后,再保存一遍会有新的事件文件, 打开默认为最新的。


1
import tensorflow as tf 2 import os 3 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #去掉警告,将警告级别提升 4 5 a = tf.constant([1,2,3,4,5]) 6 var = tf.Variable(tf.random.normal([2,3],mean=0.0,stddev=1.0)) #random.normal从正态分布中输出随机值,平均值0.0,标准差1.0 7 8 #在打印var之前必须做一个显示的初始化 9 init_op = tf.global_variables_initializer() #不需要传入值 10 11 with tf.Session() as sess: 12 sess.run(init_op) #必须运行初始化op 13 14 #把程序的图结构写入事件文件中,graph:把指定的图写进事件文件当中(这个图的获取方式有很多种), summary 摘要 15 fileWriter = tf.summary.FileWriter("E:/pythonprogram/deepLearning/base/visual/",graph=sess.graph) #返回一个实例 16 print(sess.run([a,var]))

输出:

[array([1, 2, 3, 4, 5]), array([[ 1.3283709 ,  0.04997791, -0.25768515],
       [ 0.12506656, -0.48526055,  0.06624609]], dtype=float32)]

② 同时在写入事件的目录中生成了一个events文件

③ 接下来使用tensorboard将事件文件读到web中(如果有多个事件,会自动按照时间读取最近的一次事件进行读取)

  • 首先在命令行输入 :  tensorboard --logdir="E:/pythonprogram/deepLearning/base/visual/"   (注意是自己的events文件目录)

  •  在浏览器的地址栏输入 http://LAPTOP-3O0EGQPQ:6006/    (在③中的输出提示)
  •  浏览器显示如下  ,左下角是一些图的符号的对应标记类型

    ①GRAPHS  显示程序的图结构 

    ②SCALARS  显示0维度的值,即数值,标量

    ③HISTOGRAMS  显示高维度的值(如权重,偏置等)

    ④每个参数中都有一个name,它的作用是在tensorboard中显示设定的名字

  

  • 每个op对应的常数的张量

  • 符号的意义

 

  • name设置,主要是为了能在web中分清变量
 1 import tensorflow as tf
 2 import os
 3 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' #去掉警告,将警告级别提升
 4 
 5 a = tf.constant(2.0,name='a')
 6 b = tf.constant(3.0,name='b')
 7 c = tf.add(a,b,name='c')
 8 
 9 with tf.compat.v1.Session() as sess:
10     fileWriter = tf.summary.FileWriter("E:/pythonprogram/deepLearning/base/visual/",graph=sess.graph)  
11     print(sess.run(c))

tensorboard显示:

 

 

 

 

posted on 2019-11-13 14:04  Luaser  阅读(373)  评论(0编辑  收藏  举报