我在R中训练了一个Keras模型,处理了存储在文件夹中的四类图像。我使用了train_datagen和重缩放功能:
train_datagen = image_data_generator( rescale = 1/255, rotation_range = 40, width_shift_range = 0.2, height_shift_range = 0.2, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = TRUE, fill_mode = "nearest")
然后我用以下代码使用我的模型来预测一张新图像,但即使我的训练准确率达到了80%,结果仍然非常差。
model <- load_model_hdf5("my_model.h5")img <- image_load(image, target_size = c(64,64))x <- image_to_array(img)x <- array_reshape(x, c(1, dim(x)))x <- imagenet_preprocess_input(x)predictions <- model %>% predict(x)
我想知道在预测新图像时是否需要像训练时那样进行重缩放处理,还是应该在训练时不进行重缩放?如何在预测中实现重缩放?
回答:
在测试阶段,您应该对数据应用与训练阶段相同的预处理步骤。由于您在训练阶段仅使用了重缩放,因此在测试阶段也只需要进行重缩放处理。因此,删除x <- imagenet_preprocess_input(x)
,改用x <- x / 255.0
。