zoukankan      html  css  js  c++  java
  • 如何估算神经网络参数占用多少内存或显存容量

    问题引出

    假设输入是高和宽均为 1,000 像素的彩色照片(含3个通道)。即使全连接层输出个数仍是256,该层权重参数的形状也是 3,000,000×256 :它占用了大约3 GB的内存或显存。这会带来过于复杂的模型和过高的存储开销。————《动手学深度学习》第5章第5节

    有人在讨论区提出3 GB是如何计算得来的?我自己计算过后,在讨论区回复了,在这里Mark和分享下。要回答这个问题,我们要分析如下几个子问题:

    • 全连接输入个数
    • 全连接参数个数
    • 神经网络参数数值类型
    • 1GB等于多少字节

    全连接输入个数

    • 使用全连接网络,每个通道的每个像素被当做一个输入。
    • 因此,1张高和宽均为1000像素(含3个通道)的照片,共有1000*1000*3个输入;

    全连接参数个数

    • 对于全连接网络层,每个输入连接到所有神经元单元,或者说每个神经网络单元连接所有输入,每个连接就是一个参数,所以全连接网络参数个数等于输入个数*神经元单元数。
    • 全连接层使用256个输出单元,那么总的连接数(即参数个数)为1000*1000*3*256个

    神经网络参数数值类型

    • 网络参数为浮点小数,通常用float单精度表示,单精度float占32位/4个字节
    • 那么总的字节数为3*1000*1000*256*4

    1GB等于多少字节

    • 1GB=1024M=1024*1024K=1024*1024*1024字节

    问题求解

    • 因此,参数占用内存或显存容量 (=frac{参数个数*4}{1024^3}=frac{3*1000*1000*256*4}{1024*1024*1024}={2.86GB}approx 3GB)
  • 相关阅读:
    CUDA运行时 Runtime(一)
    CUDA C++程序设计模型
    CUDA C++编程手册(总论)
    深度学习到底有哪些卷积?
    卷积神经网络去雾去雨方法
    马斯克如何颠覆航天? 1/5385成本,c++和python编程!
    CUDA 9中张量核(Tensor Cores)编程
    利用表达式调用全局变量计算出错原因
    述函数的作用,浏览器执行函数的过程
    表达式的差异和相同点
  • 原文地址:https://www.cnblogs.com/gradual/p/14179632.html
Copyright © 2011-2022 走看看