深度学习中,模型训练一般都需要很长的时间,由于很多原因,导致模型中断训练,下面介绍继续断点训练的方法。
方法一:载入模型时,不必指定迭代次数,一般默认最新
# 保存模型 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模型载入方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“TensorFlow实现模型断点训练,checkpoint模型载入方式”评论...
更新日志
2024年11月08日
2024年11月08日
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]