【问题标题】:ANNs traning, what happen in each epoche?ANNs 训练,每个 epoch 发生了什么?
【发布时间】:2012-10-09 21:46:10
【问题描述】:

我有一个关于人工神经网络训练的问题,

所以我想问一下对于一组输入样本的训练是如何进行的?训练的输入集的大小和训练的 epoch 数之间是否存在某种关系,还是完全独立的?

例如,如果我的 ANN 有 4 个输入和 2000 个训练样本,我会得到一个大小为 4x2000 的输入矩阵。那么对于每个训练周期,是加载整个矩阵,还是每个训练周期只加载一个样本(训练矩阵列)?

【问题讨论】:

    标签: matlab neural-network


    【解决方案1】:

    在神经网络的每个时期,所有神经元的权重值都会更新,所有节点。通常,您拥有的神经元、层和数据越多,获得正确的权重值所需的时期就越多,但是没有一个方程式可以将时期与神经元联系起来。

    对于训练,通常使用反向传播算法(查看维基百科的一个很好的例子),每个权重更新一次。时代越多,您的神经网络就越准确。通常对于训练,您设置 2 个变量:最大 epoch 数和准确率,当最终实现这两个变量之一时,您将停止迭代。

    【讨论】:

    • 好的,谢谢你的回复,但问题是:“对于每个训练时期,是加载整个矩阵,还是只加载一个样本(训练矩阵列)每个训练纪元?”我还没有明确的答案,
    • 是的!整个矩阵。每次迭代都是 NN 的完整演算,所以假设在第一个 epoch 中你可能会得到完美的值!每个 epoch 都会重新计算神经元的权重,试图最小化与 NN 的前一个 epoch 相比的误差(如果您想了解更多关于如何 -> 反向传播的信息!)。所以是的!您的 4x2000 矩阵没有时代信息或没有任何信息,因此每次迭代都会采用整个集合,计算权重,模拟 NN 并检查给定数据的 NN 输出是否等于给定数据
    • 只是添加一点额外的信息:这种学习方法称为批量学习,每次传递都使用整个数据集。您还可以进行小批量学习,每次通过时使用数据的一个子集。这将导致权重以锯齿形而不是直线的方式收敛,但它会运行得更快。如果您有数百万个训练示例并且不想为每个 epoch 都计算它们,这是很好的。您也可以进行在线学习,每次通过一个训练示例,这更不稳定,但速度更快。
    • 感谢 J.Ashworth,但我如何在 Matlab 中做到这一点?
    • trains 用于小批量训练,trainctrainoss 用于在线训练。
    猜你喜欢
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2020-10-22
    • 2020-07-01
    • 2020-10-17
    • 1970-01-01
    • 2018-10-12
    • 2017-09-28
    相关资源
    最近更新 更多