Datawhale AI 学习笔记:从baseline入门深度学习

为了更好的探究baseline,我在Autodl服务器上构建环境,重新训练baseline。我的主要工作可总结为以下两点:

  • 构建可以运行baseline的代码环境
  • 替换了预训练模型,更换resnet18为efficientnet_b0

实验环境

服务器:RTX 2080 Ti * 1卡

pytorch版本:1.10.0(建议版本在1.7.0以上,timm用到SiLU函数在1.7.0以上可以使用)

实验代码

大部分代码使用baseline,少部分因为出现bug需要进行更改。我遇到的bug是

Traceback (most recent call last): File "/root/miniconda3/lib/python3.8/site-packages/urllib3/connection.py", line 169, in _new_conn conn = connection.create_connection( File "/root/miniconda3/lib/python3.8/site-packages/urllib3/util/connection.py", line 96, in create_connection raise err File "/root/miniconda3/lib/python3.8/site-packages/urllib3/util/connection.py", line 86, in create_connection sock.connect(sa) socket.timeout: timed out

出现这个bug的原因在baseline中代码

model = timm.create_model('efficientnet_b0', pretrained=True, num_classes=2)#这里我更换了预训练的模型,源代码是resnet18,但可能有相同的问题

因为pretained=true,需要加载预训练的权重,该权重会从Hugging Face的服务器上下载,而autodl提供的服务器位于境内,会产生网络问题无法连接到 Hugging Face服务器,导致出现timed out的错误。

我的解决方法参考了如下两个链解预训练模型的使用torchvision.model和timm_import torchvision.models-CSDN博客

Pytorch修改预训练模型的方法汇总_预训练模型改变通道数-CSDN博客

在第一篇博客中,我采用了torch源的方法,使用如下代码获取下载权重的链接tong

import timm
model = timm.create_model('efficientnet_b0', pretrained=False, num_classes=2)
print(model.default_cfg)
#得到一个网址:https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-weights/efficientnet_b0_ra-3dd342df.pth

下载这个预训练模型后,使用如下方式调用

model = timm.create_model('efficientnet_b0', pretrained=False)
model.load_state_dict(torch.load('/root/efficientnet_b0_ra-3dd342df.pth'))#load后的路径是pth的位置
model.fc=nn.Linear(2,1280)#更改全连接层为二分类

训练和测试

在batch_size=8,epoch= 1的情况下进行了训练,最后得到如下分数

下一步计划

  • 使用数据增强的手段进一步提升模型的表现
  • 测试其它预训练模型的表现结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值