![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码积累
judgechen1997
这个作者很懒,什么都没留下…
展开
-
关于模型分成多部分时的torch.optim优化设置
上次写代码时,backbone encoder是用了别人代码,另外又添加了多分支多layer作为task decoder。但是开始犯了个很致命的错误,在pytorch设置优化器时,仅使用了:optimizer = torch.optim.Adam(model.parameters(), lr=args.lr, weight_decay=args.weight_decay)这样实际上只优化了部分模型,应该这样设置:optimizer = torch.optim.Adam([{'params': mo原创 2020-09-14 17:18:46 · 814 阅读 · 0 评论 -
pytorch tensor int型除法
昨天晚上跑起来一个classification实验,今天发现训练loss在降,然而accuracy永远是0 。。。直觉告诉我evaluation有问题然后发现自己写了个很愚蠢的bugaccuracy对应的tensor出来是int型的,我用到了一个除法取平均。而pytorch里无论用 / or // 结果都是取整,,accuracy一直就没有。。所以转换成float就没问题了,,低级bug,下不为例...原创 2020-08-05 16:47:00 · 2015 阅读 · 0 评论 -
Python val() 通过字符串对应至同名变量
eval()函数可以方便的在python中,通过字符串访问变量名。方便代码中提取特定的一系列变量名相近的变量。在写Pytorch的一套代码(GPS DlinkNet_fusion),想要提取ResNet中的layer1、layer2、layer3、layer4. 一句一句的写代码太多,又不太雅观。这时候可以用val() 通过字符串对应至同名变量。简单例子,提取resnet.layer1,resnet.layer2,…resnet = models.resnet34(pretrained=True)b原创 2020-05-21 18:16:44 · 4215 阅读 · 0 评论 -
with torch.no_grad(): 可显著减少显存占用
模型训练的时候,爆显存了,可以调整batch,对数据进行crop等等操作今天发现一个模型,每次测试的时候爆显存,开始以为原因是用了全图(1920x1080略大)进行inference。这是一方面,但后来发现忘了用with torch.no_grad():这导致模型运算的时候不能释放显存(记录了梯度信息),所以显存巨大。加了之后,不过3G显存就够了。。确实inference不需要那么多显存的,以后记着这种不正常现象如何处理。...原创 2020-05-21 00:49:02 · 5154 阅读 · 6 评论 -
pytorch求范数&归一化
除以L1 L2范数 max值 归一化a = torch.ones((2,3)) #建立tensora2 = torch.norm(a) #默认求2范数a1 = torch.norm(a,p=1) #指定求1范数instance normal大概是对每一个channel归一化到均值0,方差略大于1...原创 2019-10-17 11:02:04 · 6508 阅读 · 0 评论