如果我想顯示 mnist 資料集中的一張影像,我需要使用以下代碼將其從 (1,28,28) 重塑為 (28,28):
import tensorflow as tf
import matplotlib.pyplot as plt
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
sample = x_train[:1].reshape((28,28))
plt.imshow(sample, cmap="gray")
plt.show()
但是,如果我想在同一個圖中顯示多個影像。我不需要使用以下代碼重塑它們:
import tensorflow as tf
import matplotlib.pyplot as plt
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
plt.figure(figsize=(10,10))
for i in range(25):
plt.subplot(5,5,i 1)
plt.imshow(x_train[i])
plt.show()
為什么第二個代碼不需要重塑?
uj5u.com熱心網友回復:
如果您使用選擇了第一張影像,則您也不需要在第一個影像中重塑x_train[0]。訪問陣列的特定索引會洗掉形狀的第一個元素。
因此,如果您有一個形狀為 (100, 28, 28) 的 numpy 陣列,并且訪問x_train[0],您將獲得 (28, 28) 的形狀。但是,如果您以 訪問它x_train[:1],您仍將擁有三個維度:(1, 28, 28)。
它這樣做是因為您也可以執行 x_train[:2] 并拍攝前兩張影像,因此它需要一個維度來跟蹤您選擇的影像數量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534009.html
下一篇:了解堆疊的LSTM層
