<强> 1。储蓄者的背景介绍强>
我们经常在训练完一个模型之后希望保存训练的结果,这些结果指的是模型的参数,以便下次迭代的训练或者用作测试.Tensorflow针对这一需求提供了储蓄者类。
保护类提供了向检查站文件保存和从检查站文件中恢复变量的相关方法.Checkpoints文件是一个二进制文件,它把变量名映射到对应的张量值。
只要提供一个计数器,当计数器触发时,保护类可以自动的生成检查点文件。这让我们可以在训练过程中保存多个中间结果,例如,我们可以保存每一步训练的结果。
为了避免填满整个磁盘,储蓄者可以自动的管理检查站文件,例如,我们可以指定保存最近的N个检查站文件。
<强> 2。储蓄者的实例强>
下面以一个例子来讲述如何使用保护类,
进口tensorflow特遣部队 进口numpy np x=tf.placeholder (tf。float32、形状=[没有,1]) y=x + 4 * 4 w=tf.Variable (tf。random_normal ([1], 1,1)) b=tf.Variable (tf.zeros ([1])) y_predict=w * x + b 损失=tf.reduce_mean (tf。平方(y - y_predict)) 优化器=tf.train.GradientDescentOptimizer (0.5) 火车=optimizer.minimize(亏损) isTrain=False train_steps=100 checkpoint_steps=50 checkpoint_dir=" 储蓄者=tf.train.Saver() #默认为拯救所有的变量——在这种情况下,w和b x_data=https://www.yisu.com/zixun/np.reshape (np.random.rand (10) .astype (np.float32), (10,1)) 与tf.Session税(): sess.run (tf.initialize_all_variables ()) 如果isTrain: 因为我在xrange (train_steps): sess.run(火车,feed_dict={x: x_data}) 如果(i + 1) % checkpoint_steps==0: 储蓄者。保存(税,checkpoint_dir +”模型。ckpt’, global_step=i + 1) 其他: ckpt=tf.train.get_checkpoint_state (checkpoint_dir) 如果ckpt和ckpt.model_checkpoint_path: 储蓄者。ckpt.model_checkpoint_path恢复(税) 其他: 通过 print (sess.run (w)) 打印(sess.run (b)
-
<李> isTrain:用来区分训练阶段和测试阶段,真表示训练,假表示测试李>
<李> train_steps:表示训练的次数,例子中使用100李>
<李> checkpoint_steps:表示训练多少次保存一下检查点,例子中使用50 李>
<李> checkpoint_dir:表示检查站文件的保存路径,例子中使用当前路径李>
2.1训练阶段
使用Saver.save()方法保存模型:
-
<李>税:表示当前会话,当前会话记录了当前的变量值李>
<李> checkpoint_dir +“model.ckpt”:表示存储的文件名李>
<李> global_step:表示当前是第几步李>
训练完成后,当前目录底下会多出5个文件。
打开名为“检查点”的文件,可以看到保存记录,和最新的模型存储位置。
2.1测试阶段
测试阶段使用saver.restore()方法恢复变量:
税:表示当前会话,之前保存的结果将被加载入这个会话
ckpt。model_checkpoint_path:表示模型存储的位置,不需要提供模型的名字,它会去查看检查点文件,看看最新的是谁,叫做什么。
运行结果如下图所示,加载了之前训练的参数w和b的结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。