Pytorch教程内置模型源码实现

翻译自
https://pytorch.org/docs/stable/torchvision/models.html
主要讲解了torchvision.models的使用

torchvision.models

torchvision.models中包含了如下模型

  • AlexNet
  • VGG
  • ResNet
  • SqueezeNet
  • DenseNet
  • Inception v3

随机初始化模型

import torchvision.models as models
resnet18 = models.resnet18()
alexnet = models.alexnet()
vgg16 = models.vgg16()
squeezenet = models.squeezenet1_0()
desnet = models.densenet161()
inception =models.inception_v3()

使用预训练好的参数

pytorch提供了预训练的模型,使用torch.utils.model_zoo ,通过让参数pretrained =True来构建训练好的模型

方法如下

resnet18 = models.resnet18(pretrained=True)
alexnet = models.alexnet(pretrained=True)
squeezenet = models.squeezenet1_0(pretrained=True)
vgg16 = models.vgg16(pretrained=True)
densenet = models.densenet161(pretrained=True)
inception = models.inception_v3(pretrained=True)

实例化一个预训练好的模型会自动下载权重到缓存目录,这个权重存储路径可以通过环境变量TORCH_MODEL_ZOO来指定,详细的参考torch.utils.model_zoo.load_url() 这个函数

有的模型试验了不同的训练和评估,例如batch normalization。使用model.train()和model.eval()来转换,查看train() or eval() 来了解更多细节

所有的预训练网络希望使用相同的方式进行归一化,例如图片是mini-batch形式的3通道RGB图片(3HW),H和W最少是244,。 图像必须加载到[0,1]范围内,然后使用均值=[0.485,0.456,0.406]和std =[0.229, 0.224, 0.225]进行归一化。

您可以使用以下转换来normalzie:

normalize = trainform.Normalize9mean = [0.485,0.456,0.406],std = [0.229,0.224,0.225])

在这里我们可以找到一个在Imagenet上的这样的例子
https://github.com/pytorch/examples/blob/42e5b996718797e45c46a25c55b031e6768f8440/imagenet/main.py#L89-L101

目前这些模型的效果如下

下面是模型源码的具体实现,具体实现大家可以阅读源码

