Я тренирую модель CNN, у меня была чрезмерная подгонка, поэтому я визуализировал потерю проверки и точность и обнаружил, что она дает несколько случайных чисел, как показано ниже: но в данном случае это не поможет.
моя модель и гиперпараметры:
def cnn(input_img):
conv1 = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img) #28 x 28 x 32
conv1 = BatchNormalization()(conv1)
conv1 = Conv2D(32, (3, 3), activation='relu', padding='same')(conv1)
conv1 = BatchNormalization()(conv1)
pool1 = MaxPooling2D(pool_size=(2, 2))(conv1) #14 x 14 x 32
conv2 = Conv2D(64, (3, 3), activation='relu', padding='same')(pool1) #14 x 14 x 64
conv2 = BatchNormalization()(conv2)
conv2 = Conv2D(64, (3, 3), activation='relu', padding='same')(conv2)
conv2 = BatchNormalization()(conv2)
pool2 = MaxPooling2D(pool_size=(2, 2))(conv2) #7 x 7 x 64
conv3 = Conv2D(128, (3, 3), activation='relu', padding='same')(pool2) #7 x 7 x 128 (small and thick)
conv3 = BatchNormalization()(conv3)
conv3 = Conv2D(128, (3, 3), activation='relu', padding='same')(conv3)
conv3 = BatchNormalization()(conv3)
conv4 = Conv2D(256, (3, 3), activation='relu', padding='same')(conv3) #7 x 7 x 256 (small and thick)
conv4 = BatchNormalization()(conv4)
conv4 = Conv2D(256, (3, 3), activation='relu', padding='same')(conv4)
conv4 = BatchNormalization()(conv4)
return conv4
def fc(enco):
flat = Flatten()(enco)
den = Dense(128, activation='relu')(flat)
out = Dense(5, activation='softmax')(den)
return out
opt = tf.keras.optimizers.Adam( beta_1=0.9, beta_2=0.999, amsgrad=False,learning_rate=0.00005)
model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])
model.fit( x= train.reshape(train.shape[0],280,252,1),
y= train_Y_one_hot,
epochs=20,
batch_size=32,
validation_data=(x_val.reshape(x_val.shape[0],280,252,1),val_Y_one_hot),
verbose=1)
Подскажите, пожалуйста, что я могу сделать!