ValueError: Shapes (None, 1) and (None, 3) are incompatible训练我的顺序模型时出现此错误。我无法弄清楚哪些形状实际上是不兼容的。这是我第一次做图像分类。这是我的代码:
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(tf.keras.layers.MaxPooling2D((2, 2)))
model.add(tf.keras.layers.Conv2D(64, (3, 3), activation='relu'))
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(3, activation='softmax'))
model.summary()
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
# this throws value error
model.fit(
train_generator,
steps_per_epoch=25,
epochs=20,
validation_data=valid_generator,
validation_steps=5,
verbose=2
)
我希望最后一个 Dense 层返回一个包含 3 个概率分数(大、中、小)的数组。
这是我创建train_generatorand的方法valid_generator:
from tensorflow.keras.preprocessing.image import ImageDataGenerator
image_datagen = ImageDataGenerator(
rescale=1./255,
rotation_range=20,
horizontal_flip=True,
shear_range = 0.2,
fill_mode = 'nearest')
index = len(df)//10
df_train = df[index:]
df_valid = df[:index]
train_generator = image_datagen.flow_from_dataframe(
df_train,
x_col = 'png_image',
y_col = 'target',
target_size=(150, 150),
batch_size=4,
color_mode = 'rgb',
class_mode='sparse',
)
valid_generator = image_datagen.flow_from_dataframe(
df_valid,
x_col = 'png_image',
y_col = 'target',
target_size=(150, 150),
batch_size=4,
color_mode = 'rgb',
class_mode='sparse',
)
数据框如下所示:
