上QQ阅读APP看书,第一时间看更新
2.7 停止训练
到目前为止在每种情况下,我们都固定了训练的回合数。虽然这可行,但我们可能想要一直训练直到达到所需的准确率为止。因此,举例来说,如果我们想训练直到模型在训练集上达到95%的准确率而不知道这需要多少回合数,要怎么做呢?
最简单的方法是在训练中使用一个回调函数。我们来看看更新后使用回调函数的代码:
让我们看看做了什么改动。首先,我们创建了一个名为myCallback
的新类。它需要一个tf.keras.callbacks.Callback
作为参数。在它里面我们定义了on_epoch_end
函数,该函数将为我们提供有这个回合的记录的详细信息。在这些记录里有一个准确率值,所以我们要做的就是看看它是否大于0.95(或95%)。如果是,我们可以通过self.model.stop_training=True
来停止训练。
当我们指定了它,就创建了一个callbacks
对象作为myCallback
函数的实例。
现在来查看model.fit
语句。你会看到我已经更新了它来训练50个回合,然后添加一个callbacks
参数。为此,我传递了这个callbacks
对象。
训练时,回调函数将在每个回合结束后被调用。因此,每个回合结束后,你将检查准确率,并且大约34个回合后,你将会看到训练将结束,因为训练已经达到95%的准确率(由于开始的随机初始化,你的数字也许略有不同,但是它可能会很接近34):