虽然我正在阅读如何在pybrain中构建ANN,但他们说:
训练网络一些时代。通常你会设置一些东西 像这里的5,
trainer.trainEpochs( 1 )
我寻找的是什么意思,然后我得出结论,我们使用一个数据时代来更新权重,如果我选择训练5个时期的数据作为pybrain建议,数据集将被分为5个子集,并且wights将最多更新5次。
我熟悉在每次样本数据或特征向量后更新权重的在线培训,我的问题是如何确定5个时代足以构建模型并设置权重?这种方式在线培训的优势是什么?也是术语" epoch"用于在线培训,是否意味着一个特征向量?
答案 0 :(得分:92)
一个时期包括训练集上的一个完整训练周期。一旦看到集合中的每个样本,您将再次开始 - 标记第二个时期的开始。
这与批量或在线培训本身无关。批处理意味着您在纪元结束时(在看到每个样本,即#epoch更新之后)更新一次,并在每个之后更新> 示例(#samples * #epoch updates)。
您无法确定5个纪元或500个是否足以收敛,因为它会因数据而异。当误差收敛或低于某个阈值时,您可以停止训练。这也涉及防止过度拟合的领域。您可以在early stopping和cross-validation上阅读相关内容。
答案 1 :(得分:1)
抱歉重新激活此主题。 我是神经网络的新手,我正在研究“小批量”训练的影响。
到目前为止,据我所知,一个纪元(as runDOSrun is saying)是通过使用TrainingSet中的all(而不是DataSet。因为DataSet = TrainingSet + ValidationSet)。在迷你批量训练中,您可以将TrainingSet细分为小集并更新纪元内的权重。 “希望”这会使网络“更快地融合”。
神经网络的某些定义已经过时,我想,必须重新定义。
答案 2 :(得分:0)
时期数是一个超参数,它定义了学习算法在整个训练数据集中工作的次数。一个时期意味着训练数据集中的每个样本都有一次更新模型内部参数的机会。