[翻译4.2-4.3]Chapter 4. Machine Learning Basics

4.2 Saving training checkpoints

当我们从上面开始的时候,训练模型其实是通过多次训练循环来更新模型的参数或者用tensorflow中的术语叫做变量。变量是在内存中存储的,假如在训练了若干小时以后突然的掉电,我们所做的工作将前功尽弃。幸运的是,tf.train.Saver类会将图中的变量以二进制的形式保存下来。我们会定期的将变量保存到checkpoint文件上。如果需要的话,可以从最近的文件中恢复过来。

为了使用saver,我们需要稍微的改变训练的代码结构:

《[翻译4.2-4.3]Chapter 4. Machine Learning Basics》

在上述代码中,我们在打开会话(Session)之前初始化(insatiate)了一个保存者对象(Saver),并且在training loop部分插入了代码,使得每1000步调用一次tf.train.Saver.save方法,并在训练完毕之后再次调用。每次调用的时候都会创建chekpoint文件,并命名为my-model-{step}例如my-model-1000, my-model-2000等等。这些文件中保存着当前循环下的每个变量的值。默认情况下是会只保留最近5次的文件,剩下的会删除。

如果你想要从具体的点(check point)上恢复训练,你可以使用tf.train.get_checkpoint_state方法去验证是否这个chekpoint有效。再使用tf.train.Saver.restore来恢复变量的值。

 

《[翻译4.2-4.3]Chapter 4. Machine Learning Basics》

在上述的代码中,我们会首先检查是否chekpoint是否存在。然后再循环开始之前恢复变量的值。同时我们也会恢复global step number。

现在,我们知道了有监督式学习的通用工作流程,同时也知道了如何存储训练的进度。接下来让我们去探究一下预测模型(inference model).

4.3 Linear regression (线性回归)

线性回归是有监督式学习中最简单的模型。给出一组数据集合作为训练数据,你需要找到一条最佳的线性函数去拟合这些数据。以下的二维数据集合为例,此时的线性函数用一条直线来表示。

《[翻译4.2-4.3]Chapter 4. Machine Learning Basics》

以上回一个二维的线性模型,蓝色的点是训练数据,红色的线是预测(infer)的模型。

来让我们用一点点数学的知识去解释模型是如何工作的。线性函数的公式一般是

《[翻译4.2-4.3]Chapter 4. Machine Learning Basics》

这个公式可以用矩阵(或者是张量tensor)表示:

《[翻译4.2-4.3]Chapter 4. Machine Learning Basics》

其中:

Y是我们想要预测的结果

X1,….Xk是k个相互独立的变量;或者说是预测变量是使用我们的模型预测新值时提供的值。在矩阵形式中,每行一对一提供多个示例。

W1….Wk是模型的参数,是从训练数据中学习出来的。每个“权重(weight)”会交给一个变量对应。

b也是学出的参数,它是线性函数中的常量,通常称为“偏置(bias)”

来让我们用代码表示一下这个模型吧。为了对权重的转置方便,我们简单的定义为一列向量:

《[翻译4.2-4.3]Chapter 4. Machine Learning Basics》

现在,我们有需要去定义loss的计算;针对这个简单的模型,我们使用平方差(squared error)。平方差是将每次不同的预测结果的值。(将在4.3 的时候讲到)

    原文作者:斐波那契的数字
    原文地址: https://www.jianshu.com/p/520512cfaa6a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