使用cnn的densenet训练训练图片分类,训练集准确率快100的时候,突然降得很低,之后保持不变是为什么

图片说明

问题如题,莫名其妙突然很低,准确率,loss都不会变了。这个是用densenet做语谱图的分类

def densenet(x):
    x1 = Conv2D(16, (3,  3), activation='relu', padding='same', strides=(1, 1))(x)
    #x = BatchNormalization()(x)
    #x = Activation('relu')(x)
    x2 = Conv2D(16, (3,  3), activation='relu', padding='same', strides=(1, 1))(x1)

    x3 = concatenate([x1, x2] , axis=3)
    #x = BatchNormalization()(x3)
    #x = Activation('relu')(x)
    x4 = Conv2D(32, (3,  3), activation='relu', padding='same', strides=(1, 1))(x)

    x5 = concatenate([x3, x4] , axis=3)
    #x = BatchNormalization()(x5)
    #x = Activation('relu')(x)
    x6 = Conv2D(64, (3,  3), activation='relu', padding='same', strides=(1, 1))(x)

    x7 = concatenate([x5, x6] , axis=3)
    #x = BatchNormalization()(x7)
    #x = Activation('relu')(x)
    x8 = Conv2D(128, (3,  3), activation='relu', padding='same', strides=(1, 1))(x)

    #x = BatchNormalization()(x8)
    #x = Activation('relu')(x)
    x9 = Conv2D(128, (3,  3), activation='relu', padding='same', strides=(1, 1))(x)
    x9 = MaxPooling2D(pool_size=(2, 2))(x9)
    return x9
from keras.layers import Input, Dense
from keras.models import Model

inputs=Input(shape=(110, 43, 1 ))
x=densenet(inputs)
x=densenet(x)
x=densenet(x)

#Flatten层用来将输入“压平”,即把多维的输入一维化,常用在从卷积层到全连接层的过渡。Flatten不影响batch的大小。
x = Flatten()(x)

x = Dense(128, activation='relu')(x)
x = Dense(7, activation='sigmoid')(x)

#确定模型
model = Model(inputs=inputs, outputs=x)
model.summary()
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train,
          batch_size=batch_size,
          epochs=150,
          verbose=1,
          validation_data=(X_test, y_test))

score = model.evaluate(X_test, Y_test, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])

可能的原因:过拟合,梯度消失,或者训练中正常的现象,你再多训练一段时间,看是否会继续下降