为什么我的模型的训练和验证准确性在一个纪元后仍保持不变? [Keras]

时间:2018-12-09 06:03:27

标签: keras deep-learning conv-neural-network

我有尺寸为(4684,150,150,3)的4684个图像数据和尺寸为(4684,8)的标签数据。在第一个时期,训练精度为0.5695,验证精度为0.7535。在第一个时期之后,我的模型不再学习,并且其训练和验证准确性保持不变。那么,可能是什么问题?你们可以帮我吗?

这是我的模特。

model = Sequential()
model.add(Conv2D(kernel_size=(3,3),filters=8,input_shape=(150, 150, 3),activation="relu",padding="valid"))
model.add(Conv2D(kernel_size=(3,3),filters=8,activation="relu",padding="same"))
model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))
model.add(Flatten())
model.add(Dropout(0.6))
model.add(Dense(100,activation="relu"))
model.add(Dense(8,activation='softmax'))
model.summary()

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adam(lr=0.001),
              metrics=['accuracy'])

X = model.fit(data,labels,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          shuffle=True,
          validation_split=0.2)

plt.plot(X.history['loss'])
plt.plot(X.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()

Model Loss

1 个答案:

答案 0 :(得分:0)

我可以问你,标签是否转换为分类标签?

然后是两个,请将lr = .1的优化程序Adam更改为SGD

三个,请在Conv2D图层中删除相同的图层,或添加更多Conv2D + MaxPooling2D图层进行建模