TensorFlow实现模型断点训练,checkpoint模型载入方式

 更新时间:2020年05月26日 10:55:20   作者:Sesen_s  
这篇文章主要介绍了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次。

# 保存模型
saver = tf.train.Saver(max_to_keep=1)
# 开启会话
 
with tf.Session() as sess:
 saver.restore(sess, './log/' + "model_savemodel.cpkt-" + str(111000))
 sess.run(tf.global_variables_initializer())

载入模型后,会继续端点处的变量继续训练,那么是否可以减小剩余的需要的迭代次数?

模型断点训练效果展示:

训练到167000次后,载入模型重新训练。设置迭代次数为10000次,(d_step=1000)。原始设置的迭代的次数为1000000,已经训练了167000次。

Model restored...
Iter:0, D_loss:0.5139875411987305, G_loss:2.8023970127105713
Iter:1000, D_loss:0.4400891065597534, G_loss:2.781547784805298
Iter:2000, D_loss:0.5169454216957092, G_loss:2.58009934425354
Iter:3000, D_loss:0.4507023096084595, G_loss:2.584151268005371
Iter:4000, D_loss:0.5746167898178101, G_loss:2.5365757942199707
Iter:5000, D_loss:0.5288565158843994, G_loss:2.426676034927368
Iter:6000, D_loss:0.549595057964325, G_loss:2.820535659790039
Iter:7000, D_loss:0.32620012760162354, G_loss:2.540236473083496
Iter:8000, D_loss:0.4363398551940918, G_loss:2.5880446434020996
Iter:9000, D_loss:0.569464921951294, G_loss:2.5133447647094727
done!

保存的图片仍然从头开始编号,会覆盖掉之前的图片。

以前对应编号的采样图片为:

若有朋友有高见,还请不吝赐教。

补充知识:tensorflow加载训练好的模型及参数(读取checkpoint)

checkpoint 保存路径

model_path下存有包含多个迭代次数的模型

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模型载入方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python操作Excel数据的封装函数分享

    Python操作Excel数据的封装函数分享

    对比其它编程语言,我们都知道Python最大的优势是代码简单,有丰富的第三方开源库供开发者使用。而对于数据的读取和存储,对于普通人来讲,除了数据库之外,最常见的就是微软的Excel。本文为大家准备了Python操作Excel数据的封装函数,希望对大家有所帮助
    2022-11-11
  • python装饰器设置参数方式

    python装饰器设置参数方式

    这篇文章主要介绍了python装饰器设置参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python工程师必考的6个经典面试题

    Python工程师必考的6个经典面试题

    在本篇文章里小编给大家分享的是一篇关于6个Python工程师必考的面试题,有需要的朋友们可以参考学习下。
    2020-06-06
  • 教你用 Python 发送告警通知到微信的操作过程

    教你用 Python 发送告警通知到微信的操作过程

    大家都知道常见的告警方式有:邮件,电话,短信,微信,今天通过本文给大家介绍下Python 发送告警通知到微信的操作过程,感兴趣的朋友一起看看吧
    2022-01-01
  • python 求10个数的平均数实例

    python 求10个数的平均数实例

    今天小编就为大家分享一篇python 求10个数的平均数实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python 视频逐帧保存为图片的完整实例

    python 视频逐帧保存为图片的完整实例

    今天小编就为大家分享一篇python 视频逐帧保存为图片的完整实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • 一文带你掌握Python中的双下划线写法

    一文带你掌握Python中的双下划线写法

    在 Python 中,双下划线--也被称为“dunder”--是一种用于修饰类属性名称或类方法名称的行为,下面小编就来和大家详细讲讲如何在Python中使用双下划线吧
    2023-10-10
  • Python随机生成均匀分布在三角形内或者任意多边形内的点

    Python随机生成均匀分布在三角形内或者任意多边形内的点

    这篇文章主要为大家详细介绍了Python随机生成均匀分布在三角形内或者任意多边形内的点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Python中一些不为人知的基础技巧总结

    Python中一些不为人知的基础技巧总结

    这篇文章主要给大家总结介绍了Python中一些不为人知的基础技巧,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • python中sys.argv函数精简概括

    python中sys.argv函数精简概括

    本篇文章给大家分享了关于python中sys.argv函数的相关知识点,有兴趣的朋友可以参考学习下。
    2018-07-07

最新评论