【问题标题】:What does nb_epoch in neural network stands for?神经网络中的 nb_epoch 代表什么?
【发布时间】:2017-07-19 08:49:14
【问题描述】:

我目前正在开始发现用于深度学习的 Keras 库,似乎在训练阶段选择了 10 个 epoch,但我不知道这个选择基于哪个假设。

在 Mnist 数据集中,选择的 epoch 数为 4:

model.fit(X_train, Y_train,
          batch_size=128, nb_epoch=4,
          show_accuracy=True, verbose=1,
          validation_data=(X_test, Y_test))

有人能告诉我为什么以及如何选择正确的时期数吗?

【问题讨论】:

    标签: python keras neural-network deep-learning


    【解决方案1】:

    从 Keras 2.0 开始,nb_epoch 参数已重命名为 epochs

    神经网络经过迭代训练,对整个数据集进行多次遍历。对整个数据集的每次遍历称为 epoch。

    有两种可能的方法来选择最佳时期数:

    1) 将epochs设置为很大的数,当validation accuracy或loss停止提高时停止训练:所谓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) 将 epoch 数视为超参数,并根据 epochs 值网格上的一组试验(运行)选择最佳值

    【讨论】:

      【解决方案2】:

      看来你可能使用的是旧版本的 keras,nb_epoch 是指已被 epoch 替换的 epoch 数

      如果您查看here,您会发现它已被弃用。

      一个 epoch 意味着你已经训练了所有数据集(所有记录)一次,如果你有 384 条记录,一个 epoch 意味着你已经在所有 384 条记录上训练了你的模型。 批量大小是指您的模型在单次迭代中使用的数据,在这种情况下,128 批量大小意味着您的模型一次需要 128 并执行一些单次前向传递和后向传递(反向传播)[这称为一次迭代] 。它 用这个例子来分解它,一次迭代,你的模型从你的整个 384 条记录中获取 128 条记录[第 1 批] 进行训练,并进行前向传播和后向传播(反向传播)。 在第二批中,它需要 129 到 256 条记录并进行另一次迭代。 然后是第 3 批,从 256 到 384 并执行第 3 次迭代。 在这种情况下,我们说它已经完成了一个 epoch。 epoch 的数量告诉模型它必须重复上述所有过程然后停止的次数。

      没有正确的方法来选择多个epoch,它是通过实验来完成的,通常当模型停止学习时(损失不再下降)你通常会降低学习率,如果它没有之后下降,结果似乎或多或少与您预期的一样,然后您在模型停止学习的那个时期选择

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        在神经网络中,一个 epoch 相当于使用每个数据对网络进行一次训练。

        epoch 数 nb_epoch 因此是您在训练期间重复使用数据的次数。

        【讨论】:

          猜你喜欢
          • 2017-01-17
          • 1970-01-01
          • 1970-01-01
          • 2016-09-11
          • 1970-01-01
          • 2018-01-26
          • 1970-01-01
          • 1970-01-01
          • 2010-10-15
          相关资源
          最近更新 更多