一、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)