pytorch padding_pytorch笔记:Efficientnet微调

b55d9d57a492840a7fd24daeb9c80370.png

pytorch中有为efficientnet专门写好的网络模型,写在efficientnet_pytorch模块中。

模块包含EfficientNet的op-for-op的pytorch实现,也实现了预训练模型和示例。

安装Efficientnet

pytorch Efficientnet

Install via pip:

pip 

Or install from source:

git clone lukemelas/EfficientNet-PyTorch
cd EfficientNet-Pytorch
pip install -e .

keras Efficientnet

From PyPI:

pip install keras_efficientnets

From Master branch:

pip install git+https://github.com/titu1994/keras-efficientnets.git
OR
git clone titu1994/keras-efficientnets
cd keras-efficientnets
pip install .

用法

加载EfficientNet(只是网络结构,无预训练参数)

from efficientnet_pytorch import EfficientNet
model = EfficientNet.from_name('efficientnet-b0')

加载预训练EfficientNet

from efficientnet_pytorch import EfficientNet
model = EfficientNet.from_pretrained('efficientnet-b0')

efficientnet-b5为例(加载预训练)

    from efficientnet_pytorch import EfficientNet
    model = EfficientNet.from_pretrained('efficientnet-b5')
    print(model)

只修改网络的最后几层(原始层结构):

  (_conv_head): Conv2dStaticSamePadding(
    512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False
    (static_padding): Identity()
  )
  (_bn1): BatchNorm2d(2048, eps=0.001, momentum=0.010000000000000009, affine=True, track_running_stats=True)
  (_fc): Linear(in_features=2048, out_features=1000, bias=True)

修改_fc层(最后一层),将输出的分类数由1000改为45:

得到in_features:

    feature = model._fc.in_features
    print(feature)

结果:

Loaded pretrained weights for efficientnet-b5
2048

修改最后一层:

from efficientnet_pytorch import EfficientNet
from torch import nn
model = EfficientNet.from_pretrained('efficientnet-b5')
feature = model._fc.in_features
model._fc = nn.Linear(in_features=feature,out_features=45,bias=True)
print(model)

结果:

  (_conv_head): Conv2dStaticSamePadding(
    512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False
    (static_padding): Identity()
  )
  (_bn1): BatchNorm2d(2048, eps=0.001, momentum=0.010000000000000009, affine=True, track_running_stats=True)
  (_fc): Linear(in_features=2048, out_features=45, bias=True)

或者:和上述方法一致

    from efficientnet_pytorch import EfficientNet
    model = EfficientNet.from_pretrained('efficientnet-b5')
    model._fc.out_features = 45
    print(model)

结果:

  (_conv_head): Conv2dStaticSamePadding(
    512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False
    (static_padding): Identity()
  )
  (_bn1): BatchNorm2d(2048, eps=0.001, momentum=0.010000000000000009, affine=True, track_running_stats=True)
  (_fc): Linear(in_features=2048, out_features=45, bias=True)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值