CNN 模型未在 epoch 中对整个训练集进行训练

时间:2021-07-09 17:59:07

标签: python tensorflow machine-learning keras conv-neural-network

#Resizing the image to make it suitable for apply convolution
import numpy as np
img_size = 28
X_trainr = np.array(X_train).reshape(-1, img_size, img_size, 1)
X_testr = np.array(X_test).reshape(-1, img_size, img_size, 1)


# Model Compilation
model.compile(loss = "sparse_categorical_crossentropy", optimizer = "adam", metrics = ["accuracy"])
model.fit(X_trainr, y_train, epochs = 5, validation_split = 0.2) #training the model

我加载了用于数字识别代码的 MNIST 数据集。 然后我将数据集拆分为训练集和测试集。 然后向 3D 训练集数组添加一个新维度,并将新数组命名为 X_trainr。 然后我编译并拟合了模型。 拟合模型后,模型没有采用整个训练集(42000 个样本),而是仅采用 1500 个样本。 我试过:设置 validation_split = 0.3 然后它在 1313 个样本上进行训练。 为什么我的模型没有采用整个训练集(42000 个样本)?

输出

Epoch 1/5
1500/1500 [==============================] - 102s 63ms/step - loss: 0.2930 - accuracy: 0.9063 - val_loss: 0.1152 - val_accuracy: 0.9649
Epoch 2/5
1500/1500 [==============================] - 84s 56ms/step - loss: 0.0922 - accuracy: 0.9723 - val_loss: 0.0696 - val_accuracy: 0.9780
Epoch 3/5
1500/1500 [==============================] - 80s 53ms/step - loss: 0.0666 - accuracy: 0.9795 - val_loss: 0.0619 - val_accuracy: 0.9818
Epoch 4/5
1500/1500 [==============================] - 79s 52ms/step - loss: 0.0519 - accuracy: 0.9837 - val_loss: 0.0623 - val_accuracy: 0.9831
Epoch 5/5
1500/1500 [==============================] - 84s 56ms/step - loss: 0.0412 - accuracy: 0.9870 - val_loss: 0.0602 - val_accuracy: 0.9818

1 个答案:

答案 0 :(得分:0)

如果 X_trainr 最初有 42,000 个样本,并且您使用 0.2 的验证拆分,那么您正在训练 33600 个样本。在 model.fit 中,您没有指定批次大小,因此默认为 32。训练期间显示的数字不是样本数。它是什么,是训练样本数/batch_size。这应该是 33600/32=1050。但是它显示 1500 所以我怀疑你的 X_trainr X .8 大小实际上是 48000。所以 Xtrainr= 48000/.8= 60000。检查 X_trainr 的尺寸。