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 ...
随机推荐
- 网站下/.git/index查看
遇见有些网站目录中存在 http://target.com/.git/index 由于index是二进制文件 下载回来本地查看 初始化 下载到.git目录 git checkout-index -a
- python练习--1
ID_CARD = input("Input your ID Card: ") length = len(ID_CARD) if length < 5: NEW_ID_CAR ...
- axios utils axios.postForm
npm install axios -S 目录 ajax.js 请求工具 /* ajax请求函数模块 返回值: promise对象(异步返回的数据是: response.data) */ impo ...
- 区块链技术与应用:02-BTC-密码学原理
本文为个人整理笔记,知识点来源于北京大学肖臻老师的<区块链技术与应用>公开课视频:https://www.bilibili.com/video/BV1Vt411X7JF?from=sear ...
- sdut——4541:小志志和小峰峰的日常(取石子博弈模板题 4合1)
小志志和小峰峰的日常 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 小志志和小峰峰特别喜欢一起讨论一些很好玩的问题. ...
- Innodb的Buffer Pool
什么是Buffer Pool 为了缓存磁盘中的页,MySQL服务器启动的时候就向操作系统申请了一片连续的内存,他们给这片内存起了个名,叫做Buffer Pool(中文名是缓冲池).innodb_buf ...
- 布局管理器wx.BoxSizer
b = wx.BoxSizer( wx.VERTICAL ) b.Add(self.notebook1, 1, wx.EXPAND) self.parent.SetSizer(b) 解析以上代码原理, ...
- BeautifulSoup模块的使用方法
本篇文章主要讲bs4模块(BeautifulSoup),这个模块能做么呢?用一句话来概括的话:beautifulsoup4 从HTML或XML文件中提取数据的Python库,用它来解析爬取回来的xml ...
- ABAP 调用HTTP上传附件(二)之中文乱码
1.这篇文章的由来 之前已经发表了<ABAP 调用HTTP上传附件>的文章,详细介绍了如何通过HTTP请求传输附件,可点击链接参考原有文档 因为之前对传输文件的中文文件名处理上解释不够详细 ...
- Go 语言:如何利用好 TDD 学习指针并了解 Golang 中的 error 处理
我们在上一节中学习了结构体(structs),Go语言:利用 TDD 驱动开发测试 学习结构体.方法和接口 它可以组合与一个概念相关的一系列值. 你有时可能想用结构体来管理状态,通过将方法暴露给用户的 ...