假设我的列车设置非常大,以便Matlab在训练时挂起或没有足够的内存来保持列车设置。
是否可以将训练集分成几部分并按部分训练网络?
是否可以一次一个样本(逐个)训练网络?
答案 0 :(得分:5)
您可以手动将数据集分成批次并逐个训练:
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
optim可以提供帮助。
此外,您可以尝试使用trainlm
之类的内存消耗,而不是默认的trainrp
算法。
有关培训算法的详细信息,请检查matlab documentation page。
我假设您正在使用相应的matlab工具箱进行神经网络。
关于一次训练一个样本,您可以尝试使用谷歌搜索随机梯度下降算法。但是,它似乎不是工具箱中默认的训练算法集。