使用matplotlib.pylot.imshow()从对象的类(如1-SHIRTS, 2-SHOES等)中获取相应图像的代码。

问题描述 投票:0回答:1

如下图所示,我的模型只在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

请帮助上面的人

python tensorflow keras deep-learning
1个回答
0
投票

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.

© www.soinside.com 2019 - 2024. All rights reserved.