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

作者:Sesen_s 时间:2022-01-19 22:32:12 

深度学习中,模型训练一般都需要很长的时间,由于很多原因,导致模型中断训练,下面介绍继续断点训练的方法。

方法一:载入模型时,不必指定迭代次数,一般默认最新


# 保存模型
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次。

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


# 保存模型
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模型载入方式

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

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

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

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

checkpoint 保存路径

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

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

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]

来源:https://blog.csdn.net/weixin_40546602/article/details/81410251

标签:TensorFlow,断点,checkpoint,载入
0
投稿

猜你喜欢

  • mysql中格式化数字详解

    2024-01-23 16:44:07
  • 《悟透JavaScript》之 甘露模型

    2008-06-09 14:03:00
  • asp 获取url函数小结

    2011-03-17 10:38:00
  • python实现将一维列表转换为多维列表(numpy+reshape)

    2021-04-22 03:06:30
  • python使用openpyxl操作excel的方法步骤

    2022-09-30 20:59:24
  • Python:Scrapy框架中Item Pipeline组件使用详解

    2021-04-18 22:22:47
  • webpack 打包压缩js和css的方法示例

    2023-07-02 05:18:32
  • pandas 读取各种格式文件的方法

    2023-12-14 22:08:59
  • Python如何把字典写入到CSV文件的方法示例

    2021-04-02 08:27:52
  • 使用Webpack构建多页面程序的实现步骤

    2024-04-23 09:06:27
  • Python实现的字典值比较功能示例

    2022-06-29 03:40:41
  • Python如何读取、写入JSON数据

    2021-10-26 18:28:19
  • Python实现截屏的函数

    2022-03-12 01:46:53
  • SqlServer 2005 中字符函数的应用

    2024-01-16 09:01:32
  • Python字符串转换成浮点数函数分享

    2022-10-04 01:04:37
  • 用Python中的字典来处理索引统计的方法

    2022-05-28 19:43:45
  • SQL Server的复制功能

    2024-01-16 19:40:27
  • ACCESS转SQL Server2000需要注意的问题

    2007-11-18 15:25:00
  • Python常用库大全及简要说明

    2023-06-10 00:35:49
  • 在OneProxy的基础上实行MySQL读写分离与负载均衡

    2024-01-12 22:54:28
  • asp之家 网络编程 m.aspxhome.com