是否可以停止机器学习训练并稍后继续?

Is it possible to stop machine learning training and continue it later?

我现在做的是GAN。事实上,我们并不知道 CNN 和 RNN 马上用 GAN 做什么,而且由于计算环境是个人的,我们正在研究“Google Colab”的付费版本。我了解 Google Colab 最多可以使用开发环境 24 小时(不完全是 24 小时)。

因此,机器学习需要一些时间,并且在中间被切断,到目前为止,我一直被迫学习可以在 24 小时内训练的数据集和 epokes,并且突然我想,“我们不能积累训练吗?”

所以我的问题是,例如,如果我用最多 100 个 epokes 进行训练,但只进行了 50 次就被切断了,我不能从 50 次开始进行下一次训练吗?如果我们能做到这一点,那么 Google Colab 可以在 24 小时限制的情况下继续每 24 小时进行一次训练,这样是不是可以进行长时间的训练?我也是这么想的。

这可能吗?

在 PyTorch 或 Tensorflow 等框架中,这非常简单。您可以保存模型的权重,然后稍后恢复这些权重,您所要做的就是创建模型的实例并加载权重。

对于 PyTorch,你基本上是这样做的:

torch.save(model.state_dict(), path_to_save_to)

何时加载保存的权重:

model = ModelClass()

model.load_state_dict(torch.load(path_saved_to)

您可能希望在每个 epoch 之后或每 n 个 epoch 之后或仅在模型性能提升时保存等等。

如果你没有使用任何框架,即使那样也是可能的。您可以将模型权重保存在 Numpy 数组中,然后可以通过多种方式将其保存到 Gdrive。再次需要时,实例化您的模型,而不是随机初始化您的参数,而是将它们设置为您加载的 Numpy 数组。