基于pytorch的精细预训练卷积神经网络

cnn-finetune的Python项目详细描述


用pytorch微调预训练卷积神经网络。

PyPICircleCIcodecov.io

功能

  • 允许访问在ImageNet上预先训练过的最流行的CNN架构。
  • 自动替换网络顶部的分类器,这允许您使用具有不同数量类的数据集来训练网络。
  • 允许您使用任何分辨率的图像(不仅是用于在ImageNet上训练原始模型的分辨率)。
  • 允许添加退出层或自定义池层。

支持的体系结构和模型

来自torchvision包:

  • resnet(resnet18resnet34resnet50resnet101resnet152
  • resnext(resnext50_32x4dresnext101_32x8d
  • densenet(densenet121densenet169densenet201densenet161
  • 初始v3(inception_v3
  • vgg(vgg11vgg11_bnvgg13vgg13_bnvgg16vgg16_bnvgg19vgg19_bn
  • 挤压网(squeezenet1_0squeezenet1_1
  • mobilenet v2(mobilenet_v2
  • shufflenet v2(shufflenet_v2_x0_5shufflenet_v2_x1_0
  • AlexNet(alexnet
  • 谷歌网(googlenet

来自Pretrained models for PyTorch包:

  • resnext(resnext101_32x4dresnext101_64x4d
  • nasnet-a大型(nasnetalarge
  • NASNET-A移动电话(nasnetamobile
  • 初始resnet v2(inceptionresnetv2
  • 双路径网络(dpn68dpn68bdpn92dpn98dpn131dpn107
  • 初始v4(inception_v4
  • 异常(xception
  • 挤压和激发网络(senet154se_resnet50se_resnet101se_resnet152se_resnext50_32x4dse_resnext101_32x4d
  • PNASnet-5-大(^{})
  • 波利尼特(polynet

要求

  • Python3.5+
  • 喷灯1.1+

安装

pip install cnn_finetune

主要变化:

版本0.4
  • make_modelpretrained参数的默认值从False更改为True。现在callmake_model('resnet18', num_classes=10)等于make_model('resnet18', num_classes=10, pretrained=True)

示例用法:

制作10个类的图像净重模型

from cnn_finetune import make_model

model = make_model('resnet18', num_classes=10, pretrained=True)

制作带有辍学的模型
model = make_model('nasnetalarge', num_classes=10, pretrained=True, dropout_p=0.5)

创建一个具有全局最大池而不是全局平均池的模型

import torch.nn as nn

model = make_model('inceptionresnetv2', num_classes=10, pretrained=True, pool=nn.AdaptiveMaxPool2d(1))

制作一个可拍摄256x256像素图像的vgg16模型

vgg和alexnet模型使用完全连接的层,因此必须另外传递图像的输入大小 在构建新模型时。此信息用于确定完全连接层的输入大小。

model = make_model('vgg16', num_classes=10, pretrained=True, input_size=(256, 256))

制作一个vgg16模型,该模型拍摄256x256像素大小的图像并使用自定义分类器

import torch.nn as nn

def make_classifier(in_features, num_classes):
    return nn.Sequential(
        nn.Linear(in_features, 4096),
        nn.ReLU(inplace=True),
        nn.Linear(4096, num_classes),
    )

model = make_model('vgg16', num_classes=10, pretrained=True, input_size=(256, 256), classifier_factory=make_classifier)

显示用于在ImageNet上训练原始模型的预处理
>> model = make_model('resnext101_64x4d', num_classes=10, pretrained=True)
>> print(model.original_model_info)
ModelInfo(input_space='RGB', input_size=[3, 224, 224], input_range=[0, 1], mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
>> print(model.original_model_info.mean)
[0.485, 0.456, 0.406]

CIFAR10示例

请参阅examples/cifar10.py文件(需要pytorch 1.1+)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在“for语句”中打印数组   使用jaxb外部绑定自定义时发生java错误   jdbc如何在Java(ProcessBuilder)中创建GlassFish的连接池   java正在尝试打印名称   java在Spring表达式语言中使用正则表达式提取子字符串   java如何将字符串流式传输到另一个类   jakarta ee ResourceBundle来自Java/Struts和replace表达式   tomcat支持java的可能原因。网SocketInputStream。socketRead0   java无法从joda dateTime对象中删除毫秒   java永远隐藏导航栏   具有更多字段的java ItemizeOverlay   使用jsptag的java搜索记录   java如何在Android Q中检查互联网连接?   java如果1是标准的EOF字节,为什么DataInputStream会这样做?   线程环境中的多线程mongodb java客户端断开连接   java正则表达式中的非捕获组   java疯狂拍卖定制售价   java Mybatis自动映射以支持dot   java在线获取原始格式的JSON URL   java意外字符“ï”,使用Jackson解析JSON