如何在predict中使用rescale
How to use rescale in predict
我在 R 下训练我的 Keras 模型,文件夹中有 4 类 个图像存储。我使用 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)
我想知道我是否需要像训练时那样重新缩放我的新图像,或者我是否必须在不重新缩放的情况下进行训练?如何在predict中实现rescale?
在测试阶段,您应该对您在训练阶段使用的数据应用相同的预处理步骤。由于您只在训练阶段使用了重新缩放,因此您只需要在测试阶段进行。因此,删除 x <- imagenet_preprocess_input(x)
并改为使用 x <- x / 255.0
.
我在 R 下训练我的 Keras 模型,文件夹中有 4 类 个图像存储。我使用 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)
我想知道我是否需要像训练时那样重新缩放我的新图像,或者我是否必须在不重新缩放的情况下进行训练?如何在predict中实现rescale?
在测试阶段,您应该对您在训练阶段使用的数据应用相同的预处理步骤。由于您只在训练阶段使用了重新缩放,因此您只需要在测试阶段进行。因此,删除 x <- imagenet_preprocess_input(x)
并改为使用 x <- x / 255.0
.