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的更多相关文章

  1. 提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件

    提速1000倍,预测延迟少于1ms,百度飞桨发布基于ERNIE的语义理解开发套件 11月5日,在『WAVE Summit+』2019 深度学习开发者秋季峰会上,百度对外发布基于 ERNIE 的语义理解 ...

  2. 树莓派4B安装 百度飞桨paddlelite 做视频检测 (一、环境安装)

    前言: 当前准备重新在树莓派4B8G 上面搭载训练模型进行识别检测,训练采用了百度飞桨的PaddleX再也不用为训练部署环境各种报错发愁了,推荐大家使用. 关于在树莓派4B上面paddlelite的文 ...

  3. Ubuntu 百度飞桨和 CUDA 的安装

    Ubuntu 百度飞桨 和 CUDA 的安装 1.简介 本文主要是 Ubuntu 百度飞桨 和 CUDA 的安装 系统:Ubuntu 20.04 百度飞桨:2.2 为例 2.百度飞桨安装 访问百度飞桨 ...

  4. 【一】ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?

    ​ 参考文章: 深度剖析知识增强语义表示模型--ERNIE_财神Childe的博客-CSDN博客_ernie模型 ERNIE_ERNIE开源开发套件_飞桨 https://github.com/Pad ...

  5. 百度飞桨数据处理 API 数据格式 HWC CHW 和 PIL 图像处理之间的关系

    使用百度飞桨 API 例如:Resize Normalize,处理数据的时候. Resize:如果输入的图像是 PIL 读取的图像这个数据格式是 HWC ,Resize 就需要 HWC 格式的数据. ...

  6. 【百度飞桨】手写数字识别模型部署Paddle Inference

    从完成一个简单的『手写数字识别任务』开始,快速了解飞桨框架 API 的使用方法. 模型开发 『手写数字识别』是深度学习里的 Hello World 任务,用于对 0 ~ 9 的十类数字进行分类,即输入 ...

  7. 我做的百度飞桨PaddleOCR .NET调用库

    我做的百度飞桨PaddleOCR .NET调用库 .NET Conf 2021中国我做了一次<.NET玩转计算机视觉OpenCV>的分享,其中提到了一个效果特别好的OCR识别引擎--百度飞 ...

  8. 飞桨paddlespeech语音唤醒推理C实现

    上篇(飞桨paddlespeech 语音唤醒初探)初探了paddlespeech下的语音唤醒方案,通过调试也搞清楚了里面的细节.因为是python 下的,不能直接部署,要想在嵌入式上部署需要有C下的推 ...

  9. 飞桨AI 文本实体抽取 数据准备(excel 文本标注)

    网纸: https://ai.baidu.com/easydl/app/deploy/tee/public #!/usr/bin/env python3 # -*- coding: utf-8 -*- ...

  10. 手把手0基础Centos下安装与部署paddleOcr 教程

    !!!以下内容为作者原创,首发于个人博客园&掘金平台.未经原作者同意与许可,任何人.任何组织不得以任何形式转载.原创不易,如果对您的问题提供了些许帮助,希望得到您的点赞支持. 0.paddle ...

随机推荐

  1. 代码片断:GDI绘制带一定角度的椭圆

    //先将DXF文件中的Ellipse 解析到elpList 中 foreach (Ellipse ellipse in elpList) { //定义一个矩形 RectangleF rect = ne ...

  2. 《Unix/Linux系统编程》第十周学习笔记

    <Unix/Linux系统编程>第十周学习笔记 块设备I/O和缓冲区管理 解释块设备I/O的原理和I/O缓冲的优点 I/O缓冲区:内核中的一系列NBUF缓冲区用作缓冲区缓存.每个缓冲区用一 ...

  3. Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.

    错误原因 在pom中引入了mybatis-spring-boot-starter ,Spring boot默认会加载org.springframework.boot.autoconfigure.jdb ...

  4. ssh反向代理树莓派+motion,实现公网远程视频监控

    注意:本文公网远程监控部分需要借助有公网IP的云服务器进行ssh反向代理. 一.借助motion实现内网的视频监控 准备 插上摄像头,然后输入ls /dev/video*命令检查是否识别了摄像头 安装 ...

  5. ubuntu下删除U盘文件到回收站无法清空问题的解决

    Ubuntu可以自动加载U盘 每当,拷贝新的文件,而空间不足的时候,就会删除原有的文件. 可是,它不是彻底删除,而是放在垃圾箱中(/home/mrc/.local/share/Trash/files) ...

  6. 3DMAX2018安装

    1.下载3DMAX2018安装包并解压 2.打开解压后的文件点击Setup 选择语言和安装位置点击下一步 安装完成后点击enter a serial number 输入序列号066-66666666, ...

  7. Linux基础——操作系统

    1. 操作系统(Operation System,OS) 操作系统作为接口的示意图 如果想在裸机上运行自己所编写的程序,就必须用机器语言书写程序如果计算机上安装了操作系统,就可以在操作系统上安装支持的 ...

  8. Jsp 总结

    JSP中的include的两种用法 1.两种用法 <@inlcude file ="header.jsp"/> 此时引入的是静态的jsp文件,它将引入的jsp中的源代码 ...

  9. Cesium渲染模块之Command

    1. 引言 Cesium是一款三维地球和地图可视化开源JavaScript库,使用WebGL来进行硬件加速图形,使用时不需要任何插件支持,基于Apache2.0许可的开源程序,可以免费用于商业和非商业 ...

  10. 在Vue3+TypeScript 前端项目中使用事件总线Mitt

    事件总线Mitt使用非常简单,本篇随笔介绍在Vue3+TypeScript 前端项目中使用的一些场景和思路.我们在Vue 的项目中,经常会通过emits 触发事件来通知组件或者页面进行相应的处理,不过 ...