PaddlePaddle 飞桨复现 VGG16
import paddle.nn as nn
class VGG16(nn.Layer):
def __init__(self, num_classes=1000):
super(VGG16, self).__init__()
self.layer1 = nn.Sequential(
nn.Conv2D(3, 64, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(64),
nn.ReLU(),
)
self.layer2 = nn.Sequential(
nn.Conv2D(64, 64, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(64),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2)
)
self.layer3 = nn.Sequential(
nn.Conv2D(64, 128, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(128),
nn.ReLU(),
)
self.layer4 = nn.Sequential(
nn.Conv2D(128, 128, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(128),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2)
)
self.layer5 = nn.Sequential(
nn.Conv2D(128, 256, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(256),
nn.ReLU(),
)
self.layer6 = nn.Sequential(
nn.Conv2D(256, 256, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(256),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2)
)
self.layer7 = nn.Sequential(
nn.Conv2D(256, 512, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(512),
nn.ReLU(),
)
self.layer8 = nn.Sequential(
nn.Conv2D(512, 512, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(512),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2)
)
self.layer9 = nn.Sequential(
nn.Conv2D(512, 512, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(512),
nn.ReLU(),
)
self.layer10 = nn.Sequential(
nn.Conv2D(512, 512, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(512),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2)
)
self.layer11 = nn.Sequential(
nn.Conv2D(512, 512, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(512),
nn.ReLU(),
)
self.layer12 = nn.Sequential(
nn.Conv2D(512, 512, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(512),
nn.ReLU(),
)
self.layer13 = nn.Sequential(
nn.Conv2D(512, 512, kernel_size=3, stride=1, padding=1),
nn.BatchNorm2D(512),
nn.ReLU(),
nn.MaxPool2D(kernel_size=2, stride=2)
)
self.fc = nn.Sequential(
nn.Dropout(0.5),
nn.Linear(4*4*512, 4096),
nn.ReLU())
self.fc1 = nn.Sequential(
nn.Dropout(0.5),
nn.Linear(4096, 512),
nn.ReLU())
self.fc2= nn.Sequential(
nn.Linear(512, num_classes))
def forward(self, x):
out = self.layer1(x)
out = self.layer2(out)
out = self.layer3(out)
out = self.layer4(out)
out = self.layer5(out)
out = self.layer6(out)
out = self.layer7(out)
out = self.layer8(out)
out = self.layer9(out)
out = self.layer10(out)
out = self.layer11(out)
out = self.layer12(out)
out = self.layer13(out)
out = paddle.reshape(out, [out.shape[0],-1])
out = self.fc(out)
out = self.fc1(out)
out = self.fc2(out)
return out
paddle.Model(VGG16(num_classes=2)).summary((-1,3,256,256))
W0505 00:38:12.705672 18379 device_context.cc:447] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.1
W0505 00:38:12.711607 18379 device_context.cc:465] device: 0, cuDNN Version: 7.6.
---------------------------------------------------------------------------
Layer (type) Input Shape Output Shape Param #
===========================================================================
Conv2D-1 [[1, 3, 256, 256]] [1, 64, 256, 256] 1,792
BatchNorm2D-1 [[1, 64, 256, 256]] [1, 64, 256, 256] 256
ReLU-1 [[1, 64, 256, 256]] [1, 64, 256, 256] 0
Conv2D-2 [[1, 64, 256, 256]] [1, 64, 256, 256] 36,928
BatchNorm2D-2 [[1, 64, 256, 256]] [1, 64, 256, 256] 256
ReLU-2 [[1, 64, 256, 256]] [1, 64, 256, 256] 0
MaxPool2D-1 [[1, 64, 256, 256]] [1, 64, 128, 128] 0
Conv2D-3 [[1, 64, 128, 128]] [1, 128, 128, 128] 73,856
BatchNorm2D-3 [[1, 128, 128, 128]] [1, 128, 128, 128] 512
ReLU-3 [[1, 128, 128, 128]] [1, 128, 128, 128] 0
Conv2D-4 [[1, 128, 128, 128]] [1, 128, 128, 128] 147,584
BatchNorm2D-4 [[1, 128, 128, 128]] [1, 128, 128, 128] 512
ReLU-4 [[1, 128, 128, 128]] [1, 128, 128, 128] 0
MaxPool2D-2 [[1, 128, 128, 128]] [1, 128, 64, 64] 0
Conv2D-5 [[1, 128, 64, 64]] [1, 256, 64, 64] 295,168
BatchNorm2D-5 [[1, 256, 64, 64]] [1, 256, 64, 64] 1,024
ReLU-5 [[1, 256, 64, 64]] [1, 256, 64, 64] 0
Conv2D-6 [[1, 256, 64, 64]] [1, 256, 64, 64] 590,080
BatchNorm2D-6 [[1, 256, 64, 64]] [1, 256, 64, 64] 1,024
ReLU-6 [[1, 256, 64, 64]] [1, 256, 64, 64] 0
MaxPool2D-3 [[1, 256, 64, 64]] [1, 256, 32, 32] 0
Conv2D-7 [[1, 256, 32, 32]] [1, 512, 32, 32] 1,180,160
BatchNorm2D-7 [[1, 512, 32, 32]] [1, 512, 32, 32] 2,048
ReLU-7 [[1, 512, 32, 32]] [1, 512, 32, 32] 0
Conv2D-8 [[1, 512, 32, 32]] [1, 512, 32, 32] 2,359,808
BatchNorm2D-8 [[1, 512, 32, 32]] [1, 512, 32, 32] 2,048
ReLU-8 [[1, 512, 32, 32]] [1, 512, 32, 32] 0
MaxPool2D-4 [[1, 512, 32, 32]] [1, 512, 16, 16] 0
Conv2D-9 [[1, 512, 16, 16]] [1, 512, 16, 16] 2,359,808
BatchNorm2D-9 [[1, 512, 16, 16]] [1, 512, 16, 16] 2,048
ReLU-9 [[1, 512, 16, 16]] [1, 512, 16, 16] 0
Conv2D-10 [[1, 512, 16, 16]] [1, 512, 16, 16] 2,359,808
BatchNorm2D-10 [[1, 512, 16, 16]] [1, 512, 16, 16] 2,048
ReLU-10 [[1, 512, 16, 16]] [1, 512, 16, 16] 0
MaxPool2D-5 [[1, 512, 16, 16]] [1, 512, 8, 8] 0
Conv2D-11 [[1, 512, 8, 8]] [1, 512, 8, 8] 2,359,808
BatchNorm2D-11 [[1, 512, 8, 8]] [1, 512, 8, 8] 2,048
ReLU-11 [[1, 512, 8, 8]] [1, 512, 8, 8] 0
Conv2D-12 [[1, 512, 8, 8]] [1, 512, 8, 8] 2,359,808
BatchNorm2D-12 [[1, 512, 8, 8]] [1, 512, 8, 8] 2,048
ReLU-12 [[1, 512, 8, 8]] [1, 512, 8, 8] 0
Conv2D-13 [[1, 512, 8, 8]] [1, 512, 8, 8] 2,359,808
BatchNorm2D-13 [[1, 512, 8, 8]] [1, 512, 8, 8] 2,048
ReLU-13 [[1, 512, 8, 8]] [1, 512, 8, 8] 0
MaxPool2D-6 [[1, 512, 8, 8]] [1, 512, 4, 4] 0
Dropout-1 [[1, 8192]] [1, 8192] 0
Linear-1 [[1, 8192]] [1, 4096] 33,558,528
ReLU-14 [[1, 4096]] [1, 4096] 0
Dropout-2 [[1, 4096]] [1, 4096] 0
Linear-2 [[1, 4096]] [1, 512] 2,097,664
ReLU-15 [[1, 512]] [1, 512] 0
Linear-3 [[1, 512]] [1, 2] 1,026
===========================================================================
Total params: 52,159,554
Trainable params: 52,141,634
Non-trainable params: 17,920
---------------------------------------------------------------------------
Input size (MB): 0.75
Forward/backward pass size (MB): 383.73
Params size (MB): 198.97
Estimated Total Size (MB): 583.45
---------------------------------------------------------------------------
{'total_params': 52159554, 'trainable_params': 52141634}
PaddlePaddle 飞桨复现 VGG16的更多相关文章
- 提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件
提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件 11月5日,在『WAVE Summit+』2019 深度学习开发者秋季峰会上,百度对外发布基于 ERNIE 的语义理解 ...
- 树莓派4B安装 百度飞桨paddlelite 做视频检测 (一、环境安装)
前言: 当前准备重新在树莓派4B8G 上面搭载训练模型进行识别检测,训练采用了百度飞桨的PaddleX再也不用为训练部署环境各种报错发愁了,推荐大家使用. 关于在树莓派4B上面paddlelite的文 ...
- Ubuntu 百度飞桨和 CUDA 的安装
Ubuntu 百度飞桨 和 CUDA 的安装 1.简介 本文主要是 Ubuntu 百度飞桨 和 CUDA 的安装 系统:Ubuntu 20.04 百度飞桨:2.2 为例 2.百度飞桨安装 访问百度飞桨 ...
- 【一】ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?
参考文章: 深度剖析知识增强语义表示模型--ERNIE_财神Childe的博客-CSDN博客_ernie模型 ERNIE_ERNIE开源开发套件_飞桨 https://github.com/Pad ...
- 百度飞桨数据处理 API 数据格式 HWC CHW 和 PIL 图像处理之间的关系
使用百度飞桨 API 例如:Resize Normalize,处理数据的时候. Resize:如果输入的图像是 PIL 读取的图像这个数据格式是 HWC ,Resize 就需要 HWC 格式的数据. ...
- 【百度飞桨】手写数字识别模型部署Paddle Inference
从完成一个简单的『手写数字识别任务』开始,快速了解飞桨框架 API 的使用方法. 模型开发 『手写数字识别』是深度学习里的 Hello World 任务,用于对 0 ~ 9 的十类数字进行分类,即输入 ...
- 我做的百度飞桨PaddleOCR .NET调用库
我做的百度飞桨PaddleOCR .NET调用库 .NET Conf 2021中国我做了一次<.NET玩转计算机视觉OpenCV>的分享,其中提到了一个效果特别好的OCR识别引擎--百度飞 ...
- 飞桨paddlespeech语音唤醒推理C实现
上篇(飞桨paddlespeech 语音唤醒初探)初探了paddlespeech下的语音唤醒方案,通过调试也搞清楚了里面的细节.因为是python 下的,不能直接部署,要想在嵌入式上部署需要有C下的推 ...
- 飞桨AI 文本实体抽取 数据准备(excel 文本标注)
网纸: https://ai.baidu.com/easydl/app/deploy/tee/public #!/usr/bin/env python3 # -*- coding: utf-8 -*- ...
- 手把手0基础Centos下安装与部署paddleOcr 教程
!!!以下内容为作者原创,首发于个人博客园&掘金平台.未经原作者同意与许可,任何人.任何组织不得以任何形式转载.原创不易,如果对您的问题提供了些许帮助,希望得到您的点赞支持. 0.paddle ...
随机推荐
- k8s集群跨namespace访问服务
场景:自己有一个java应用部署在test命名空间下,但是一直无法访问到middleware命名空间下的mysql服务 查找资料发现下面所说的问题 我们通常会把mysql,redis,rabbitmq ...
- idea远程仓库无法更新导致的各种错误,jar包无法下载
直接把下面的配置替换成settings.xml中的内容 <?xml version="1.0" encoding="UTF-8"?> <set ...
- MarkDown基本用法学习
一级标题 语法:# +内容 二级标题1 语法:## +内容 二级标题2 三级标题 语法:### +内容 字体 加粗 语法:** +内容+ **(中间无空格) 效果:粗体 斜体 语法 * +内容+ *( ...
- 微信小程序-顶部下拉菜单实现
最近写的小程序里面需要实现顶部下拉菜单的效果,做一个过滤操作,但是没有找到相关组件,所以动手写了一个. 先看一下这拙劣的效果叭~ 下面就直接看具体实现了嗷! index.wxml <view c ...
- TCP粘包和拆包
假设客户端分别发送了两个数据包D1和D2给服务器,由于服务器一次读取的字节数是不确定的,故可能存在以下4中情况: 服务端分两次读到了两个独立的数据包D1和D2,没有粘包和拆包 服务端分一次收到两个数据 ...
- leetcode medium 记录 1-50
# Title Solution 二刷 Difficulty 备注 2 Add Two Numbers X Medium 3 Longest Substring Wi ...
- SpringBoot——常用配置
application.yml配置信息 spring: profiles: active: dev application: name: jwt-token-security # Jackson 配置 ...
- 推荐一套轻量级的开源图床系统:Light Fast Picture
如果您跟我一样平时有些博客的习惯,那么图片存储是否有困扰过你呢?今天就给大家推荐一款不错的开源图床系统:Light Fast Picture 它是一个基于koa + vue3.x + typescri ...
- 红黑树(map与unorder_map)B B+树
红黑树(map) 这个里面有插入的几种方式:红黑树性质的理解 先说性质,1 每个节点要么红要么黑,2 一个节点为红色,左右两个孩子都是黑, 3 根节点是黑, 4 每个叶子(nil)节点都是黑色, 5 ...
- 【数据结构与算法学习】散列表(Hash Table,哈希表)
实现语言:C++ 1. 散列表 散列表,英文名称为Hash Table,又称哈希表.杂凑表等. 线性表和树表的查找是通过比较关键字的方法,查找的效率取决于关键字的比较次数. 而散列表是根据关键字直接访 ...