pytorch踩坑笔记

本文记录了使用PyTorch进行深度学习时遇到的一些问题,包括Loss的实例化、网络输入的维度管理、颜色通道的正确取用、自定义损失函数的注意事项、数据集构建的细节以及图像加载与GPU加速的策略。对于初学者和开发者来说,这些经验可以帮助避免常见错误,提升开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近开始写了自己项目的第一个pytoch神经网络,其实官方的文档和案例已经写的很不错了,但是还是有很多的坑,尤其是在数据集以及损失函数方面有问题,记录一下(顺序乱,请酌情使用Ctrl+F):
1、Loss在使用之前要实例化。
这个其实很容易理解,无论是我们自己定义loss类还是直接使用torch的内置损失函数,都是类的方法调用,因此在使用之前要进行实例化
这里贴出我使用的损失函数类,用于颜色恒常性研究的(Color constancy),也希望大佬们指点一下看看有没有写错,使用的是常用的角度误差函数(训练的时候loss有的时候出现nan,现在还不确定是不是损失函数写错了,过后更新)

#定义损失函数
class angleloss(nn.Module):
    def __init__(self):
        super().__init__()

    def forward(self,w1,w2):
        z = torch.mul(w1,w2)
        z = torch.sum(z,dim = 2)

        m1 = torch.pow(w1,2)
        m1 = torch.sum(m1, dim = 2)
        m1 = torch.pow(m1,0.5)

        m2 = torch.pow(w2,2)
        m2 = torch.sum(m2, dim = 2)
        m2 = torch.pow(m2,0.5)

        m = torch.mul(m1,m2)

        out = torch.div(z,m)
        out = torch.acos(out)
        out = torch.sum(out)

        return out
myloss = angleloss()

2、网络的input是以batch形式进入的,所以在我们组织图片数据集的时候,要定义好每个batch的大小,这个还是小事情。重要的是在写网络的时候,要注意输入的tensor的第一维度是batch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值