如何提高模型的验证精度

时间:2019-06-06 07:10:47

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

我正在制作一个包含约2445张图像和21个类别的图像分类模型。我无法将验证准确率从68%提高。

输入图像的大小被重新转换为75 x 75像素的灰度。该体系结构使用了两个隐藏的卷积层,我尝试添加另一个相同的层,这对提高验证准确性没有帮助。

如何处理像素大小或体系结构以提高验证准确性?

第20个时期的输出是:

loss: 0.0694 - acc: 0.9779 - val_loss: 1.6924 - val_acc: 0.6801'''

模型的架构是

model=Sequential()

第一层

model.add(Conv2D(64,(3,3),input_shape=X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.3))

第二层

model.add(Conv2D(64,(3,3),input_shape=X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.3))
model.add(Flatten()) 
model.add(Dense(64)) 
model.add(Activation("relu"))
model.add(Dense(num_classes)) 
model.add(Activation("softmax")) 
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics['accuracy'])
model.fit(X,y_new,batch_size=32 ,epochs = 20, validation_split=0.1

2 个答案:

答案 0 :(得分:1)

  1. 您所有的2445张图像是否平均分配到21个类别中?
  2. 标准化/标准化您的数据。 (预处理)
  mean = np.mean(x_train)               
  stddev = np.std(x_train)
  x_train = (x_train - mean)/stddev
  x_test =  (x_test - mean)/stddev 
  1. 使用“批处理标准化”在每一层之后对数据进行标准化。

答案 1 :(得分:0)

实际上,转换为灰度或像素变化的图像不是由keras模型的各层处理的,它取决于您传递用于训练的数据以及正在执行的预处理(如果有)。因此,请在X和y_new处检查输入数据,或在问题本身中显示那部分代码。