4

假设我有非常大的训练集,因此 Matlab 在训练时挂起,或者没有足够的内存来保存训练集。

是否可以将训练集拆分为部分并按部分训练网络?

是否可以一次用一个样本(一个一个)训练网络?

4

1 回答 1

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优化可能会有所帮助。trainlm此外,您可以尝试使用较少内存消耗的算法,而不是默认算法,例如trainrp. 有关训练算法的详细信息,请查看matlab 文档页面。我在上面假设您正在为神经网络使用相应的 matlab 工具箱。

关于一次训练一个样本,您可以尝试使用谷歌搜索随机梯度下降算法。但是,看起来它不在工具箱中的默认训练算法集中。

于 2013-07-13T09:53:31.357 回答