###ALEXNET
torchvision.models.alexnet(pretrained=False, **kwargs)[SOURCE]
AlexNet model architecture from the “One weird trick…” paper.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
###VGG
torchvision.models.vgg11(pretrained=False, **kwargs)[SOURCE]
VGG 11-layer model (configuration “A”)
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg11_bn(pretrained=False, **kwargs)[SOURCE]
VGG 11-layer model (configuration “A”) with batch normalization
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg13(pretrained=False, **kwargs)[SOURCE]
VGG 13-layer model (configuration “B”)
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg13_bn(pretrained=False, **kwargs)[SOURCE]
VGG 13-layer model (configuration “B”) with batch normalization
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg16(pretrained=False, **kwargs)[SOURCE]
VGG 16-layer model (configuration “D”)
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg16_bn(pretrained=False, **kwargs)[SOURCE]
VGG 16-layer model (configuration “D”) with batch normalization
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg19(pretrained=False, **kwargs)[SOURCE]
VGG 19-layer model (configuration “E”)
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.vgg19_bn(pretrained=False, **kwargs)[SOURCE]
VGG 19-layer model (configuration ‘E') with batch normalization
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
RESNET
torchvision.models.resnet18(pretrained=False, **kwargs)[SOURCE]
Constructs a ResNet-18 model.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet34(pretrained=False, **kwargs)[SOURCE]
Constructs a ResNet-34 model.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet50(pretrained=False, **kwargs)[SOURCE]
Constructs a ResNet-50 model.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet101(pretrained=False, **kwargs)[SOURCE]
Constructs a ResNet-101 model.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.resnet152(pretrained=False, **kwargs)[SOURCE]
Constructs a ResNet-152 model.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
SQUEEZENET
torchvision.models.squeezenet1_0(pretrained=False, **kwargs)[SOURCE]
SqueezeNet model architecture from the “SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and <0.5MB model size” paper.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.squeezenet1_1(pretrained=False, **kwargs)[SOURCE]
SqueezeNet 1.1 model from the official SqueezeNet repo. SqueezeNet 1.1 has 2.4x less computation and slightly fewer parameters than SqueezeNet 1.0, without sacrificing accuracy.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
DENSENET
torchvision.models.densenet121(pretrained=False, **kwargs)[SOURCE]
Densenet-121 model from “Densely Connected Convolutional Networks”
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.densenet169(pretrained=False, **kwargs)[SOURCE]
Densenet-169 model from “Densely Connected Convolutional Networks”
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.densenet161(pretrained=False, **kwargs)[SOURCE]
Densenet-161 model from “Densely Connected Convolutional Networks”
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
torchvision.models.densenet201(pretrained=False, **kwargs)[SOURCE]
Densenet-201 model from “Densely Connected Convolutional Networks”
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet
INCEPTION V3
torchvision.models.inception_v3(pretrained=False, **kwargs)[SOURCE]
Inception v3 model architecture from “Rethinking the Inception Architecture for Computer Vision”.
Parameters:	pretrained (bool) – If True, returns a model pre-trained on ImageNet

以上就是Pytorch教程内置模型源码实现的详细内容,更多关于Pytorch内置模型的资料请关注我们其它相关文章!

(0)

相关推荐

  • pytorch教程之Tensor的值及操作使用学习

    目录 1.Tensors 建立5*3的矩阵,未初始化 建立随机初始化矩阵 建立零初始化矩阵,数据类型是Long 建立一个tensor数据来源于data 获取tensor的size 2.对Tensor的操作 实现加法的四种方式 所有原地替换 使用标准的numpy操作 使用torch.view 改变tensor的形状 tensor转化为numpy的数字,使用item Torch Tensor 和numpy的相互转换 将numpy array转化为pytorch Tensor CUDA Tensors

  • 使用Pytorch搭建模型的步骤

    本来是只用Tenorflow的,但是因为TF有些Numpy特性并不支持,比如对数组使用列表进行切片,所以只能转战Pytorch了(pytorch是支持的).还好Pytorch比较容易上手,几乎完美复制了Numpy的特性(但还有一些特性不支持),怪不得热度上升得这么快. 1  模型定义 和TF很像,Pytorch也通过继承父类来搭建自定义模型,同样也是实现两个方法.在TF中是__init__()和call(),在Pytorch中则是__init__()和forward().功能类似,都分别是初始化

  • 如何使用Pytorch搭建模型

    1  模型定义 和TF很像,Pytorch也通过继承父类来搭建模型,同样也是实现两个方法.在TF中是__init__()和call(),在Pytorch中则是__init__()和forward().功能类似,都分别是初始化模型内部结构和进行推理.其它功能比如计算loss和训练函数,你也可以继承在里面,当然这是可选的.下面搭建一个判别MNIST手写字的Demo,首先给出模型代码: import numpy as np import matplotlib.pyplot as plt import

  • pytorch构建网络模型的4种方法

    利用pytorch来构建网络模型有很多种方法,以下简单列出其中的四种. 假设构建一个网络模型如下: 卷积层-->Relu层-->池化层-->全连接层-->Relu层-->全连接层 首先导入几种方法用到的包: import torch import torch.nn.functional as F from collections import OrderedDict 第一种方法 # Method 1 --------------------------------------

  • Pytorch教程内置模型源码实现

    翻译自 https://pytorch.org/docs/stable/torchvision/models.html 主要讲解了torchvision.models的使用 torchvision.models torchvision.models中包含了如下模型 AlexNet VGG ResNet SqueezeNet DenseNet Inception v3 随机初始化模型 import torchvision.models as models resnet18 = models.res

  • JavaScript 核心参考教程 内置对象

    这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft).Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 1996 年开始,已经出现在所有的 Netscape 和 Microsoft 浏览器中.ECMA-262 的开发始于 1996 年,在 1997 年 7 月,ECMA 会员大会采纳了它的首个版本. 本系列教程旨在向大家分享本人当年学习Javascript的笔记和心得.本系列教程预计分五个部分. 第

  • 详解Django中CBV(Class Base Views)模型源码分析

    在view文件中编写一个类,并配置好路由 class Test(View): def get(self, request, *args, **kwargs): return HttpResponse('cbv_get') def post(self, request, *args, **kwargs): return HttpResponse('cbv_post') url(r'test/',views.Test.as_view()), 通过as_view()进入查看源码 实际上views.Te

  • Django CBV模型源码运行流程详解

    在view文件中编写一个类,并配置好路由 class Test(View): def get(self, request, *args, **kwargs): return HttpResponse('cbv_get') def post(self, request, *args, **kwargs): return HttpResponse('cbv_post') url(r'test/',views.Test.as_view()), 通过as_view()进入查看源码 实际上views.Te

  • pytorch教程resnet.py的实现文件源码分析

    目录 调用pytorch内置的模型的方法 解读模型源码Resnet.py 包含的库文件 该库定义了6种Resnet的网络结构 每种网络都有训练好的可以直接用的.pth参数文件 Resnet中大多使用3*3的卷积定义如下 如何定义不同大小的Resnet网络 定义Resnet18 定义Resnet34 Resnet类 网络的forward过程 残差Block连接是如何实现的 调用pytorch内置的模型的方法 import torchvision model = torchvision.models

  • 洋葱模型 koa-compose源码解析

    目录 洋葱模型 源码 动手 总结 洋葱模型 koa-compose是一个非常简单的函数,它接受一个中间件数组,返回一个函数,这个函数就是一个洋葱模型的核心. 源码地址:github.com/koajs/compo… 网上一搜一大把图,我就不贴图了,代码也不上,因为等会源码就是,这里只是介绍一下概念. 洋葱模型是一个非常简单的概念,它的核心是一个函数,这个函数接受一个函数数组,返回一个函数,这个函数就是洋葱模型的核心. 这个返回的函数就是聚合了所有中间件的函数,它的执行顺序是从外到内,从内到外.

  • PHP新特性之字节码缓存和内置服务器

    Zend OPcache 1).从PHP5.0开始,内置了字节码缓存功能,名为Zend OPcache.因为PHP是解释性语言,PHP解释器执行PHP脚本时会解析PHP脚本代码,生成一系列的Zend操作码,然后执行字节码,每次的HTTP请求都是这样,会消耗很多资源,使用字节码缓存可以缓存预先编译的字节码,减少响应时间,降低系统资源的压力. 启用Zend OPcache 默认情况之下,Zend OPcache是没有启动的.如果是自己编译PHP,执行的时候命令必须包含以下选项: --enable-o

  • 网页源码轻松看

    经常在网上转悠,你一定会发现很多制作精美的网页,那么有没有想过分析它们的源码,将它们的设计思想"借用"过来,给自己的网站也认真装饰一番呢?但是,有些网站的主人却对网页进行了一些限制,让你无法查看源代码,有时候甚至让你无法复制网页上的文字,让人很懊恼.其实,网页源码的查看也有许多技巧可循,只要你掌握了它们,就能够事半功倍地为自己的网页服务,下面就将这些技巧一一介绍给大家. 1.查看带有框架(Frame)的网页源码 如果有的网页中使用了框架(Frame),或者使用了多窗口,那么利用IE菜单

  • python matplotlib工具栏源码探析二之添加、删除内置工具项的案例

    从matplotlib工具栏源码探析一(禁用工具栏.默认工具栏和工具栏管理器三种模式的差异)一文可知matplotlib内置实现了多个工具项的实现,而默认工具栏中的工具项只是其中的一部分,有没有方法直接管理工具栏,添加.删除内置工具项? matplotlib内置的工具项 由源码可知,matplotlib.backend_tools.default_tools变量为字典类型,实例化了基于matplotlib.backend_tools.ToolBase类定义的内置工具项. 源码 default_t

  • Python源码加密与Pytorch模型加密分别介绍

    目录 前言 一.python源代码的保护 二.pytorch模型.pth的加密 前言 深度学习领域,常常用python写代码,而且是建立在一些开源框架之上,如pytorch.在实际的项目部署中,也有用conda环境和python代码去部署服务器,在这个时候,又分为两种情况. 部署方式可分为两种,一种是在线部署,算法服务器归公司所有,只开放API给客户,客户通过POST请求访问算法服务器,上传数据并得到返回结果.这种情况客户当然看不到代码.还有一种是离线部署,就是给客户私有化部署,把公司的代码放到

随机推荐