python tensorflow常见函数

tf.summary.scalar()

用来显示标量信息,其格式为:

tf.summary.scalar(tags, values, collections=None, name=None)

例如:tf.summary.scalar('mean', mean)

一般在画loss,accuary时会用到这个函数。

 

tf.summary.merge_all()

添加一个操作,代表执行所有summary操作,这样可以避免人工执行每一个summary op。

 

tf.summary.FileWriter

writer = tf.summary.FileWriter(log, session.graph)

指定一个文件用来保存图。
log是事件文件所在的目录,第二个参数是事件文件要记录的图,也就是TensorFlow默认的图。
可以调用其add_summary()方法将训练过程数据保存在filewriter指定的文件中。

tf.summary.scalar('accuracy',acc)                   #生成准确率标量图  
merge_summary = tf.summary.merge_all()  
train_writer = tf.summary.FileWriter(dir,sess.graph)#定义一个写入summary的目标文件,dir为写入文件地址  
......(交叉熵、优化器等定义)  
for step in xrange(training_step):                  #训练循环  
    train_summary = sess.run(merge_summary,feed_dict =  {...})#调用sess.run运行图,生成一步的训练过程数据  
    train_writer.add_summary(train_summary,step)#调用train_writer的add_summary方法将训练过程以及训练步数保存

此时开启tensorborad:

  1. tensorboard --logdir=/summary_dir 

便能看见accuracy曲线了。

 

tf.train.Saver()

tf.train.Saver() 保存和加载模型

saver = tf.train.Saver()

saver.save(sess,  '路径 + 模型文件名'

在创建这个 Saver 对象的时候, max_to_keep 参数表示要保留的最近检查点文件的最大数量,创建新文件时,将删除旧文件,默认为 5(即保留最近的 5 个检查点文件),max_to_keep=5。

import tensorflow as tf
import os
import numpy as np
 
a = tf.Variable(1., tf.float32)
b = tf.Variable(2., tf.float32)
num = 10
 
model_save_path = './model/'
model_name = 'model'
 
saver = tf.train.Saver()
 
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()
    sess.run(init_op)
    for step in np.arange(num):
        c = sess.run(tf.add(a, b))
        #checkpoint_path = os.path.join(model_save_path, model_name)
        # 默认最多同时存放 5 个模型
        saver.save(sess, os.path.join(model_save_path, model_name), global_step=step)

 

tf.trainable_variables(), tf.all_variables(), tf.global_variables()查看变量

tf.trainable_variables()

这个函数可以也仅可以查看可训练的变量,

tf.global_variables()

如果希望查看全部变量,包括学习率等信息,可以通过tf.global_variables()来实现。

tf.all_variables()

与tf.global_variables()作用拥有相似的功能,只是版本问题

 

tf.global_variables_initializer()与tf.local_variables_initializer()的区别

tf.global_variables_initializer()

tf.global_variables_initializer()添加节点用于初始化全局变量(GraphKeys.GLOBAL_VARIABLES)。返回一个初始化所有全局变量的操作(Op)。在你构建完整个模型并在会话中加载模型后,运行这个节点。

能够将所有的变量一步到位的初始化,非常的方便。通过feed_dict, 你也可以将指定的列表传递给它,只初始化列表中的变量。

示例代码如下:

sess.run(tf.global_variables_initializer(), 
feed_dict={
        learning_rate_dis: learning_rate_val_dis,
        adam_beta1_d_tf: adam_beta1_d,
        learning_rate_proj: learning_rate_val_proj,
        lambda_ratio_tf: lambda_ratio,
        lambda_l2_tf: lambda_l2,
        lambda_latent_tf: lambda_latent,
        lambda_img_tf: lambda_img,
        lambda_de_tf: lambda_de,
        adam_beta1_g_tf: adam_beta1_g,
        }) 
# learning_rate_dis为设置的变量,learning_rate_val_dis为我设置的具体的值。后续同理

tf.local_variables_initializer()

tf.local_variables_initializer()返回一个初始化所有局部变量的操作(Op)。初始化局部变量(GraphKeys.LOCAL_VARIABLE)。GraphKeys.LOCAL_VARIABLE中的变量指的是被添加入图中,但是未被储存的变量。关于储存,请了解tf.train.Saver相关内容。

示例代码如下:

sess.run(tf.local_variables_initializer(), 
feed_dict={
        learning_rate_dis: learning_rate_val_dis,
        adam_beta1_d_tf: adam_beta1_d,
        learning_rate_proj: learning_rate_val_proj,
        lambda_ratio_tf: lambda_ratio,
        lambda_l2_tf: lambda_l2,
        lambda_latent_tf: lambda_latent,
        lambda_img_tf: lambda_img,
        lambda_de_tf: lambda_de,
        adam_beta1_g_tf: adam_beta1_g,
        })
# learning_rate_dis为设置的变量,learning_rate_val_dis为我设置的具体的值。后续同理

 

posted @ 2020-11-23 16:52  r1-12king  阅读(310)  评论(0编辑  收藏  举报