![](/img/trans.png)
[英]logits and labels must have the same first dimension, got logits shape [1568,10] and labels shape [32]
[英]logits and labels must have the same first dimension, got logits shape [2048,10] and labels shape [32]
我正在嘗試使用以下代碼讓 CNN 對圖像進行分類。
本質上,此代碼接收一個包含文件夾和圖像的目錄,並訓練 CNN 對它們進行分類。
這是我的代碼:
self.model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same', input_shape=(32, 32, 3)))
self.model.add(BatchNormalization())
self.model.add(Conv2D(32, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
self.model.add(BatchNormalization())
self.model.add(MaxPooling2D((2, 2)))
self.model.add(Dropout(0.2))
self.model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
self.model.add(BatchNormalization())
self.model.add(Conv2D(64, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
self.model.add(BatchNormalization())
self.model.add(MaxPooling2D((2, 2)))
self.model.add(Dropout(0.3))
self.model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
self.model.add(BatchNormalization())
self.model.add(Conv2D(128, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))
self.model.add(BatchNormalization())
self.model.add(MaxPooling2D((2, 2)))
self.model.add(Dropout(0.4))
self.model.add(Flatten())
self.model.add(Dense(128, activation='relu', kernel_initializer='he_uniform'))
self.model.add(BatchNormalization())
self.model.add(Dropout(0.5))
self.model.add(Dense(10, activation='softmax'))
def processModel(self, split, epochs=10):
datagen = keras.preprocessing.image.ImageDataGenerator(
rescale=1./255,
rotation_range=5,
zoom_range=(0.95, 0.95),
horizontal_flip=False,
vertical_flip=False,
data_format='channels_last',
validation_split=split,
)
train_generator = datagen.flow_from_directory(
directory=self.path,
color_mode='rgb',
class_mode='sparse',
shuffle=True,
subset='training',
seed=7
)
test_generator = datagen.flow_from_directory(
directory=self.path,
color_mode='rgb',
class_mode='sparse',
shuffle=True,
subset='validation',
seed=7
)
self.model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=["accuracy"]
)
self.model.fit(train_generator, epochs=epochs, verbose=2)
self.score = self.model.evaluate(test_generator)
我不斷收到此錯誤:
logits and labels must have the same first dimension, got logits shape [2048,10] and labels shape [32]
在線的:
self.model.fit(train_generator, epochs=epochs, verbose=2)
有誰知道為什么會這樣?
在不知道您的數據和數據准備的情況下,很難重現,但我認為問題可能出在您的損失函數上
self.model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=["accuracy"]
)
嘗試使用categorical_crossentropy
代替sparse_categorical_crossentropy
:
self.model.compile(
optimizer='adam',
loss='categorical_crossentropy',
metrics=["accuracy"]
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.