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:
- 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为我设置的具体的值。后续同理