简 介: 本文根据文档 模型组网 中给出的信息,总结了在Paddle建立常见到的网络的三种方法。

关键词paddlenet内置网络

#mermaid-svg-Wdzr3isBaQEmNZ95 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .error-icon{fill:#552222;}#mermaid-svg-Wdzr3isBaQEmNZ95 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Wdzr3isBaQEmNZ95 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .marker.cross{stroke:#333333;}#mermaid-svg-Wdzr3isBaQEmNZ95 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Wdzr3isBaQEmNZ95 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .cluster-label text{fill:#333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .cluster-label span{color:#333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .label text,#mermaid-svg-Wdzr3isBaQEmNZ95 span{fill:#333;color:#333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .node rect,#mermaid-svg-Wdzr3isBaQEmNZ95 .node circle,#mermaid-svg-Wdzr3isBaQEmNZ95 .node ellipse,#mermaid-svg-Wdzr3isBaQEmNZ95 .node polygon,#mermaid-svg-Wdzr3isBaQEmNZ95 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Wdzr3isBaQEmNZ95 .node .label{text-align:center;}#mermaid-svg-Wdzr3isBaQEmNZ95 .node.clickable{cursor:pointer;}#mermaid-svg-Wdzr3isBaQEmNZ95 .arrowheadPath{fill:#333333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Wdzr3isBaQEmNZ95 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Wdzr3isBaQEmNZ95 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Wdzr3isBaQEmNZ95 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Wdzr3isBaQEmNZ95 .cluster text{fill:#333;}#mermaid-svg-Wdzr3isBaQEmNZ95 .cluster span{color:#333;}#mermaid-svg-Wdzr3isBaQEmNZ95 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Wdzr3isBaQEmNZ95 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

内置模型
目 录
Contents
nn简介
Sequential组网
SubClass组网
飞桨内置函数
模型总结

§01 内置模型


1.1 nn简介

  飞桨框架2.0中,组网相关的API都在paddle.nn目录下,你可以通过 SequentialSubClass 的方式构建具体的模型。组网相关的API类别与具体的API列表如下表:

功能 API名称
Conv Conv1D、Conv2D、Conv3D、Conv1DTranspose、Conv2DTranspose、Conv3DTranspose
Pool AdaptiveAvgPool1D、AdaptiveAvgPool2D、AdaptiveAvgPool3D、 AdaptiveMaxPool1D、AdaptiveMaxPool2D、AdaptiveMaxPool3D、 AvgPool1D、AvgPool2D、AvgPool3D、MaxPool1D、MaxPool2D、MaxPool3D
Padding Pad1D、Pad2D、Pad3D
Activation ELU、GELU、Hardshrink、Hardtanh、HSigmoid、LeakyReLU、LogSigmoid、 LogSoftmax、PReLU、ReLU、ReLU6、SELU、Sigmoid、Softmax、Softplus、 Softshrink、Softsign、Tanh、Tanhshrink
Normlization BatchNorm、BatchNorm1D、BatchNorm2D、BatchNorm3D、GroupNorm、 InstanceNorm1D、InstanceNorm2D、InstanceNorm3D、LayerNorm、SpectralNorm、 SyncBatchNorm
Recurrent NN BiRNN、GRU、GRUCell、LSTM、LSTMCell、RNN、RNNCellBase、SimpleRNN、 SimpleRNNCell
Transformer Transformer、TransformerDecoder、TransformerDecoderLayer、 TransformerEncoder、TransformerEncoderLayer
Dropout AlphaDropout、Dropout、Dropout2d、Dropout3d
Loss BCELoss、BCEWithLogitsLoss、CrossEntropyLoss、CTCLoss、KLDivLoss、L1Loss MarginRankingLoss、MSELoss、NLLLoss、SmoothL1Loss

1.2 Sequential组网

  针对顺序的线性网络结构你可以直接使用Sequential来快速完成组网,可以减少类的定义等代码编写。具体代码如下:

