我對 TensorFlow 比較陌生,所以我制作了一個模型,用于對不同型別的汽車影像進行預測。我已經從“tf.keras.utils.image_dataset_from_directory”函式制作了測驗資料集。我已經使用 model.fit(test_dataset) 來獲得預測。但我想要的是從測驗資料集中列印影像,然后給出它的預測。(影像然后預測)。這樣我就可以看到哪個影像映射到哪個預測。有沒有辦法做到這一點?提前致謝。
uj5u.com熱心網友回復:
為了顯示測驗資料集的影像和類的標簽和名稱,您可以顯示每個影像,然后從model.prdict()獲取一個標簽,如果您有每個標簽的名稱,則顯示每個類的名稱,如下所示:(我在示例中使用此解釋下面的代碼,得到了準確率為 67% 的測驗影像的結果):
import tensorflow_datasets as tfds
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
train, test = tfds.load(
'cifar10',
shuffle_files=True,
as_supervised=True,
split = ['train', 'test']
)
train = train.map(lambda x,y : (tf.cast(x, tf.float32) / 255.0, y) , num_parallel_calls=tf.data.AUTOTUNE)
test = test.map(lambda x,y : (tf.cast(x, tf.float32) / 255.0, y) , num_parallel_calls=tf.data.AUTOTUNE)
train = train.batch(10).prefetch(tf.data.AUTOTUNE)
test = test.batch(10).prefetch(tf.data.AUTOTUNE)
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu', input_shape=(32, 32, 3)),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dropout(0.4),
tf.keras.layers.Dense(10)
])
model.compile(optimizer='adam', metrics=['accuracy'],
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True))
model.fit(train,epochs=10)
class_names = ['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
image ,label = next(iter(test))
fig, axes = plt.subplots(2,5,figsize=(15,6))
for idx, axe in enumerate(axes.flatten()):
axe.axis('off')
y_pred = np.argmax(model.predict(image[idx][None,...]))
axe.imshow(image[idx])
axe.set_title(f'label: {y_pred}, predict : {class_names[y_pred]}')
輸出:
Epoch 1/10
5000/5000 [==============================] - 43s 5ms/step - loss: 1.5802 - accuracy: 0.4197
Epoch 2/10
5000/5000 [==============================] - 17s 3ms/step - loss: 1.2857 - accuracy: 0.5396
Epoch 3/10
5000/5000 [==============================] - 17s 3ms/step - loss: 1.1738 - accuracy: 0.5824
Epoch 4/10
5000/5000 [==============================] - 17s 3ms/step - loss: 1.1138 - accuracy: 0.6031
Epoch 5/10
5000/5000 [==============================] - 18s 4ms/step - loss: 1.0666 - accuracy: 0.6181
Epoch 6/10
5000/5000 [==============================] - 19s 4ms/step - loss: 1.0243 - accuracy: 0.6338
Epoch 7/10
5000/5000 [==============================] - 18s 4ms/step - loss: 0.9942 - accuracy: 0.6428
Epoch 8/10
5000/5000 [==============================] - 18s 4ms/step - loss: 0.9672 - accuracy: 0.6519
Epoch 9/10
5000/5000 [==============================] - 18s 4ms/step - loss: 0.9428 - accuracy: 0.6605
Epoch 10/10
5000/5000 [==============================] - 18s 4ms/step - loss: 0.9236 - accuracy: 0.6640

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489698.html
標籤:Python 张量流 深度学习 神经网络 张量流2.0
下一篇:KerasImageDataGeneratorwithflow,GotValueError:`x`(imagestensor)and`y`(labels)shouldhavethesamelength
