如何在 Matlab 中逐步训练神经网络?

Posted

技术标签:

【中文标题】如何在 Matlab 中逐步训练神经网络?【英文标题】:How to train neural network incrementally in Matlab? 【发布时间】:2013-07-11 18:50:36 【问题描述】:

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

是否可以将训练集分成几部分,逐部分训练网络?

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

【问题讨论】:

【参考方案1】:

您可以手动将数据集分成批次并一个接一个地训练它们:

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 工具箱。

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

【讨论】:

在每次迭代中不会覆盖之前的“网络”并覆盖它吗? @Avatar 第一次调用train 将为net 创建初始权重,并从它们开始训练一批。但是所有后续调用都将从在前一批训练网络后获得的权重开始训练。所以通常人们应该期望网络准确性的整体提高。 训练一批是什么意思?像每次训练 100 部分数据?我们不应该使用 adapt() 函数而不是 train 吗?在我的实验中,我观察到当我迭代训练数据时,权重开始形成数据训练部分的形状,并覆盖到之前已经训练过的权重中。我无法克服这个问题。您对此有什么建议吗?

以上是关于如何在 Matlab 中逐步训练神经网络?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MATLAB 中为英国车牌训练神经网络?

在 matlab 上配置和训练后,如何使用神经网络运行预测?

如何在 Matlab 中改进神经网络中的数字识别预测?

Matlab - 神经网络 - 如何使用不同的数据集进行训练、验证和测试?

matlab 神经网络隐含层节点数如何让确定?还有各个节点数量的训练误差如何得出来的比方说:

matlab训练BP神经网络,nntool中如何设置,权值,激活函数的修改等问题