老是碰見這種問題,解決方法是:
如果數據集加載了 image_dataset_from_directory
, use label_mode='categorial'
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
path,
label_mode='categorial' )
或加載flow_from_directory
,flow_from_dataframe
then useclass_mode='categorical'
train_ds = ImageDataGenerator.flow_from_directory(
path,
class_mode='categorical' )
范疇交叉熵(Categorical Cross entropy):
model = Sequential([
Conv2D(32,3, activation='relu', input_shape=(48,48,1)), BatchNormalization(), MaxPooling2D(pool_size=(3, 3)), Flatten(), Dense(512, activation='relu'), Dense(2,activation='softmax') # activation change ]) model.compile(optimizer='adam', loss='categorical_crossentropy', # Loss metrics=['accuracy'])
二元交叉熵(Binary Crossentropy)
model = Sequential([
Conv2D(32,3, activation='relu', input_shape=(48,48,1)), BatchNormalization(), MaxPooling2D(pool_size=(3, 3)), Flatten(), Dense(512, activation='relu'), Dense(1,activation='sigmoid') #activation change ]) model.compile(optimizer='adam', loss='binary_crossentropy', # Loss metrics=['accuracy'])
我的訓練時因為加了下面兩句話才開始正常訓練的
MaxPooling2D(pool_size=(3, 3)),
Flatten(),
訓練如下所示: