![](/img/trans.png)
[英]A target array with shape (11203, 25) was passed for an output of shape (None, 3) while using as loss `categorical_crossentropy`
[英]A target array with shape (32, 3) was passed for an output of shape (None, 15, 15, 3) while using as loss `categorical_crossentropy`
import tensorflow as tf
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
training_set = train_datagen.flow_from_directory(
'animals/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='categorical')
test_datagen = ImageDataGenerator(rescale=1./255)
test_set = test_datagen.flow_from_directory(
'animals/test_set',
target_size=(64, 64),
batch_size=32,
class_mode='categorical')
cnn = tf.keras.models.Sequential()
cnn.add(tf.keras.layers.Conv2D(filters = 32, kernel_size = 2, activation = 'relu', input_shape = [64,
64, 3]))
cnn.add(tf.keras.layers.MaxPool2D(pool_size = 2, strides = 2))
cnn.add(tf.keras.layers.Conv2D(filters = 32, kernel_size = 2, activation = 'relu', input_shape = [64,
64, 3]))
cnn.add(tf.keras.layers.MaxPool2D(pool_size = 2, strides = 2))
cnn.add(tf.keras.layers.Dense(units = 128, activation = 'relu'))
cnn.add(tf.keras.layers.Dense(units = 3, activation = 'softmax'))
cnn.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])
cnn.fit(x = training_set, validatian_data = test_set, epochs = 15)
ValueError: 形狀為 (32, 3) 的目標數組被傳遞給形狀 (None, 15, 15, 3) 的 output,同時用作 loss categorical_crossentropy
。 這種損失預計目標具有與 output 相同的形狀。
您必須在最后一個 Maxpool2D 之后添加一個 tf.keras.layers.Flatten 層,以便在一維數據上使用 Dense 層。 否則,密集層適用於導致不匹配的 2D 數據。
在第二個 cnn.add(tf.keras.layers.Conv2D()) function 中,您不得傳遞輸入形狀。 輸入形狀僅傳遞給第一層。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.