我知道这是一个非常常见的问题,但我尝试的所有解决方案都失败了。
基本上我想培养一个庞大的神经网络,并获得“记忆力不足”。错误。
我的训练集是729 x 3456
双打矩阵,神经网络是所谓的自动编码器'这些尺寸的图层
3456 - 4000 - 2000 - 1000 - 300 - 1000 - 2000 - 4000 - 3456
在我的代码中,首先我做了
net = feedforwardnet([layer1, layer2, layer3, layer4, layer3, layer2, layer1], 'trainscg');
net = configure(net, Dtrain', Dtrain');
我使用' trainscg'函数,因为我读到它是使用较少内存的那个。 然后我根据一些值(我已经计算过)初始化权重和偏差,设置' transferFcn'并开始训练。
我尽可能地清理了工作区,我也尝试了
net.efficiency.memoryReduction = 4;
在训练之前,我读过它可以提供帮助。无论如何,即使我将值增加到60,我仍然会“内存不足”。
这是命令' memory'的输出,当工作空间仅包含训练集和四个数字(层的大小)时执行
>> memory
Maximum possible array: 4508 MB (4.727e+09 bytes) *
Memory available for all arrays: 4508 MB (4.727e+09 bytes) *
Memory used by MATLAB: 1927 MB (2.020e+09 bytes)
Physical Memory (RAM): 8080 MB (8.472e+09 bytes)
* Limited by System Memory (physical + swap file) available.
我还能做些什么来解决问题?
答案 0 :(得分:0)
您可以检查数据的数据类型以及该数据类型使用的内存。尝试使用内存要求最低的一个。例如:double占用8个字节,单个占用4个字节用于相同的数字。您可以使用 whos 命令检查内存使用情况。
此外,您可以在运行代码之前从任务管理器检查系统性能,如下图所示。可能是您系统上的其他一些进程占用了大部分内存并且可以停止。