Когда я перешел с 2 классов на 4 в модели CNN. У меня есть ошибки. Многие люди помогли мне решить их, например, мне нужно было изменить потерю на sparse_categorical_crossentropy
и функцию активации последнего слоя.
model.compile(loss='sparse_categorical_crossentropy',
optimizer='adam',
metrics=['accuracy'])
history = model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples//batch_size,
epochs=epochs,
validation_data = validation_generator,
validation_steps = validation_generator.samples // batch_size,
)
Я запутался, так как мне пришлось изменить функцию потерь с binary_crossentropy
на categorical_crossenpropy
. Я хочу знать, следует ли мне изменить class_mode с двоичного на категориальный для 4 классов или оставить его двоичным.
train_datagen=ImageDataGenerator(
rescale=1./255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip = True,
#vertical_flip = True,
validation_split=0.2,
brightness_range=[0.5, 1.5]
)
#test_datagen = ImageDataGenerator(
# rescale=1./255,
#
#)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size=(img_width,img_height),
batch_size=batch_size,
shuffle=True,
class_mode='binary',
subset='training'
)
validation_generator = train_datagen.flow_from_directory(
train_data_dir, # same directory as training data
target_size=(img_height, img_width),
batch_size=batch_size,
class_mode='binary',
subset='validation'
#validation_data_dir,
#target_size=(img_width,img_height),
#batch_size=batch_size,
#class_mode='binary'
)