【发布时间】:2021-07-09 17:59:07
【问题描述】:
#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
【问题讨论】:
-
你说的是我认为每个时代的步数。默认的批量大小是 32,这能告诉你什么吗?
-
正如@Frightera 所说,1500 不是样本数。它是 每个 epoch 的步数。在每个步骤中,它需要一个批量大小的样本,如果您不指定,它会将其视为 32。
-
批量大小对欠拟合或过拟合有影响吗?
标签: python tensorflow machine-learning keras conv-neural-network