【发布时间】:2017-10-23 04:12:37
【问题描述】:
我正在使用Keras 2.0 包为Python 分批量 训练神经网络。
以下是有关数据和训练参数的一些信息:
- #samples in train: 414934
- #features: 590093
- #classes: 2(二分类问题)
- 批量大小:1024
- #batches = 406 (414934 / 1024 = 405.2)
以下是以下代码的一些日志:
for i in range(epochs):
print("train_model:: starting epoch {0}/{1}".format(i + 1, epochs))
model.fit_generator(generator=batch_generator(data_train, target_train, batch_size),
steps_per_epoch=num_of_batches,
epochs=1,
verbose=1)
(部分)日志:
train_model:: starting epoch 1/3
Epoch 1/1
1/406 [..............................] - ETA: 11726s - loss: 0.7993 - acc: 0.5996
2/406 [..............................] - ETA: 11237s - loss: 0.7260 - acc: 0.6587
3/406 [..............................] - ETA: 14136s - loss: 0.6619 - acc: 0.7279
404/406 [============================>.] - ETA: 53s - loss: 0.3542 - acc: 0.8917
405/406 [============================>.] - ETA: 26s - loss: 0.3541 - acc: 0.8917
406/406 [==============================] - 10798s - loss: 0.3539 - acc: 0.8918
train_model:: starting epoch 2/3
Epoch 1/1
1/406 [..............................] - ETA: 15158s - loss: 0.2152 - acc: 0.9424
2/406 [..............................] - ETA: 14774s - loss: 0.2109 - acc: 0.9419
3/406 [..............................] - ETA: 16132s - loss: 0.2097 - acc: 0.9408
404/406 [============================>.] - ETA: 64s - loss: 0.2225 - acc: 0.9329
405/406 [============================>.] - ETA: 32s - loss: 0.2225 - acc: 0.9329
406/406 [==============================] - 13127s - loss: 0.2225 - acc: 0.9329
train_model:: starting epoch 3/3
Epoch 1/1
1/406 [..............................] - ETA: 22631s - loss: 0.1145 - acc: 0.9756
2/406 [..............................] - ETA: 24469s - loss: 0.1220 - acc: 0.9688
3/406 [..............................] - ETA: 23475s - loss: 0.1202 - acc: 0.9691
404/406 [============================>.] - ETA: 60s - loss: 0.1006 - acc: 0.9745
405/406 [============================>.] - ETA: 31s - loss: 0.1006 - acc: 0.9745
406/406 [==============================] - 11147s - loss: 0.1006 - acc: 0.9745
我的问题是:每个 epoch 之后会发生什么以提高准确性?例如,第一个 epoch 结束时的准确度为 0.8918,但在第二个 epoch 开始时,观察到的准确度为 0.9424。同样,第二个epoch结束时的准确度为0.9329,但第三个epoch开始时的准确度为0.9756。
我希望在第二个 epoch 开始时找到 ~0.8918 的准确度,在第三个 epoch 开始时找到 ~0.9329。
我知道在每个批次中有一个前向传递和一个反向传递批次中的训练样本。因此,在每个 epoch 中,所有训练样本都有一个前向传递和一个后向传递。
另外,来自Keras documentation:
Epoch: an arbitrary cutoff, generally defined as "one pass over the entire dataset", used to separate training into distinct phases, which is useful for logging and periodic evaluation.
为什么每个 epoch 内的准确率提升小于 epoch X 结束和 epoch X+1 开始之间的准确率提升?
【问题讨论】:
标签: python tensorflow keras neural-network deep-learning