【无标题】

解决问题lr_scheduler.step()要在optimizer.step()后面

源码:DIC

解决方法

1.如果cuda兼容就安装pytorch1.1.0

2.在SRLandmarkSolver.py里的:

def load(self):
。
。#最后面注释掉下面两行
#if self.is_train:
        #    self.update_learning_rate()
 def train_step(self):
        self.model.train()#在训练模型时会在前面加上:model.train(),是保证BN层用每一批数据的均值和方差,即针对每个mini-batch的 ;
        self.optimizer.zero_grad()#先将梯度归零

        loss_pix = 0.0
        SR_list= self.model(self.LR)
        self.SR = SR_list
        self.SR = SR_list[-1]

        for step, SR in enumerate(SR_list):
            loss_pix += self.loss_dict['pixel']['weight'] * self.loss_dict[
                'pixel']['criterion'](SR, self.HR)
        loss = loss_pix
        loss.backward()#反向传播计算得到每个参数的梯度值
        self.optimizer.step()#通过梯度下降执行一步参数更新
        self.update_learning_rate()#**在这里加上**
        self.model.eval()#在测试模型时会在前面使用:model.eval(),是保证BN用全部训练数据的均值和方差,即针对单张图片的;
        return {
            'loss_pix': loss_pix.item(),
            #'loss_align': loss_align.item(),
            'loss_total': loss.item()
        }

解决!

问题二:UserWarning: The epoch parameter in scheduler.step() was not necessary and is being deprecated where possible. Please use scheduler.step() to step the scheduler. During the deprecation, if epoch is different from None, the closed form is used instead of the new chainable form, where available. Please open an issue if you are unable to replicate your use case: https://github.com/pytorch/pytorch/issues/new/choose. warnings.warn(EPOCH_DEPRECATION_WARNING, UserWarning)
不知道

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值