Pytorch程序中一些由于弃用导致warring的解决办法
在学习别人code的时候经常要先本地跑一边看看效果但终端经常出现一些红字警告虽然是警告有时也会因为用法舍弃地太严重而导致的错误关键词就是“deprecated”。还有几种情况是使用编辑器自带的AI代码补全但结果依然是红字报错或者警告再或者使用AI大模型生成code有时也会带来这种问题。这些问题本质是代码中关于某个函数或者某个参数只在特定版本中生效通常是以往的旧版本。而现如今code运行的环境中的pytorch版本高于那个版本jetbrain的AI自动补全也会出现这个问题提示补全的用法可能不符合当前的pytorch版本AI大模型同样可能写的时候都不知道根据那个版本来写的把错误信息丢给他还要检索一会才能改正过来。通常安装pytorch版本时不会注意到这个问题这个问题也好解决首先查看目前的torch版本pip show packagename这里我使用torchvision查看vgg网络的参数定义其次到pytorch官网查看目前版本的用法介绍网址torch其他模块点击左上角的版本选择自己或者AI帮忙改正运行验证看之前的教程这个vgg网络需要指定是否使用pretrain预训练的参数现在更新到使用关键字参数weights来决定是否采用带有权重的网络和不带权重的网络jetbrain自动补全的也是落后地版本用法只有这种亲自查询修改的才能确保符合目前的torch版本。如果能从一开始就创建符合要求的环境最好这种是出现问题了来解决。下面是自己学习修改网络结构的简单记录importtorchimporttorchvisionfromtorchimportnnfromtorch.nnimportLinear vgg19_v1torchvision.models.vgg19(weightsNone)vgg19_v2torchvision.models.vgg19(weightsDEFAULT)print(vgg19_v1)print(vgg19_v2)vgg19_v1.add_module(add_linear,Linear(1000,10))print(V1 add layer)print(vgg19_v1)# 根据网络内部结构添加到分类模块需要最初打印网络模型结构来查看vgg19_v2.classifier.add_module(add_linear,Linear(1000,10))print(V2 add inline layer)print(vgg19_v2)# 修改内部指定层的网络这里的7是根据顺序容器编号的最后一个数字往后顺延一位vgg19_v2.classifier[7]nn.Linear(1000,3)print(change V2 layer)print(vgg19_v2)