训练/有效/测试准确性高,但使用模型时准确性低

时间:2020-01-15 15:27:49

标签: python tensorflow machine-learning keras deep-learning

我训练了一个模型,该模型可以对数字图像进行分类,例如mnist问题。

所以我准备了一个包含600、120、120张图像的数据集,用于每个班级的火车,有效测试集。

经过数小时的训练,火车准确性为0.9981,有效准确性为0.9992。 测试精度为0.9992。

但是,当我使用经过训练的模型来预测以前在训练中使用的图像时,平均准确度要比训练低得多……将近70%。

我很困惑,因为如果这是由于过度拟合造成的,那么经过训练的模型应该可以预测用于训练的图像的准确性很高,但是对于新图像和测试集图像而言,准确性都较低。

为什么会这样?这是因为数据集的数量太少还是其他? 下面是训练结果。

...
Epoch 49/50
280/280 [==============================] - 19s 68ms/step - loss: 0.0077 - acc: 0.9971 - val_loss: 0.0125 - val_acc: 0.9992
Epoch 50/50
280/280 [==============================] - 19s 69ms/step - loss: 0.0058 - acc: 0.9981 - val_loss: 0.0126 - val_acc: 0.9992

-- Evaluate --
acc: 99.92%

-编辑- 下面是模型架构

model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(width, height, 3)))
model.add(Conv2D(32, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

我通过在服务器中使用tensorflow-serving部署此模型来使用此模型。我采样了一些训练中使用的图像,并将数据发布到tensorflow-serving api。而且预测精度很低。

0 个答案:

没有答案