首页 > 解决方案 > 使用 tensorflow 训练模型时数据大小发生变化

问题描述

我正在尝试在“Cifar10”数据集上训练 CNN。我导入它,当我检查形状时:

cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
y_train, y_test = y_train.flatten(), y_test.flatten()
print("x_train.shape:", x_train.shape)
print("y_train.shape", y_train.shape)

我得到的是:

x_train.shape: (50000, 32, 32, 3)
y_train.shape (50000,)

这表明我的数据有 50000 个实例。但是在训练模型时:

r = model.fit(x_train, y_train, epochs=2)

日志显示:

Epoch 1/2
1563/1563 [==============================] - 7s 5ms/step - loss: 1.4601 - accuracy: 0.4819
Epoch 2/2
1563/1563 [==============================] - 7s 5ms/step - loss: 1.1266 - accuracy: 0.6025

也就是说只有 1563 个实例。什么可能导致这种情况?

完整的笔记本在这里

标签: pythontensorflowkerasneural-networkconv-neural-network

解决方案


您在网络进程中看到的不是实例数,而是次数。默认情况下,我猜您的函数将您的实例分成批次,然后通过训练它们继续进行。我猜每个批次的默认大小是 32,因此,您总共有 1563 个批次。

如果您检查拟合函数的说明,您将看到默认值batch_size= 32。


推荐阅读