用Tensorflow搭建神经网络14:检查点训练机制

由于大型神经网络的训练往往耗费很长的时间,可能会因为机器损坏、断电或系统崩溃等各种因素无法一次性完成模型训练而导致前面所有的训练功亏一篑。本次来介绍一种检查点机制,在训练过程中保存更新的权值到检查点文件,而再次训练时恢复检查点文件中的权值数据,继续训练模型。这样能有效的防止上述情况的发生。

首先用ipython notebook打开上一次的代码,并找到get_sart函数,在with tf.Session() as sess:后面插入一行:saver = tf.train.Saver()新建一个saver对象用于保存训练过程中的权值信息。然后再往下找到if i % 2 == 0: 插入一行:saver.save(sess,'my-model', global_step=i)表示每训练两步就将当前的会话信息(包括当前步骤的权值和偏置项)存入本地检查点文件my-model-i中,例如第二步就是my-model-2,第四步就是my-model-4等。下面来调用get_sart函数看结果:

这一次训练完前20步,我们认为中断训练过程,模拟上述的意外情况发生。来看一下saver对象保存的检查点文件,当不指定保存路径时默认存在当前目录下,即代码文件所在的目录,如下:

上图只显示了从my-model-12到20这5个文件,因为saver默认保存最后5步的检查点文件。接下来要实现接着第20步的训练结果继续训练余下的10步,下面给出完整的get_sart函数代码:

这里可以看出model_checkpoint_path是上次训练的最后一步检查点文件路径。

然后用if检查一下ckpt变量是否存在,如果存在则用saver.restore(sess, ckpt.model_checkpoint_path)恢复上次训练最后一步迭代的权值数据,保证了本次训练能够接着上次开始。接着更新initial_step把它重置为上次的最后一步。如果ckpt不存在,比如第一次训练时,才需要初始化所有变量,注意:如果在restore载入权值数据之前进行变量初始化将会报错。rsplit函数返回的是一个列表:

接下来开始训练模型,仍然每隔两步保存检查点文件,最后训练结果如下:

第二次仍然在当前目录生成了最后5步的检查点文件:

如上,tensorflow载入的参数信息来自my-model-20这个文件,并接着第20步完成了模型训练。本文只更新了get_start函数,其他函数代码与上一节相同。

本文来自企鹅号 - 挖挖机ML媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏海天一树

用Tensorflow实现卷积神经网络CNN

一、数据准备 实验数据使用MNIST数据集。 MNIST 数据集已经是一个被”嚼烂”了的数据集, 很多教程都会对它”下手”, 几乎成为一个 “典范”。 在很多t...

57680
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装和使用TensorFlow

TensorFlow是一款由Google构建的用于训练神经网络的开源机器学习软件。TensorFlow的神经网络以有状态数据流图的形式表示。图中的每个节点表示神...

24680
来自专栏wOw的Android小站

[Tensorflow] 使用SSD-MobileNet训练模型

因为Android Demo里的模型是已经训练好的,模型保存的label都是固定的,所以我们在使用的时候会发现还有很多东西它识别不出来。那么我们就需要用它来训练...

6.8K20
来自专栏用户2442861的专栏

Caffe学习系列(23):如何将别人训练好的model用到自己的数据上

http://www.cnblogs.com/denny402/p/5137534.html

15910
来自专栏SeanCheney的专栏

《Scikit-Learn与TensorFlow机器学习实用指南》 第12章 设备和服务器上的分布式 TensorFlow

在第 11 章,我们讨论了几种可以明显加速训练的技术:更好的权重初始化,批量标准化,复杂的优化器等等。 但是,即使采用了所有这些技术,在具有单个 CPU 的单台...

11510
来自专栏AI研习社

将 TensorFlow 训练好的模型迁移到 Android APP上(TensorFlowLite)

最近在做一个数字手势识别的APP(关于这个项目,我会再写一篇博客仔细介绍,博客地址:一步步做一个数字手势识别APP,源代码已经开源在github上,地址:Chi...

46530
来自专栏AI深度学习求索

如何利用多张图片生成一张会自己动的gif图片?

看一下比较形象的卷积神经网络原理的图片和卷积操作原理的图片,显然,gif图片十分生动形象。然我们看一下如何自己制作gif图片吧,学会了可以自己制作表情包哦~

54730
来自专栏用户2442861的专栏

Caffe学习系列(12):训练和测试自己的图片

学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中。因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个...

13110
来自专栏人人都是极客

2.运行一个demo

在 Object Detection API 的示例代码中包含了一个训练识别宠物的 Demo,包括数据集和相应的一些代码。虽然本课程中我们会自己准备数据和脚本来...

40560
来自专栏debugeeker的专栏

《coredump问题原理探究》windows版5.3节结构体

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuzhina/article/detai...

9120

扫码关注云+社区

领取腾讯云代金券