如下图所示,我的模型只在1500张图片上进行训练(不包括0.2个验证数据),但我的FASHION_MNIST训练数据有60000张图片。谁能帮帮我?修改后的问题。需要使用matplotlib.pylot.imshow()从对象类(如1-SHIRTS,2-SHOES等)中获取相应图像的代码。
我使用的是谷歌colab笔记本
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.layers import Conv2D, Dense, Flatten, Dropout, Input
from tensorflow.keras.models import Model
fashion_mnist = tf.keras.datasets.fashion_mnist
(train_images, train_labels),(test_images, test_labels) = fashion_mnist.load_data()
train_images = train_images/255.0
test_images = test_images/255.0
train_images = train_images.reshape(len(train_images),28,28,1)
test_images = test_images.reshape(len(test_images),28,28,1)
K = len(set(train_labels))
train_images.shape
i = Input(shape=train_images[0].shape)
x = Conv2D(32, (3,3),strides=2, activation='relu')(i)
x = Conv2D(64, (3,3),strides=2, activation='relu')(x)
x = Flatten()(x)
x = Dense(64, activation='relu')(x)
x= Dense(K, activation='softmax')(x)
model = Model(i,x)
model.compile(optimizer='adam',
loss = 'sparse_categorical_crossentropy',
metrics=['accuracy'])
r = model.fit(train_images, train_labels, epochs=10, validation_split=0.2)
Epoch 1/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.4759 - accuracy: 0.8301 - val_loss: 0.3751 - val_accuracy: 0.8647
Epoch 2/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.3243 - accuracy: 0.8812 - val_loss: 0.3257 - val_accuracy: 0.8793
Epoch 3/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.2759 - accuracy: 0.8974 - val_loss: 0.2842 - val_accuracy: 0.8982
Epoch 4/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.2426 - accuracy: 0.9094 - val_loss: 0.2796 - val_accuracy: 0.8934
Epoch 5/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.2136 - accuracy: 0.9209 - val_loss: 0.2730 - val_accuracy: 0.9007
Epoch 6/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.1902 - accuracy: 0.9286 - val_loss: 0.2614 - val_accuracy: 0.9039
Epoch 7/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.1672 - accuracy: 0.9378 - val_loss: 0.2660 - val_accuracy: 0.9063
Epoch 8/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.1451 - accuracy: 0.9467 - val_loss: 0.2773 - val_accuracy: 0.9082
Epoch 9/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.1279 - accuracy: 0.9526 - val_loss: 0.2956 - val_accuracy: 0.9013
Epoch 10/10
1500/1500 [==============================] - 15s 10ms/step - loss: 0.1121 - accuracy: 0.9586 - val_loss: 0.3099 - val_accuracy: 0.9034
请帮助上面的人
Keras 模型.拟合 受理 批量 和 步数_每个epoch.批量 定义模型在更新权重之前 "查看 "的样本数量。每个epoch的步数 确定 "在宣布一个纪元结束并开始下一个纪元之前的步骤数(样品批次)".
批量如果没有指定,默认设置为32。这就是为什么 "1500 "这个数字会出现在你的训练中。考虑到您的验证分割,您有48k图像用于训练,除以32就会产生1500个 步骤. 放松,你的模型正在寻找你所有的火车图像!
如果你想在那里看到48K,你可以尝试一下。
r = model.fit(train_images, train_labels, batch_size=1, epochs=10, validation_split=0.2)
输出。
Epoch 1/10
4013/48000 [=>............................] - ETA: 1:28 - loss: 0.7459 - accuracy: 0.7207
为了让你能按类别绘制你的火车图像,你可以这样做
from matplotlib import pyplot as plt
import numpy as np
interesting_class = 0
index = np.where(train_labels == interesting_class)
plt.imshow(train_images[index[0][0]], cmap=plt.get_cmap('gray'))
你也可以做 index[0][N]
以获得N'th图像的 interesting_class
.