我正在嘗試fashion_mnist使用Conv2D圖層對資料集進行分類,據我所知,可以使用以下代碼輕松完成:
import tensorflow as tf
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
model = tf.keras.Sequential([
tf.keras.layers.Lambda(lambda x: tf.expand_dims(x, axis=-1)),
tf.keras.layers.Input(shape=(28,28),batch_size=32),
tf.keras.layers.Conv2D(4,kernel_size=3),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation="softmax")
])
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
model.fit(x=train_images, y=train_labels, validation_data=(test_images, test_labels), epochs=10)
但是,我需要不使用 Lambda layer。所以,上面的解決方案是不正確的。
所以,我想知道,如何在mnist_fashion不使用 Lambda 層的情況下對資料集進行分類?
更新:當我使用以下代碼添加一個維度時:
train_images = train_images / 255.0
train_images = tf.expand_dims(train_images,axis=0)
test_images = test_images / 255.0
test_images = tf.expand_dims(test_images,axis=0)
并針對同一模型運行它,我收到以下錯誤:
ValueError: Data cardinality is ambiguous:
x sizes: 1
y sizes: 60000
Make sure all arrays contain the same number of samples.
uj5u.com熱心網友回復:
有幾個選項:expand_dims直接使用train_images并更改輸入形狀或使用Reshape圖層而不是Lambda圖層或完全洗掉圖層并更改 input_shape tf.keras.layers.Input(shape=(28,28, 1),batch_size=32)。取決于你想要什么。這是expand_dims跨選項axis=-1:
train_images = train_images / 255.0
train_images = tf.expand_dims(train_images, axis=-1)
test_images = test_images / 255.0
test_images = tf.expand_dims(test_images, axis=-1)
并將Input圖層更改為tf.keras.layers.Input(shape=(28, 28, 1)
Q1回答:因為Conv2D圖層需要 3D 輸入(不包括批量大小),所以類似于:(rows, cols, channels). 您的資料具有形狀(samples, 28, 28)。如果您的頻道出現在 rows 和 cols 之前,您可以expand_dims在axis=1結果中使用(samples, 1, 28, 28)而不是(samples, 28, 28, 1)在使用時使用axis=-1. 如果是前者,則必須將圖層中的data_format引數設定為. 在 shape 中使用結果,這是不正確的,因為應該將第一個維度保留為批次維度。Conv2Dchannels_firstaxis=0(1 samples, 28, 28)
Q2答:我用shape=(28, 28, 1)的是因為時尚mnist圖片是灰度圖片。也就是說,它們有一個通道(我們已明確定義)。另一方面,RGB 影像有 3 個通道:紅色通道、綠色通道和藍色通道。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/468222.html
上一篇:是否可以將sklearn.neighbors.KNeighborsClassifier用于張量流會話,即與張量一起使用?
