Paddle内置的网络模型
简 介: 本文根据文档 模型组网 中给出的信息,总结了在Paddle建立常见到的网络的三种方法。
关键词
: paddle,net,内置网络
Contents
§01 内置模型
1.1 nn简介
飞桨框架2.0
中,组网相关的API
都在paddle.nn
目录下,你可以通过 Sequential
或 SubClass
的方式构建具体的模型。组网相关的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内置的网络模型相关推荐
- Python 常用内置函数map、zip、filter、reduce、enumerate
Python 中有许多非常实用的内置函数,通过这些函数我们可以方便的实现某些功能,下面就列举一些常用的内置函数. 1. map() 函数 map() 可以根据提供的函数对指定序列做映射,它接受一个函数 ...
- python内置库之学习configparser库(一)
python内置库之学习configparser库(一) 1.引言 ini文件简介 [节] 键=值 注:节不能重复出现 2.自己封装了一个增删改查的类,可以参考一下 import configpars ...
- 2021年大数据Hive(五):Hive的内置函数(数学、字符串、日期、条件、转换、行转列)
全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的内置函数 一.数学函数 1. 取整函数: round ...
- python3 内置函数map 返回的迭代器转为列表
python3 内置函数map 返回的是迭代器,python2 返回的才是列表, 在python3中想要使用需要把迭代器在转换成列表 list_a = [1, 2, 3, 4, 5]def add(n ...
- 博客园在微信内置浏览器打开时添加微信赞赏码功能
我的博客开通了赞赏,看右侧悬浮[打赏],很容易弄,文末有链接. 另外,在微信中打开时,博客正文底部增加微信赞赏码,在微信内置浏览器打开时,长按图片识别,直接可以赞赏. 这本人自己摸索的,未参考任何博文 ...
- Python Day26:多态、封装、内置函数:__str__、__del__、反射(反省)、动态导入模块...
## 多态 ```python OOP中标准解释:多个不同类型对象,可以响应同一个方法,并产生不同结果,即为多态 多态好处:只要知道基类使用方法即可,不需要关心具体哪一个类的对象实现的,以不变应万变, ...
- python-字符串数据类型内置方法
字符串类型内置方法 (str) 用途:描述性质的东西,如人的名字.单个爱好.地址.国家等 定义:使用单引号(' ').双引号(" ").三单引号(''' ''').三双引号(&qu ...
- 13装饰器和内置函数
装饰器 # 1.装饰用的工具# import time #内置函数计算函数运行时间 # print(time.time())# import time # def func(): # start_ti ...
- Pyhton 内置 itertools 模块chain、accumulate、compress、drop、take等函数使用
Python 内置的 itertools 模块使用了 yield 生成器. 1. chain 拼接迭代器 chain 函数实现元素拼接,原型如下,参数 * 表示可变的参数: chain(*iterab ...
最新文章
- win10下gnuplot的安装和使用
- 【网址收藏】hexo博客主题收藏
- mongoose 查询 find 指定字段
- Java面向对象之构造方法模拟捕鱼达人游戏【附源码】
- 苹果手机录屏软件_手机录屏高清软件下载-手机录屏高清 安卓版v1.0.0
- 如何解决U盘装系统后磁盘总容量变小
- 大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:5.工厂模式之抽象工厂模式
- (转)如何将Sklearn数据集Bunch格式转换为Pandas数据集DataFrame?
- 网站上传服务器浏览器打不开,网站发布或自己上传程序后,网站打不开的原因有哪些?...
- 使用Ps制作飞机路过的动画
- 得力针式打印机第一联清晰第二联不清晰解决办法
- 《个人助手》新模块——数据手袋
- 集成测试的“面子”和“里子”
- Unity3d 技巧(3)-如何在自己的程序中 Shader.Find 到自己写的shader
- No provider available from registry 127.0.0.1:2181 for service com.ddbuy.ser 解决方法
- vue-infinite-loading的使用方法
- 5G NR 网络类型移动开发小记
- python 路径前面添加 r 的意思
- 金融业信贷风控算法9-聚类场景之K均值聚类与K邻近聚类
- 【图像分割】基于matlab GUI医学图像均值聚类+OUST+区域生长法图像分割【含Matlab源码 2210期】