GPU设备内存不足。

209ビュ,(過去30日間)
凯撒
凯撒 2018 年 3 月 16 日
コメント済み: Thyagharajan K K2021 年 11 月 28 日
我正在使用神经网络工具箱进行深度学习,当我进行分类时,我有这个慢性问题。我的DNN模型已经训练过了,尽管我使用的HPC(集群)有Nvidia GeForce 1080,我的机器有GeForce 1080Ti,但在分类过程中我一直收到相同的错误。错误是:
在设备上使用nnet.internal.cnngpu.convolveForward2D错误。要查看GPU上可用内存的更多细节,请使用'gpuDevice()'。如果问题仍然存在,通过调用“gpuDevice(1)”重置GPU。
nnet.internal.cnn.layer.util.Convolution2DGPUStrategy/forward错误(第14行)
nnet.internal.cnn.layer.Convolution2D/doForward错误(第332行)
nnet.internal.cnn.layer.Convolution2D/forwardNormal错误(第278行)
在nnet.internal.cnn.layer.Convolution2D/predict中出现错误(第124行)
在nnet.内部。cnn. dagnetwork /forwardPropagationWithPredict中出现错误(第236行)
nnet.internal.cnn.DAGNetwork/predict中的错误(第317行)
DAGNetwork/predict中的错误(第426行)
DAGNetwork/ classification中的错误(第490行)
Guisti_test_script中的错误(第56行)
并行:gpu:数组:伯父
以前有人遇到过同样的问题吗?
Ps:我的测试数据包含15000张图片。
1件のコメント
Thyagharajan K K
Thyagharajan K K 2021 年 11 月 28 日
我也遇到过类似的问题。主要原因是由于大量的可学习参数。您可以减少全连接网络中的节点数量,或者您可以通过增加步幅值来减少全连接层之前可用层的大小,或者您可以同时减少两者。

サ▪▪ン▪▪ンしてコメントする。

採用された回答

神骑士
神骑士 2018 年 3 月 17 日
减少 “MiniBatchSize” 选项 分类
2件のコメント

サ▪▪ン▪▪ンしてコメントする。

その他の回答(3件)

哈立德Labib
哈立德Labib 2020 年 2 月 19 日
編集済み:哈立德Labib 2020 年 5 月 13 日
在“单幅图像超分辨率的深度学习”MatLab演示中:
我尝试在每次迭代后清除我的gpu内存(gpuDevice(1)),并在“superResolutionMetrics”助手函数中将MiniBatchSize更改为1,如下所示,但它们不起作用(错误:gpu out of memory):
residualImage =激活(net, Iy, 41,“MiniBatchSize”1);
1)为了解决这个问题,你可以使用CPU代替:
residualImage =激活(net, Iy, 41,“ExecutionEnvironment”“cpu”);
我认为这个问题是由测试图像的高分辨率引起的,例如第二张图像“car2.jpg”,它是3504 x 2336。
2)更好的解决方案是低分辨率图像使用GPU,高分辨率图像使用CPU,将“residualImage =activation (net, Iy, 41)”替换为:
sx =大小(I);
如果Sx (1)>1000 || Sx (2)>1000%如果它不起作用,尝试更低的值,例如:如果sx(1)>500 || sx(2)>500
residualImage =激活(net, Iy, 41,“ExecutionEnvironment”“cpu”);
其他的
residualImage =激活(net, Iy, 41);
结束
3)最有效的解决方案是将图像划分为更小的图像(不重叠的块或块),这样每个小图像的大小在任何一个维度上都是1024或更小,这取决于您的GPU。所以,你可以用GPU处理这些小图像而不会出错。
然后,使用GPU在这些小图像上应用你的CNN。之后,你可以将小图像组合成原始图像的大小。
1件のコメント
瑞马
瑞马 2020 年 4 月 22 日
編集済み:瑞马 2020 年 4 月 22 日
谢谢!它的工作原理!虽然有点慢

サ▪▪ン▪▪ンしてコメントする。


玛丽骑士
玛丽骑士 2019 年 6 月 4 日
編集済み:玛丽骑士 2019 年 6 月 4 日
你好,
我在这里有一个类似的问题,而Joss给出的链接并不能真正帮助我了解如何修复它。
我正在做“单图像超分辨率使用深度学习”的MatLab演示。
我想在我自己的图像上使用预训练的网络。
当我到达一行时,我得到了类似的错误消息:
Iresidual = activation (net,Iy_bicubic,41);
我尝试使用命令行gpuDevice(1),但它没有做任何事情。
我还尝试将MiniBatchSize更改为32,而不是默认的128,得到了同样的错误。
有人知道如何解决这个问题吗?
3件のコメント
阿卡什Tadwai
阿卡什Tadwai 2019 年 12 月 17 日
@Joss Knight,这对我来说还是不管用。我用1的迷你批处理大小训练alex net,但MATLAB仍然给出相同的错误。
Alexnet

サ▪▪ン▪▪ンしてコメントする。


Alvaro Lopez Anaya
Alvaro Lopez Anaya 2019 年 11 月 7 日
在我的情况下,我有类似的问题,尽管我有一个gtx1080Ti。
正如Joss所说,减小MiniBatchSize解决了我的问题。这都是关于培训的选择。

タグ

製品

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!

翻译的