| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 【深度学习】参数量、模型大小、显存 -> 正文阅读 |
|
[人工智能]【深度学习】参数量、模型大小、显存 |
????????对于一个深度学习神经网络来说,其通常包含很多卷积层,用于不断提取目标的特征,或对目标进行最终定位或者分类。 1 数据存储精度与存储空间????????在深度学习神经网络中,最常见的数据格式是float32,占4个字节(Byte)。类似地,float16,占2个字节。1024个字节为1KB,1024x1024个字节为1MB。那么存储10000个参数需要的内存大小为10000x4 Bytes,约为39KB。存储100万个参数需要的内存大小为39x100/1024MB,约为3.8MB。 ????????深度学习神经网络的参数量通常是百万级之上的,所以我们可以将3.8MB看作是一个基本单位,即每一百万个数字需要3.8MB。 ????????注意到,不仅仅是参数存储需要空间,数据本身(例如图像的像素、特征图中的每个元素)也是一个数字,也需要相同的存储空间。 2 单层卷积参数量????????这里,首先以一层卷积为例,假设卷积为二维卷积Conv2d,输入通道为C1,输出通道为C2,卷积核大小为KxK,batch size大小为N,数据格式为float 32,经过卷积后特征图大小为HxW。 ? ? ? ? 那么,卷积本身的参数量为C2xC1xKxK。将C1看作输入数据的特征维度,卷积是要对每个特征维度都进行KxK卷积。每进行一次卷积就可以得到一个HxW的特征图。通道C2相当于进行了C2次卷积,为特征图的每个元素赋予C2个特征。因此,卷积本身的参数量为C2xC1xKxK,亦即模型本身的大小。如果除卷积外,还有偏置参数,那么参数量为C2xC1x(KxK+1)。这里忽略偏置参数量,因为相比总的参数量来说,偏置所占比例较小。 ? ? ? ? 在训练阶段,模型还需要存储梯度相关参数,并且不同的优化器需要的参数个数也是不同的。因此,模型参数量至少需要乘以2,即C2xC1xKxKx2。 3 单层输出参数量? ? ? ? 输出参数量是指特征图存储的参数量。如上所述,模型输出的特征图尺寸大小为HxW,通道数为C2,那么总的参数量为C2xHxW。对于三维卷积,模型输出的特征图会有三个维度,即HxWxD。 ? ? ? ? 在模型训练时,计算还需要存储反向传播的特征图,因此输出参数量也需要乘以2,即C2xHxWx2。由于训练阶段会有多个batch同时进行,因此参数量还需乘上batch size,即NxC2xHxWx2。 4 总体参数量与显存大小? ? ? ? 模型总的参数量为各个卷积层参数量之后,每一层参数量用C2xC1xKxK计算。 ? ? ? ? 训练阶段总的参数为模型参数量与输出参数量之和,即C2xC1xKxK+NxC2xHxWx2。 ? ? ? ? 推理阶段总的参数为模型参数量与输出参数量之和,即C2xC1xKxKx2+C2xHxW。 5 示例? ? ? ? 假设C1=256,C2=512,H=128,W=128,K=3,N=8。 ? ? ? ? 那么模型参数量为:C2xC1xKxKx2=2359296,存储大小为2359296x4/1024/1024MB=9MB。 ? ? ? ? 训练阶段参数量为C2xC1xKxK+NxC2xHxWx2=136577024,显存占用136577024x4/1024/1024MB=521MB。 ? ? ? ? 推理阶段参数量为C2xC1xKxKx2+C2xHxW=10747904,显存占用41MB。 ? ? ? ? 以上仅仅是就一层而言的计算结果,深度学习神经网络总的参数量、模型大小和显存可以通过逐一计算每层的结果,最后求和即可。 6?【python三维深度学习】python三维点云从基础到深度学习_Coding的叶子的博客-CSDN博客_python三维点云重建更多三维、二维感知算法和金融量化分析算法请关注“乐乐感知学堂”微信公众号,并将持续进行更新。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:42:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |