记.backward()报错

最近我在模型训练损失里加入了LPIPS深度感知损失,训练的时候就出现了如上的报错,具体解释为:调用梯度反向传播loss.backward()时,我们计算梯度,需要一个标量的loss(即该loss张量的维度为1,只包含一个元素);而LPIPS的输出的loss为一个[4,1,1,1]的4维张量(batch_size,c,h,w),因此报错。

修正:

python 复制代码
def lpips_loss(img1, img2):
    # loss_fn_alex = lpips.LPIPS(net='alex')  # best forward scores
    loss_fn_vgg = lpips.LPIPS(net='vgg')  # closer to "traditional" perceptual loss, when used for optimization
    loss_fn_vgg.cuda()
    loss = loss_fn_vgg.forward(img1, img2)
    loss = torch.mean(loss)
    return loss

参考:

grad can be implicitly created only for scalar outputs-CSDN博客https://blog.csdn.net/qq_39208832/article/details/117415229
lpips · PyPIhttps://pypi.org/project/lpips/

相关推荐
时光Autistic2 分钟前
【安装教程】AI标注工具X-AnyLabeling安装配置
人工智能·python
knight_9___6 分钟前
大模型project面试7
人工智能·python·算法·面试·大模型·agent
liudanzhengxi8 分钟前
CRM系统技术文章
linux·服务器·网络·人工智能·新人首发
JavaAgent架构师10 分钟前
前端AI工程化(六):Function Calling与RAG前端实践
前端·人工智能
ZhengEnCi14 分钟前
08-编码器结构 🏗️
人工智能
掘金安东尼17 分钟前
Buildsom |老板说要加码 AI 推广?我调研后发现:77% 的品牌,其实都在“盲投”
人工智能
Android出海18 分钟前
5月合规风暴眼:Google Play权限大限与欧盟游戏监管新棋局
人工智能·游戏·google play·谷歌开发者·android开发者·google开发者·google play开发者
在繁华处22 分钟前
轻棋局(一):项目总览与架构设计
人工智能·windows
TechubNews1 小时前
稳定币下一战:不是谁发币,而是谁掌握结算通道
人工智能·web3·区块链
多年小白1 小时前
紫光国微(002049) 分析
大数据·科技·深度学习·ai