| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 关于深度学习神经网络模型训练,参数过大,导致显卡内存溢出问题的总结 -> 正文阅读 |
|
[人工智能]关于深度学习神经网络模型训练,参数过大,导致显卡内存溢出问题的总结 |
实验是利用LeNet-5模型,计算手写数字集得误差。结果刚加载模型显卡内存就溢出。 ? 报错如下: 先用keras来计算网络的大小,参数的个数。 (50000, 32, 32, 3) (50000,) (10000, 32, 32, 3) (10000,) sample: (512, 32, 32, 3) (512,) tf.Tensor(-1.0, shape=(), dtype=float32) tf.Tensor(1.0, shape=(), dtype=float32) Model: "res_net_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= sequential_8 (Sequential) multiple 2048 _________________________________________________________________ sequential_9 (Sequential) multiple 148736 _________________________________________________________________ sequential_10 (Sequential) multiple 526976 _________________________________________________________________ sequential_12 (Sequential) multiple 2102528 _________________________________________________________________ sequential_14 (Sequential) multiple 8399360 _________________________________________________________________ global_average_pooling2d_1 ( multiple 0 _________________________________________________________________ dense_1 (Dense) multiple 5130 ================================================================= Total params: 11,184,778 Trainable params: 11,176,970 Non-trainable params: 7,808 _________________________________________________________________ --------------------------------------------------------------------------- 训练集张量x(50000, 32, 32, 3)? ?y(50000,) 测试集张量大小:(10000, 32, 32, 3) (10000,) leNet-5卷积神经网络参数为11,184,778,待优化参数为11,176,970,总的不需要优化参数为:7,808。 现在计算装备数据到显卡需要多少内存: 1 兆字节(MB)=1048576 字节(B) 在计算机中,一个float类型的变量,至少需要占4B内存,Python语言中float内存占用更多。那么也是就是说,单就存储网格参数,就需要42.67MB内存,实际上,网络的训练膜过程中还需要缓存计算图模型,梯度信息,输入和中间计算结果等,其中梯度相关运算占用资源非常多。 那么实际运行中,到底要消耗多少没存,我们需要使用可视化工具,监视TensorFlow在计算过程中的参数的变化与消耗的内存占多少。 接下来的解决方法 1.调小批量batch size. 2.减少输入层的input数量。 后续写出代码示例? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/27 8:31:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |