Range of testing accuracy is large in CNN

Viewed 53

I have trained my dataset's accuracy above 0.8.

But testing data's accuracy sometimes can be 0.7, and sometimes just 0.2.

(My training dataset and testing dataset are the same.)

What's wrong with my CNN model?
Thank you.

This is my training model.

inputs = tf.keras.layers.Input(shape=(64,64,3))
conv_layer1 = Conv2D(32,(3,3),padding='same')(inputs)
LR1 = LeakyReLU(alpha=0.3)(conv_layer1)
conv_layer2 = Conv2D(32,(3,3),padding='same')(LR1)
LR2 = LeakyReLU(alpha=0.3)(conv_layer2)
max_layer1 = MaxPooling2D(pool_size=(2,2))(LR2)
conv_layer3 = Conv2D(64,(3,3),padding='same')(max_layer1)
LR3 = LeakyReLU(alpha=0.3)(conv_layer3)
conv_layer4 = Conv2D(64,(3,3),padding='same')(LR3)
LR4 = LeakyReLU(alpha=0.3)(conv_layer4)
max_layer2 = MaxPooling2D(pool_size=(2,2))(LR4)
conv_layer5 = Conv2D(128,(3,3),padding='same',activation='relu')(max_layer2)
max_layer3 = MaxPooling2D(pool_size=(2,2))(conv_layer5)
conv_layer6 = Conv2D(256,(3,3),padding='same',activation='relu')(max_layer3)
max_layer4 = MaxPooling2D(pool_size=(2,2))(conv_layer6)
flatten = Flatten()(max_layer4)
dence2 = Dense(64,activation='relu')(flatten)

f1 = Dense(11, activation='softmax', name='prediction_one')(dence2)
f2 = Dense(11, activation='softmax', name='prediction_two')(dence2)
f3 = Dense(11, activation='softmax', name='prediction_third')(dence2)
model2 = Model(outputs=[f1,f2,f3], inputs=inputs)
model2.summary()

model2.compile(loss=['categorical_crossentropy','categorical_crossentropy','categorical_crossentropy'],optimizer='adam',metrics=['accuracy'])
history = model2.fit(X_train,[co1_train,co2_train,co3_train],64,epochs=10,validation_data=(X_valid,[co1_valid,co2_valid,co3_valid]))

0 Answers
Related