微调模型中的Keras精度差异

时间:2017-07-30 11:56:41

标签: keras

背景

在Keras中对分类模型进行微调时,它打印了val_acc: 0.8456This code用于微调。

经过微调,手动加载训练模型并预测估值集后,收到的0.28准确度要低得多。

以下代码用于评估:

model = load_model(MODEL_PATH)
...
img = kimage.load_img(img_path, target_size=target_size)
x = kimage.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = vgg19.preprocess_input(x)
pred = model.predict(x)

问题

准确度差异可能是什么原因0.85 != 0.28

2 个答案:

答案 0 :(得分:2)

您正在使用不同的预处理进行培训和测试。 具体地,

rescale = 1./255

用于培训,但

x = vgg19.preprocess_input(x)

用于测试。

imagenet_utils.preprocess_input()做的是减去均值(在ImageNet上计算,如名称所示):

    # Zero-center by mean pixel
    x[:, :, :, 0] -= 103.939
    x[:, :, :, 1] -= 116.779
    x[:, :, :, 2] -= 123.68

因此,它与应用于训练数据的预处理有很大不同。

答案 1 :(得分:1)

使用相同的ImageDataGenerator

我的ImageDataGenerator是:

train_datagen = ImageDataGenerator(
    rescale=1. / 255, ...)

能够按如下方式重现其预处理:

img = load_img(image_path, target_size=target_size)
x = img_to_array(img)
x = np.expand_dims(x, axis=0)
x *= rescale_factor

score = model.predict(x)