import paddle
# Sequential形式组网
mnist = paddle.nn.Sequential(paddle.nn.Flatten(),paddle.nn.Linear(784, 512),paddle.nn.ReLU(),paddle.nn.Dropout(0.2),paddle.nn.Linear(512, 10)
)

1.3 SubClass组网

  针对一些比较复杂的网络结构,就可以使用Layer子类定义的方式来进行模型代码编写,在__init__构造函数中进行组网Layer的声明,在forward中使用声明的Layer变量进行前向计算。子类组网方式也可以实现sublayer的复用,针对相同的layer可以在构造函数中一次性定义,在forward中多次调用。

# Layer类继承方式组网
class Mnist(paddle.nn.Layer):def __init__(self):super(Mnist, self).__init__()self.flatten = paddle.nn.Flatten()self.linear_1 = paddle.nn.Linear(784, 512)self.linear_2 = paddle.nn.Linear(512, 10)self.relu = paddle.nn.ReLU()self.dropout = paddle.nn.Dropout(0.2)def forward(self, inputs):y = self.flatten(inputs)y = self.linear_1(y)y = self.relu(y)y = self.dropout(y)y = self.linear_2(y)return ymnist_2 = Mnist()

1.4 飞桨内置函数

  你除了可以通过上述方式组建模型外,还可以使用飞桨框架内置的模型,路径为 paddle.vision.models

1.4.1 列出所有内置函数

  具体列表如下:

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *import paddleprint("Inner Model of Paddle:", paddle.vision.models.__all__)
Inner Model of Paddle: ['ResNet', 'resnet18', 'resnet34', 'resnet50', 'resnet101', 'resnet152', 'VGG', 'vgg11', 'vgg13', 'vgg16', 'vgg19', 'MobileNetV1', 'mobilenet_v1', 'MobileNetV2', 'mobilenet_v2', 'LeNet']

ResNet resnet18
resnet34 resnet50
resnet101 resnet152
VGG vgg11
vgg13 vgg16
vgg19 MobileNetV1
mobilenet_v1 MobileNetV2
mobilenet_v2 LeNet

from headm import *strid = 8
strall = tspgetdopstring(strid)
strall = strall.replace(':', '')
strall = strall.replace('\'', '').replace(']','').replace('[','').replace(':','').split(',')maxlen = max(len(s.strip(' ')) for s in strall)
strall = [s.strip(' ')+' '*(maxlen - len(s)) for s in strall]for s in list(zip(*([iter(strall)]*2))):printff(*s)

1.4.2 显示网络结构

(1)LeNet

lenet = paddle.vision.models.LeNet()
paddle.summary(lenet, (64,1,28,28))
---------------------------------------------------------------------------Layer (type)       Input Shape          Output Shape         Param #
===========================================================================Conv2D-1      [[64, 1, 28, 28]]     [64, 6, 28, 28]          60       ReLU-1       [[64, 6, 28, 28]]     [64, 6, 28, 28]           0       MaxPool2D-1    [[64, 6, 28, 28]]     [64, 6, 14, 14]           0       Conv2D-2      [[64, 6, 14, 14]]     [64, 16, 10, 10]        2,416     ReLU-2       [[64, 16, 10, 10]]    [64, 16, 10, 10]          0       MaxPool2D-2    [[64, 16, 10, 10]]     [64, 16, 5, 5]           0       Linear-1         [[64, 400]]           [64, 120]           48,120     Linear-2         [[64, 120]]            [64, 84]           10,164     Linear-3          [[64, 84]]            [64, 10]             850
===========================================================================
Total params: 61,610
Trainable params: 61,610
Non-trainable params: 0
---------------------------------------------------------------------------
Input size (MB): 0.19
Forward/backward pass size (MB): 7.03
Params size (MB): 0.24
Estimated Total Size (MB): 7.46
---------------------------------------------------------------------------{'total_params': 61610, 'trainable_params': 61610}

  通过测试,初步使用 summary显示网络结构,只有LeNet是可以,其它的网络都不可以。

