我现在开始发现Keras图书馆的学习,似乎在训练阶段选择了一个分钟数,但我不知道这个选择基于哪个假设。
在Mnist数据集中,所选时期的数量为4:
model.fit(X_train, Y_train,
batch_size=128, nb_epoch=4,
show_accuracy=True, verbose=1,
validation_data=(X_test, Y_test))
有人能告诉我为什么以及如何选择正确数量的时代?
答案 0 :(得分:5)
似乎你可能正在使用旧版本的keras,nb_epoch指的是已被epoch取代的时代数
如果查看here,您会看到它已被弃用。
一个时代意味着您已经训练了所有数据集(所有记录)一次,如果您有384条记录,则一个时期意味着您已经在所有384条记录上训练了所有数据集。 批量大小意味着您建模的数据在单次迭代中使用,在这种情况下,128批量大小意味着您的模型一次需要128并执行一次前向传递和后向传递(反向传递)[这称为一次迭代] 。它 为了分解这个例子,一次迭代,你的模型从你的整个384中获取128条记录[第一批]进行训练并进行前向传球和后向传球(反向传播)。 在第二批,它需要129到256个记录并进行另一次迭代。 然后是第3批,从256到384并执行第3次迭代。 在这种情况下,我们说它已经完成了一个时代。 epoch的数量告诉模型它必须重复所有这些过程然后停止。
没有正确的方法来选择一些时代,这是通过实验来完成的,通常当模型停止学习(损失不再下降)时,你通常会降低学习率,如果不是在那之后下去,结果似乎或多或少正如你所料,然后你选择那个模型停止学习的时代
我希望它有所帮助
答案 1 :(得分:4)
启动Keras 2.0,nb_epoch
参数已在任何地方重命名为epochs
。
迭代训练神经网络,对整个数据集进行多次传递。对整个数据集的每次传递都称为纪元。
有两种可能的方法可以选择最佳的历元数:
1)将epochs
设置为较大的数字,并在验证准确性或损失停止改善时停止培训:所谓的early stopping
from keras.callbacks import EarlyStopping
early_stopping = EarlyStopping(monitor='val_loss', patience=4, mode='auto')
model.fit(X_train, Y_train,
batch_size=128, epochs=500,
show_accuracy=True, verbose=1,
validation_data=(X_test, Y_test),callbacks = [early_stopping])
2)将时期数作为超参数考虑,并根据epochs
值网格上的一组试验(运行)选择最佳值
答案 2 :(得分:1)
在神经网络中,一个纪元等同于使用每个数据训练一次网络。
时期数nb_epoch
因此是您在培训期间重复使用数据的次数。