AssertionError: runs/xx/last.pt training to 300 epochs is finished, nothing to resume.

yolov5 - 5.0

在已经训练好的模型(训练了300轮)的基础上继续训练。

使用参数--resume

python train.py --epochs 400 --resume runs/train/exp16/weights/last.pt

想要再训练100轮 以上参数--epoches无论修改成100 还是400都会错

AssertionError: runs/xx/last.pt training to 300 epochs is finished, nothing to resume.

在网上找了很多,很多没有用。从头重新训练实在麻烦,我是在云端训练的,租服务器费钱。。。

最后解决方法:

1.首先将train.py中--epochs参数的default修改 改成你最终要的训练次数。比如我是从300轮继续训练的,要再训练100轮,那么就设置为400.

 2.在train.py中找到 #Epochs (可以ctrl+f 快捷搜索)如下图,添加两行代码:

ckpt['epoch'] = 300 #继续训练 300为最后一次训练代数+1
start_epoch = ckpt['epoch']

并注释掉代码。最后修改如图就行。

start_epoch = ckpt['epoch'] + 1

AssertionError: runs/xx/last.pt training to 300 epochs is finished, nothing to resume._第1张图片

 3.最后在train.py文件中找到 #Resume 代码块(如下图)

在第一行添加一行代码:

init_epochs = opt.epochs #修改断点加这一行 记录最开始由epochs参数设定的数值400,因为replace这行代码,将epochs替换成了原始的epochs数值300

然后将如图513行代码注释掉,在下一行加代码:

opt.cfg, opt.weights, opt.resume, opt.epochs = '', ckpt , True , init_epochs # # reinstate设置断点则添加 opt.epochs init_epochs

AssertionError: runs/xx/last.pt training to 300 epochs is finished, nothing to resume._第2张图片

 至此,代码修改完毕。

运行设置:(指定要接着训练的模型)

python train.py --resume runs/xx/last.pt

则显示结果从300(包含)开始训练到399,追加训练100次。

AssertionError: runs/xx/last.pt training to 300 epochs is finished, nothing to resume._第3张图片

 

 

你可能感兴趣的:(深度学习错误集,深度学习,python,机器学习)