TensorFlow实现模型断点训练,checkpoint模型载入方式
深度学习中,模型训练一般都需要很长的时间,由于很多原因,导致模型中断训练,下面介绍继续断点训练的方法。
方法一:载入模型时,不必指定迭代次数,一般默认最新
# 保存模型 saver = tf.train.Saver(max_to_keep=1) # 最多保留最新的模型 # 开启会话 with tf.Session() as sess: # saver.restore(sess, './log/' + "model_savemodel.cpkt-" + str(20000)) sess.run(tf.global_variables_initializer()) ckpt = tf.train.get_checkpoint_state('./log/') # 注意此处是checkpoint存在的目录,千万不要写成‘./log' if ckpt and ckpt.model_checkpoint_path: saver.restore(sess,ckpt.model_checkpoint_path) # 自动恢复model_checkpoint_path保存模型一般是最新 print("Model restored...") else: print('No Model')
方法二:载入时,指定想要载入模型的迭代次数
需要到Log文件夹中,查看当前迭代的次数,如下:此时为111000次。
以前对应编号的采样图片为:
1.获取最新保存的模型
即上图中的model-9400
import tensorflow as tf graph=tf.get_default_graph() # 获取当前图 sess=tf.Session() sess.run(tf.global_variables_initializer()) checkpoint_file=tf.train.latest_checkpoint(model_path) saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file)) saver.restore(sess,checkpoint_file)
2.获取某个迭代次数的模型
比如上图中的model-9200
import tensorflow as tf graph=tf.get_default_graph() # 获取当前图 sess=tf.Session() sess.run(tf.global_variables_initializer()) checkpoint_file=os.path.join(model_path,'model-9200') saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file)) saver.restore(sess,checkpoint_file)
获取变量值
## 得到当前图中所有变量的名称 tensor_name_list=[tensor.name for tensor in graph.as_graph_def().node] # 查看所有变量 print(tensor_name_list) # 获取input_x和input_y的变量值 input_x = graph.get_operation_by_name("input_x").outputs[0] input_y = graph.get_operation_by_name("input_y").outputs[0]
以上这篇TensorFlow实现模型断点训练,checkpoint模型载入方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持来客网。