为什么 keras 不训练我的整个图像集

why keras wont train on my entire image set

我正在 keras 中训练卷积模型。 我的训练数据的大小是

(60000, 28, 28, 1)

我在这里建立了一个简单的模型

model = Sequential()

model.add(
    Conv2D(
        filters=32,
        kernel_size=(4, 4), 
        input_shape=(28, 28, 1),
        activation='relu'
    )
)
model.add(MaxPool2D(pool_size=(2, 2)))       

model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))

model.compile(
    loss='categorical_crossentropy', 
    optimizer='adam',
    metrics=['accuracy']
)

当我尝试在下一行中将此模型拟合到我的数据时

model.fit(
    x_train,
    y_train_hot_encode,
    epochs=20,
    validation_data=(x_test, y_test_hot_encode),
)

我注意到日志中有些奇怪的东西

Epoch 1/20
1875/1875 [==============================] - 18s 9ms/step - loss: 0.5311 - accuracy: 0.8109 - val_loss: 0.3381 - val_accuracy: 0.8780
Epoch 2/20
1875/1875 [==============================] - 19s 10ms/step - loss: 0.2858 - accuracy: 0.8948 - val_loss: 0.2820 - val_accuracy: 0.8973
Epoch 3/20
1875/1875 [==============================] - 18s 9ms/step - loss: 0.2345 - accuracy: 0.9150 - val_loss: 0.2732 - val_accuracy: 0.9001
Epoch 4/20
1875/1875 [==============================] - 18s 9ms/step - loss: 0.2016 - accuracy: 0.9247 - val_loss: 0.2549 - val_accuracy: 0.9077
Epoch 5/20
1875/1875 [==============================] - 17s 9ms/step - loss: 0.1644 - accuracy: 0.9393 - val_loss: 0.2570 - val_accuracy: 0.9077
Epoch 6/20
1875/1875 [==============================] - 17s 9ms/step - loss: 0.1434 - accuracy: 0.9466 - val_loss: 0.2652 - val_accuracy: 0.9119
Epoch 7/20
1875/1875 [==============================] - 17s 9ms/step - loss: 0.1225 - accuracy: 0.9553 - val_loss: 0.2638 - val_accuracy: 0.9135

如您所见,每个 epoch 都是在 1875 张图像上训练的,而不是在整个 60K 图像上训练的,这是为什么呢?还是我读错了日志?

这是因为这里显示的数字是步数,而不是训练的示例数。由于您没有将 batch_size 提供给 model.fit(),它使用了默认的批量大小 32。

每个 epoch 的预期步数是 ceil(60000/32) = 1875,与日志中显示的一致。