【超分辨率MSRN代码问题/PyTorch-二】中断训练后从停止的epoch继续训练

2023-12-23 15:58

本文主要是介绍【超分辨率MSRN代码问题/PyTorch-二】中断训练后从停止的epoch继续训练,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当我不小心中断训练后,想继续训练时,发现MSRN代码有挺多问题啊。。

1. 首先想继续训练的话,运行主文件时的参数要从原来给的

python main.py --template MSRN --save MSRN_X2 --scale 2 --reset --save_results --patch_size 96 --ext sep_reset

修改成

python main.py --template MSRN --load MSRN_X2 --resume -1 --scale 2 --save_results --patch_size 96 --ext sep

也就是删除参数save及reset,添加参数loadresume的默认值

重要参数的作用:(主要位于在utility.py中的checkpoint函数)

--save:设置本次训练保存实验结果的文件夹。没有修改load参数默认值时起作用。

--load:设置本次训练要加载的已有实验结果的文件夹。

--reset:删除save和load参数中的文件夹,若其中有之前的训练结果也会删掉,并重建空文件夹。

--resume:为-1时,可上面设置的文件夹中的model_latest.pt开始训练;

                   为0(默认值)时,若pre_train值为点则从头开始训练,若有其它值,则从模型pre_train开始训练;

                   为其他值时,从model_{resume}.pt开始恢复训练

 

2. 修改完上述参数后可以训练,但发现比如从epoch514开始训练,学习速率lr本应该是2.5e-5,但却显示6.25e-6

应该将trainer.py中的28行左右

for _ in range(len(ckp.log)): self.scheduler.step()

修改为

self.scheduler.last_epoch = len(ckp.log)

原因:在设置load参数后,会从optimizer.pt中加载上次训练中断时epoch(比如514)的lr,此时lr已经是2.5e-5了,然而接下来源代码的for循环要循环514下,会在2.5e-5的基础上再降低两次gamma倍的lr(每200epoch乘以gamma)。

这篇关于【超分辨率MSRN代码问题/PyTorch-二】中断训练后从停止的epoch继续训练的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/528592

相关文章

从零教你安装pytorch并在pycharm中使用

《从零教你安装pytorch并在pycharm中使用》本文详细介绍了如何使用Anaconda包管理工具创建虚拟环境,并安装CUDA加速平台和PyTorch库,同时在PyCharm中配置和使用PyTor... 目录背景介绍安装Anaconda安装CUDA安装pytorch报错解决——fbgemm.dll连接p

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题

《解读为什么@Autowired在属性上被警告,在setter方法上不被警告问题》在Spring开发中,@Autowired注解常用于实现依赖注入,它可以应用于类的属性、构造器或setter方法上,然... 目录1. 为什么 @Autowired 在属性上被警告?1.1 隐式依赖注入1.2 IDE 的警告:

解决java.lang.NullPointerException问题(空指针异常)

《解决java.lang.NullPointerException问题(空指针异常)》本文详细介绍了Java中的NullPointerException异常及其常见原因,包括对象引用为null、数组元... 目录Java.lang.NullPointerException(空指针异常)NullPointer

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问

关于Nginx跨域问题及解决方案(CORS)

《关于Nginx跨域问题及解决方案(CORS)》文章主要介绍了跨域资源共享(CORS)机制及其在现代Web开发中的重要性,通过Nginx,可以简单地解决跨域问题,适合新手学习和应用,文章详细讲解了CO... 目录一、概述二、什么是 CORS?三、常见的跨域场景四、Nginx 如何解决 CORS 问题?五、基

MySQL安装时initializing database失败的问题解决

《MySQL安装时initializingdatabase失败的问题解决》本文主要介绍了MySQL安装时initializingdatabase失败的问题解决,文中通过图文介绍的非常详细,对大家的学... 目录问题页面:解决方法:问题页面:解决方法:1.勾选红框中的选项:2.将下图红框中全部改为英

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss