假设我有很大的训练集,导致 Matlab 在训练时挂起,或者没有足够的内存来容纳训练集。
是否可以将训练集分成几部分并逐部分训练网络?
是否可以一次用一个样本(一个一个)来训练网络?
您可以手动将数据集分成批次并逐一训练它们:
for bn = 1:num_batches
inputs = <get batch bn inputs>;
targets = <get batch bn targets>;
net = train(net, inputs, targets);
end
虽然批量大小应该大于 1,但无论如何这应该减少训练的内存消耗。
的情况下trainlm
训练算法,net.efficiency.memoryReduction
优化可以提供帮助。
也可以代替默认的trainlm
您可以尝试消耗内存较少的算法,例如trainrp
。
有关训练算法的详细信息,请检查matlab 文档页面 http://www.mathworks.com/help/nnet/ug/train-the-network.html。
上面我假设您正在使用相应的 matlab 神经网络工具箱。
关于一次训练一个样本,您可以尝试在谷歌上搜索随机梯度下降算法。但是,它看起来并不在工具箱中的默认训练算法集中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)