当前位置: 首页 > 知识库问答 >
问题:

Keras/Tensorflow中不同时代之间的训练率如何变化

松骏俊
2023-03-14

当使用其中一个自适应优化器(Adam等)时,我们希望在EPHO内的训练期间改变连续小批量的学习速率。但我想知道在连续的历代之间,学习率会如何变化——是从上一个历代(预期行为)继续,还是从默认值初始化?

当然,术语“速率”指的是特定优化器用来确定实际权重的全部变量(更新wrt梯度)

如果我运行N个时代的训练,速度会发生什么,停下来,然后继续这样:

model.fit(data1_train_x,data1_train_y, \

          initial_epoch=0, \
          epochs=20, \             

          validation_split=0.1,\
          batch_size=64, \
          callbacks=[tensorboard])

model.fit(data2_train_x,data2_train_y, \

          initial_epoch=20, \
          epochs=40, \

          validation_split=0.1,\
          batch_size=64, \              
          callbacks=[tensorboard])

我想我会创建回调来记录每个历元后的速率并绘制它,但在我这样做之前,可能有人已经知道了答案。

共有1个答案

闻安宜
2023-03-14

小结

利率变化不会重置;在这两种情况下,它们在不同时期都能顺利进行。

细节

自迭代0以来,任何表现良好的学习率衰减函数都取决于训练的长度。

注:您可以编写自己的衰减函数;你可以随心所欲地把它弄得乱七八糟。一个这样的改变是

alpha = iteration_number

在你拿着咖啡回来之前,这会产生分歧。

有些函数仅依赖于当前状态和修饰符,例如

if iteration_number % 5000 == 0:
    alpha *= 0.9

另一个由半指数衰减组成,取决于剩余迭代的数量。

在任何情况下,这些都不会在每个历元开始时重置。如果你愿意,你可以写一个来重置,但我不推荐

您的两阶段示例也不例外,因为您已经正确地对其进行了编码:第二个训练段从上一个训练段结束的地方开始。这里的关键线索是initial_epoch参数:您告诉拟合函数从何处开始学习速率,而不是重置为时间零。

 类似资料:
  • 在keras中。应用程序中,有一个VGG16模型在imagenet上预先培训过。 该模型具有以下结构。 我想用密集层(fc1、fc2和预测)之间的缺失层微调此模型,同时保持模型的所有预训练权重不变。我知道可以使用

  • /usr/local/lib/python3.6/dist-packages/keras/backend/tensorflow_backend.py:174:不推荐使用名称tf.get_default_session。请改用tf.compat.v1.get_default_session。 /usr/local/lib/python3.6/dist-packages/keras/backend/t

  • 问题内容: 因此,我一直遵循Google的官方tensorflow指南,并尝试使用Keras构建一个简单的神经网络。但是,在训练模型时,它不使用整个数据集(具有60000个条目),而是仅使用1875个条目进行训练。有可能解决吗? 输出: 这是我一直在为此工作的原始Google colab笔记本:https ://colab.research.google.com/drive/1NdtzXHEpiN

  • 本文向大家介绍如何使用Tensorflow训练'Word2Vec'算法?,包括了如何使用Tensorflow训练'Word2Vec'算法?的使用技巧和注意事项,需要的朋友参考一下 Tensorflow是Google提供的一种机器学习框架。它是一个开放源代码框架,与Python结合使用以实现算法,深度学习应用程序等等。它用于研究和生产目的。它具有优化技术,可帮助快速执行复杂的数学运算。 这是因为它使

  • 本文向大家介绍tensorflow如何继续训练之前保存的模型实例,包括了tensorflow如何继续训练之前保存的模型实例的使用技巧和注意事项,需要的朋友参考一下 一:需重定义神经网络继续训练的方法 1.训练代码 第一次训练截图: 2.恢复上一次的训练 使用上次保存下的数据进行继续训练和保存: #最后要提一下的是: checkpoint文件 meta保存了TensorFlow计算图的结构信息 da

  • 问题内容: 我想知道是否有可能保存经过部分训练的Keras模型并在再次加载模型后继续进行训练。 这样做的原因是,将来我将拥有更多的训练数据,并且我不想再次对整个模型进行训练。 我正在使用的功能是: 编辑1:添加了完全正常的示例 对于10个纪元后的第一个数据集,最后一个纪元的损失将为0.0748,精度为0.9863。 保存,删除和重新加载模型后,第二个数据集上训练的模型的损失和准确性分别为0.171

  • 问题内容: 我有一个训练了40个时代的模型。我为每个纪元保留了检查点,并且还用保存了模型。培训代码为: 但是,当我加载模型并尝试再次对其进行训练时,它会像以前从未进行过训练一样从头开始。损失不是从上一次训练开始的。 使我感到困惑的是,当我加载模型并重新定义模型结构并使用时,效果很好。因此,我相信模型权重已加载: 但是,当我继续进行此训练时,损失与初始阶段一样高: 我在这里和这里搜索并找到了一些保存

  • 问题内容: 我一直在尝试使用Google发布的经过预先训练的inception_resnet_v2模型。我正在使用他们的模型定义(https://github.com/tensorflow/models/blob/master/slim/nets/inception_resnet_v2.py)和给定的检查点(http://download.tensorflow.org/models/incepti