Потеря валидации балансируется случайным образом в большом диапазоне, однако потеря обучения полностью уменьшается - PullRequest
0 голосов
/ 06 мая 2020

Я тренирую модель 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)

Подскажите, пожалуйста, что я могу сделать!

1 Ответ

0 голосов
/ 10 мая 2020

Попробуйте сначала со значениями по умолчанию

Измените это на

tf.keras.optimizers.Adam( beta_1=0.9, beta_2=0.999, amsgrad=False,learning_rate=0.00005)

на

tf.keras.optimizers.Adam()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...