我应该为每个批次使用相同的纪元吗?

时间:2019-04-15 21:43:47

标签: python machine-learning deep-learning nlp spacy

我需要了解时代/迭代如何影响深度学习模型的训练。

我正在使用Spacy 2.1.3训练NER模型,我的文档很长,因此每次迭代不能训练200个以上的文档。所以基本上我会

从文档0到文档200-> 20个时代

从文档201到文档400-> 20个时代

以此类推。

也许这是一个愚蠢的问题,但是下一批的时期应该与前0-200的时期相同吗?所以如果我选择20个时期,那么我也必须训练20个时期吗?

谢谢

2 个答案:

答案 0 :(得分:1)

i need to understand how the epochs/iterations affect the training of a deep learning model-谁都不确定。在经过一定数量的时期后,您可能会过度拟合,因此应在验证数据集上检查准确性(或其他指标)。为了解决这个问题,经常采用诸如 Early Stopping 之类的技术。

so i cannot train more than 200 documents per iteration.-您是说一批例子吗?如果是这样,它应该更小(单次迭代中的信息太多且成本太高)。 32通常用于文本数据,最多64。批次的大小通常越小,您训练的时间越长,以便更好地达到最低要求(或逃避鞍点)。

此外,您应该使用Python的生成器,以便可以对大于RAM容量的数据进行迭代。

最后但并非最不重要的是,每个示例通常每个时期训练一次。不同的方法(例如oversamplingundersampling) are sometimes used but usually when your classes distribution is imbalanced (say 10% examples belong to class 0 and 90% to class 1`)或神经网络在特定类别上存在问题(尽管这种方法需要更多经过深思熟虑的方法)。

答案 1 :(得分:0)

通常的做法是仅用1个时期训练每个批次。对20个时期的同一数据子集进行训练可能会导致过度拟合,从而损害模型性能。

要更好地了解每批训练的时期数如何影响您的表现,您可以进行网格搜索并比较结果。