tensorflow学习笔记

本文详细介绍了TensorFlow中模型的保存与恢复方法,包括使用saved_model、Saver(.ckpt)、summary以及如何在多线程环境中管理Graph。同时,讲解了训练过程中的全局步数、梯度计算及应用,以及模型的加载与预测操作。还提到了一些常用API,如tf.nn.xw_plus_b、tf.greater和tf.argmax。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、saved model(tf.saved_model)

a. builder = tf.saved_model.builder.SavedModelBuilder(export_dir):

创建一个保存模型的实例对象

b. tf.saved_model.utils.build_tensor_info(tensor):

构建TensorInfo protobuf,根据输入的tensor构建相应的protobuf,返回的tensorinfo中包含输入tensor的name,shape,dtype信息。

c. tf.saved_model.signature_def_utils.build_signature_def:

构建 SignatureDef protobuf,并返回 SignatureDef protobuf

d. tf.saved_model.utils.get_tensor_from_tensor_info:

根据一个 TensorInfo protobuf 解析出一个 tensor

e. builder.add_meta_graph_and_variables(sess, tags:

保存会话对象中的graph和所有变量

f. builder.save():将内建的savedModel protobuf写入磁盘

二、Saver(.ckpt文件的保存和加载)

a. saver= tf.train.Saver(max_to_keep=5 ):保存和加载模型,max_to_keep参数表示要保留的最近检查文件的最大数量,创建新文件时,将删除旧文件

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

c. tf.train.import_meta_graph:

          saver=tf.train.import_meta_graph('model1/my-model-190.meta')  #恢复计算图结构

d. saver.restore:

         saver.restore(sess, tf.train.latest_checkpoint("model/"))  #恢复所有变量信息

三、summary

a. tf.summary.histogram

b. tf.summary.scalar

c. tf.summary.merge_all

d. tf.summary.FileWriter

四、tf.Graph()

tf.Graph()表示实例化了一个类,一个用于tensorflow计算和表示用的数据流图,通俗来讲就是:在代码中添加的操作和数据都是画在纸上的"画",而图就是呈现这些画的纸,你可以利用很多线程生成很多张图,但是默认图就只有一张。

tf.Graph().as_default()表示将这个类实例,也就是新生成的图作为整个tensorflow运行环境的默认图,如果只有一个主线程不写也没有关系,tensorflow里面已经存好了一张默认图,可以使用tf.get_default_graph()来调用(显示这张默认纸),当你有多个线程就可以创造多个tf.Graph(),就是你可以有一个画图本,有很多张图纸,这时候就会有一个默认图的概念了。

五、tf.Session()和tf.Session().as_default()的区别

tf.Session():创建一个会话,当上下文管理器退出时会话功能关闭和资源释放自动完成。

tf.Session().as_default():创建一个默认会话,当上下文管理器退出时会话没有关闭,还可以通过调用会话进行run()和eval()操作

with tf.Graph().as_default():

        with tf.Session().as_default() as sess:

 

六、

globalStep = tf.Variable(0, name="globalStep", trainable=False)
 optimizer = tf.train.AdamOptimizer(config.training.learningRate) # 定义优化函数,传入学习速率参数
 gradsAndVars = optimizer.compute_gradients(lstm.loss) # 计算梯度,得到梯度和变量
 trainOp = optimizer.apply_gradients(gradsAndVars, global_step=globalStep) # 将梯度应用到变量下,生成训练器

currentStep = tf.train.global_step(sess, globalStep) 

七、

#载入模型 

checkpoint_file = tf.train.latest_checkpoint("../model/Bi-LSTM/model/")
  saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file))
  saver.restore(sess, checkpoint_file)

#模型的输入tensor

 inputX = graph.get_operation_by_name("inputX").outputs[0]
 dropoutKeepProb = graph.get_operation_by_name("dropoutKeepProb").outputs[0]

#模型的输出tensor

predictions = graph.get_tensor_by_name("output/predictions:0")

#模型预测
pred = sess.run(predictions, feed_dict={inputX: [xIds], dropoutKeepProb: 1.0})[0]

 

八、API

1)tf.nn.xw_plus_b:计算matmul(x, weights) + biases

2)tf.greater
判断函数。首先张量x和张量y的尺寸要相同,输出的tf.greater(x, y)也是一个和x,y尺寸相同的张量。如果x的某个元素比y中对应位置的元素大,则tf.greater(x, y)对应位置返回True,否则返回False。与此类似的函数还有tf.greater_equal。
3) tf.argmax:用途:返回最大的那个数值所在的下标

4)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值