问题标签 [resuming-training]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 恢复 pytorch 模型训练会引发错误“CUDA out of memory”
我的目标是在每个时期都保存模型,因为我必须在夜间停止训练并且我不想失去进度。
在我训练我的模型 1 个纪元后,我通过终端使用 CTRL+Z 中断了该过程。
当我尝试恢复培训时,出现此错误
管理一切的代码就是这个
损失似乎有问题,但我不明白问题是什么。
编辑1:
我对模型进行了 2 个 epoch 的无错误训练,然后中断了该过程。
我还杀死了留在 gpu 内存中的进程。
在我尝试恢复在epoch 1和epoch 2保存的模型后,我得到了相同的 cuda 错误,但在代码的不同部分
此外,我尝试在epoch 1和epoch 2测试保存的模型并收到此错误
也许我没有按预期保存状态?
奇怪的是,在添加恢复训练代码之前,我只是在每个 epoch 保存模型torch.save(model.state_dict(), save_full_path_torch)
:我设法在 10 个 epoch 中训练了模型,它在测试期间仍然有效。
python - 在经过固定次数的迭代后进行训练时,有什么方法可以备份 YOLOv5 中的权重?
我想在训练 YOLOv5 时备份权重,这样如果训练由于某种原因停止,我不必像在 yolov3 中那样重新开始,您可以提及每 100 次迭代后备份权重的文件夹
tensorflow - DeblurGAN 不能再加载自己的权重了
嘿,我真的需要一些帮助 =)
首先,对不起,它太长了^^,但我希望你最后不需要完整的代码。
我编写了一个用于去模糊的 GAN。现在我正在训练它。前 71 个 epoch 的训练没有任何问题:我训练了一些 epoch,直到达到 colab GPU 时间限制,第二天我将权重加载到 gan 中并继续训练。2 或 3 周前,我想在我的 Gan 中加载 epoch 71 的权重,但收到以下错误(我很确定我没有更改代码中的任何内容)。从这一刻起,我只能加载前 65 个权重,并且对于高于 65 的每个时期,我都会得到相同的错误:
我一直在寻找解决方案,但没有找到真正的解决方案。但我发现,如果我之后用旧权重之一(1-65)训练一个时期,我可以加载新权重之一。所以我认为我可以使用这个“解决方法”,但昨天我绘制了每个时期的测试数据集指标的分数。我收到了这张照片: psnrscore/epoch 正如你所看到的,它看起来像我从 65 时代开始生产垃圾(在 60 年以来的图片上,因为我失去了前 5 个时代,所以它从 6 开始)
我真的很沮丧,希望有人可以帮助我=D
这是 GAN 的完整代码:
tensorflow - 加载的 keras 模型无法继续训练,尺寸不匹配
我正在使用带有 keras 的 tensorflow 来使用 google colabs 训练到 char-RNN。我将模型训练 10 个 epoch 并保存它,使用“model.save()”,如保存模型的文档中所示。紧接着,我再次加载它只是为了检查,我尝试在加载的模型上调用 model.fit() 并使用完全相同的训练集得到“尺寸必须相等”错误。训练数据位于分批组织的 tensorflow 数据集中,如tf datasets 的文档中所示。这是一个最小的工作示例:
第一个训练行“model.fit()”运行良好,但最后一行返回错误:
ValueError:尺寸必须相等,但对于输入形状为 [20]、[20,150] 的“{{node Equal}} = Equal[T=DT_INT64, incompatible_shape_error=true](ArgMax, ArgMax_1)”,尺寸必须是 20 和 150。
我希望以后能够恢复训练,因为我的真实数据集要大得多。因此,仅保存权重并不是一个理想的选择。
有什么建议吗?谢谢!
python - 在预训练的 tensorflow 对象检测 api 模型中改进一个类
我试图在预训练的 tf 对象检测 API 模型 ( efficientdet_d0_coco17_tpu-32
) 中改进手机移动类。
我已经收集了训练数据并创建tfrecords
了label_map.pbtext
如下所示的位置:
并更新pipeline.config
如下:
在我尝试推断新模型的训练后,我总是得到1作为detection_classes
.
知道我做错了什么吗?还是在这里无法继续学习?
python - 重新编译是否会重置模型的权重?
查看 Daniel Möller 对这个问题的回答,我了解到重新编译经过训练的模型不应影响/更改已训练的权重。然而,每当我重新编译我的模型以使用不同的学习率或批量大小来进一步训练它时,val_mse
开始时的值会比初始训练结束时的值更高/更差。
虽然最终会降低到val_mse
之前的水平,但我不确定通过重新编译模型是否只是在重置模型并重新训练。
有人可以确认重新编译是否真的会从头开始重新开始学习过程吗?另外,在模型的初始训练之后使用不同的超参数进行第二阶段的训练是否是一种常见的做法(或者是否有好处)?
yolo - 如何恢复 Yolov3 训练?
我是深度学习的新手,我有一个 yolov3 模型,我一直在用我的自定义数据进行训练。每次训练,训练似乎都是从零开始。如何让模型从上次停止的地方继续训练?我的设置与此 repo相同。
object-detection-api - 从保存的检查点恢复训练的 TF2 对象检测 API 问题
我面临一个似乎在一夜之间发生的 TF2 对象检测 API 问题。我正在尝试从保存的检查点恢复训练,并且像往常一样,我将配置文件中的路径更改为检查点所在的位置,然后再恢复训练,这一直有效。
今天它抛出了这个错误(见下文)。由于某种原因,检查点目录和模型目录不能相同。现在,最大的问题是,如果我更改模型目录,它会从零开始训练,而不是从上一个 epoch 开始,所以我被卡住了。这只发生在 TF2 中,我也尝试过 TF1 并且工作正常。
文件“/usr/local/lib/python3.7/dist-packages/object_detection/utils/variables_helper.py”,第 230 行,在 ensure_checkpoint_supported ('请将 model_dir 设置为不同的路径。'))) RuntimeError: Checkpoint dir ( /content/drive/MyDrive/Object_detection/training) 和 model_dir (/content/drive/MyDrive/Object_detection/training) 不能相同。请将 model_dir 设置为不同的路径。
python - 为什么第二次编译后loss会飙升?
我目前正在开展一个项目,该项目需要我在使用 Tensorflow 进行训练期间更改模型架构的一半。添加了新的权重,并删除了其他权重。该模型需要重新编译,以便优化器识别新的权重并为它们计算梯度。
但是我注意到,在编译网络后,损失仅在再次下降后才飙升(见此处)在编译后的第一步中,损失仍然与以前一样低,但它会迅速增加。 这个问题与我的类似,但只说你应该
使用来自先前训练的列表(手动或从 Callback 获得)初始化第二次训练验证准确度。
但我找不到任何关于如何做到这一点的资源。我的尝试包括:
- 使用 SGD 代替 Adam,因为它不应该依赖于之前的状态
model.fit()
添加上一次通话的历史记录- 设置
model._train_counter
为在上一次调用中执行的 epoch 数 - 以上所有结合
我使用来自https://www.tensorflow.org/datasets/keras_example的修改示例重新创建了问题,并增加了网络复杂性,因为尖峰的高度似乎随着网络规模的增加而增加:
这是结果图。在此示例中,我没有更改网络,而是使用不同的优化器进行编译,无论您选择哪种组合,我都测试了损失峰值。(如果您在不更改模型的情况下使用 model.optimizer 进行编译,损失不会增加,这让我觉得我必须更改优化器。但是 SGD 也不起作用,这让我感到困惑)
model.fit()
这与使用另一个调用恢复后恢复模型训练的问题相同。
我正在使用 TensorFlow 2.5.0 版
有关如何解决或解决此问题的任何想法?
tensorflow - 从预训练的 Stylegan2-ext TADNE 模型开始训练模型时,Colab 中的官方代码“Stylegan2 ADA PyTorch”出错
错误信息是:
回溯(最后一次调用):文件“train.py”,第 538 行,在 main() # pylint: disable=no-value-for-parameter 文件“/usr/local/lib/python3.7/dist-packages /click/core.py",第 829 行, 通话中 return self.main(*args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File “/usr/local/lib/python3.7/dist-packages/click/core.py”,第 1066 行,在调用中返回 ctx.invoke(self.callback, **ctx.params) 文件“/usr/local/ lib/python3.7/dist-packages/click/core.py”,第 610 行,在调用返回回调(*args,**kwargs)文件“/usr/local/lib/python3.7/dist-packages/click /decorators.py”,第 21 行,在 new_func 中返回 f(get_current_context(), *args, **kwargs) 文件“train.py”,第 531 行,在主 subprocess_fn(rank=0, args=args, temp_dir=temp_dir ) 文件“train.py”,第 383 行,在 subprocess_fn training_loop.training_loop(rank=rank, **args) 文件“/content/stylegan2-ada-pytorch/training/training_loop.py”,第 158 行,在 training_loop resume_data = legacy.load_network_pkl(f) 文件“/content/stylegan2-ada-pytorch/legacy.py”,第 26 行,在 load_network_pkl G = convert_tf_generator(tf_G) 文件“/content/stylegan2-ada-pytorch/legacy. py",第 155 行,在 convert_tf_generator raise ValueError('Unknown TensorFlow kwarg', unknown_kwargs[0]) ValueError: ('Unknown TensorFlow kwarg', 'resolution_w')
此外,有时会出现:
ValueError: ('Unknown TensorFlow kwarg', 'resolution_h')
知道如何解决这个错误吗?