※ 模型总结 ※


  本文根据文档 模型组网 中给出的信息,总结了在Paddle建立常见到的网络的三种方法。


■ 相关文献链接:

  • 模型组网

Paddle内置的网络模型相关推荐

  1. Python 常用内置函数map、zip、filter、reduce、enumerate

    Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...

  2. python内置库之学习configparser库(一)

    python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...

  3. 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...

  4. python3 内置函数map 返回的迭代器转为列表

    python3 内置函数map 返回的是迭代器,python2 返回的才是列表, 在python3中想要使用需要把迭代器在转换成列表 list_a = [1, 2, 3, 4, 5]def add(n ...

  5. 博客园在微信内置浏览器打开时添加微信赞赏码功能

    我的博客开通了赞赏,看右侧悬浮[打赏],很容易弄,文末有链接. 另外,在微信中打开时,博客正文底部增加微信赞赏码,在微信内置浏览器打开时,长按图片识别,直接可以赞赏. 这本人自己摸索的,未参考任何博文 ...

  6. Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...

    ## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变, ...

  7. python-字符串数据类型内置方法

    字符串类型内置方法 (str) 用途:描述性质的东西,如人的名字.单个爱好.地址.国家等 定义:使用单引号(' ').双引号(" ").三单引号(''' ''').三双引号(&qu ...

  8. 13装饰器和内置函数

    装饰器 # 1.装饰用的工具# import time #内置函数计算函数运行时间 # print(time.time())# import time # def func(): # start_ti ...

  9. Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用

    Python 内置的 itertools 模块使用了 yield 生成器. 1. chain 拼接迭代器 chain 函数实现元素拼接,原型如下,参数 * 表示可变的参数: chain(*iterab ...

最新文章

  1. win10下gnuplot的安装和使用
  2. 【网址收藏】hexo博客主题收藏
  3. mongoose 查询 find 指定字段
  4. Java面向对象之构造方法模拟捕鱼达人游戏【附源码】
  5. 苹果手机录屏软件_手机录屏高清软件下载-手机录屏高清 安卓版v1.0.0
  6. 如何解决U盘装系统后磁盘总容量变小
  7. 大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:5.工厂模式之抽象工厂模式
  8. (转)如何将Sklearn数据集Bunch格式转换为Pandas数据集DataFrame?
  9. 网站上传服务器浏览器打不开,网站发布或自己上传程序后,网站打不开的原因有哪些?...
  10. 使用Ps制作飞机路过的动画
  11. 得力针式打印机第一联清晰第二联不清晰解决办法
  12. 《个人助手》新模块——数据手袋
  13. 集成测试的“面子”和“里子”
  14. Unity3d 技巧(3)-如何在自己的程序中 Shader.Find 到自己写的shader
  15. No provider available from registry 127.0.0.1:2181 for service com.ddbuy.ser 解决方法
  16. vue-infinite-loading的使用方法
  17. 5G NR 网络类型移动开发小记
  18. python 路径前面添加 r 的意思
  19. 金融业信贷风控算法9-聚类场景之K均值聚类与K邻近聚类
  20. 【图像分割】基于matlab GUI医学图像均值聚类+OUST+区域生长法图像分割【含Matlab源码 2210期】

热门文章

  1. 异步社区本周半价电子书
  2. 朴素贝叶斯分类器的应用-转载加我的理解注释
  3. datastage 重启
  4. Juju-Gui 安装笔记
  5. Windows Server 2008常见的安全设置
  6. admin及admin888 经过 md5加密后16位和32位代码
  7. Linux下的I/O
  8. 搭建本地,AWS和Azure之间的IPSec 连接
  9. python基础之socket编程
  10. linux 新建用户(添加ssh用户两者方式一样)