gpt4 book ai didi

python - Keras - 没有停止和恢复训练的好方法?

转载 作者:行者123 更新时间:2023-12-03 16:01:39 25 4
gpt4 key购买 nike

经过大量研究,似乎没有很好的方法可以使用 Tensorflow 2/Keras 模型正确停止和恢复训练。无论您使用的是 model.fit(),都是如此。或使用自定义训练循环。
似乎有 2 种受支持的方法可以在训练时保存模型:

  • 只保存模型的权重,使用 model.save_weights()save_weights_only=Truetf.keras.callbacks.ModelCheckpoint .这似乎是我见过的大多数示例的首选,但是它有许多主要问题:
  • 优化器状态未保存,这意味着训练恢复将不正确。
  • 学习率计划被重置——这对某些模型来说可能是灾难性的。
  • Tensorboard 日志回到第 0 步 - 除非实现复杂的变通办法,否则日志基本上是无用的。

  • 使用 model.save() 保存整个模型、优化器等或 save_weights_only=False .优化器状态已保存(良好),但仍存在以下问题:
  • Tensorboard 日志仍然回到第 0 步
  • 学习率计划仍然重置(!!!)
  • 无法使用自定义指标。
  • 这在使用自定义训练循环时根本不起作用 - 自定义训练循环使用非编译模型,并且似乎不支持保存/加载非编译模型。


  • 我发现的最佳解决方法是使用自定义训练循环,手动保存步骤。这修复了张量板日志记录,并且可以通过执行类似 keras.backend.set_value(model.optimizer.iterations, step) 的操作来修复学习率计划。 .但是,由于完整的模型保存不在表中,因此不会保留优化器状态。我看不出有办法独立保存优化器的状态,至少不需要做很多工作。像我所做的那样弄乱 LR 时间表也感觉很困惑。
    我错过了什么吗?人们如何使用此 API 保存/恢复?

    最佳答案

    你是对的,没有对可恢复性的内置支持——这正是促使我创建 DeepTrain 的原因。 .这就像 TensorFlow/Keras 的 Pytorch Lightning(在不同方面越来越好)。
    为什么是另一个图书馆?我们还不够吗? 你没有这样的东西;如果有,我不会 build 它。 DeepTrain 专为“保姆式”训练量身定制:训练更少的模型,但要彻底训练它们。密切监控每个阶段以诊断问题所在以及如何修复。
    灵感来自我自己的使用;我会在整个漫长的时期中看到“验证峰值”,并且无法暂停,因为它会重新启动时期或以其他方式破坏火车循环。忘记知道你适合哪一批,或者剩下多少。
    它与 Pytorch Lightning 相比如何? 卓越的可恢复性和内省(introspection)性,以及独特的火车调试实用程序——但闪电在其他方面表现更好。我在工作中有一个全面的列表比较,将在一周内发布。
    Pytorch 支持即将到来? 也许。如果我说服 Lightning 开发团队弥补其相对于 DeepTrain 的缺点,那么不会——否则可能。同时,您可以浏览 Examples 的图库.

    最小示例 :

    from tensorflow.keras.layers import Input, Dense
    from tensorflow.keras.models import Model
    from deeptrain import TrainGenerator, DataGenerator

    ipt = Input((16,))
    out = Dense(10, 'softmax')(ipt)
    model = Model(ipt, out)
    model.compile('adam', 'categorical_crossentropy')

    dg = DataGenerator(data_path="data/train", labels_path="data/train/labels.npy")
    vdg = DataGenerator(data_path="data/val", labels_path="data/val/labels.npy")
    tg = TrainGenerator(model, dg, vdg, epochs=3, logs_dir="logs/")

    tg.train()
    您可以 KeyboardInterrupt随时检查模型、训练状态、数据生成器 - 并恢复。

    关于python - Keras - 没有停止和恢复训练的好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63775936/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com