我正在尝试使用ImageDataGenerator创建我的训练数据集。有两个不同的文件夹,其中包含不同标签的图像。当我开始训练的时候,我得到了一个关于形状的错误:
ValueError: Shapes (None, 1) and (None, 2) are incompatible我该如何解决这个问题?每个图像的原始大小是100x100,它们是RGB形式的。
datagen = 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 = 0.0,
dtype = tf.float32
)
train_generator = datagen.flow_from_directory('sign_data/',
target_size=(48,48),
batch_size=4, color_mode='grayscale',
class_mode='sparse', shuffle=True,
subset='training', seed=123)
model = Sequential()
model.add(Conv2D(16, 3, data_format="channels_last", padding='same', input_shape=(48,48,1)))
model.add(Conv2D(32, 3, padding='same'))
model.add(MaxPooling2D())
model.add(Flatten())
model.add(Dense(2))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
hist = model.fit(train_generator, epochs=10)我也尝试使用target_size=(48,48,1)
train_generator = datagen.flow_from_directory('sign_data/',
target_size=(48,48,1),
batch_size=4, color_mode='grayscale',
class_mode='sparse', shuffle=True,
subset='training', seed=123)错误是
ValueError: could not broadcast input array from shape (48,48,1) into shape (48,48,1,1)发布于 2021-05-15 21:51:10
来自评论
如果使用
sparse类模式,则需要使用sparse categorical crossentropyloss (转译自Dr.Snoopy)
工作代码如下所示
datagen = 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 = 0.0,
dtype = tf.float32
)
train_generator = datagen.flow_from_directory('sign_data/',
target_size=(48,48),
batch_size=4, color_mode='grayscale',
class_mode='sparse', shuffle=True,
subset='training', seed=123)
model = Sequential()
model.add(Conv2D(16, 3, data_format="channels_last", padding='same', input_shape=(48,48,1)))
model.add(Conv2D(32, 3, padding='same'))
model.add(MaxPooling2D())
model.add(Flatten())
model.add(Dense(2))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
hist = model.fit(train_generator, epochs=10)https://stackoverflow.com/questions/66975217
复制相似问题