gpt4 book ai didi

python - Keras:rescale=1./255 与 preprocessing_function=preprocess_input - 使用哪一个?

转载 作者:行者123 更新时间:2023-11-30 21:59:02 26 4
gpt4 key购买 nike

背景

我发现很多代码示例,人们使用 rescale=1./255 预处理图像数据,或者使用 preprocessing_function 设置它到它们在 ImageDataGenerator 中使用的相应模型的 preprocess_input。首先,我认为使用 rescale=1./255 仅在处理预训练的 vgg16 模型时有效,但我不断看到它与预训练的 Resetnet50、inception 等一起使用的示例。

虽然 keras-blog ( https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html ) 使用这种方法...

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

...Keras 文档 ( https://keras.io/applications/ ) 使用此方法:

from keras.applications.vgg19 import preprocess_input
ImageDataGenerator(preprocessing_function=preprocess_input, ...

我认为使用我想要训练的相应模型的相应 preprocess_input 始终优于使用 rescale=1./255 方法,因为它将 100% 反射(reflect)在预训练模型训练期间使用的预处理。

问题

我需要澄清一下何时使用 rescale=1./255 与 keras 内置 preprocess_input 我想在预处理图像时训练的相应模型迁移学习。这是否仅在使用预训练模型(即加载权重与从头开始训练)时产生区别?

最佳答案

我有类似的问题,在运行下面的小实验后,我认为你需要始终使用 preprocess_input当使用预先训练的模型时,并在从头开始训练时使用 rescale。

显然,当你直接使用预先训练好的模型进行推理时,你必须使用 preprocess_input :例如我尝试使用 resnet50kaggle dogs-vs-cats 数据集上,rescale=1./255它返回索引 111 (nematode, nematode worm, roundworm)作为所有图像最有可能的类别,而 preprocess_input它主要返回与预期的狗和猫对应的索引。

然后我尝试使用resnet50include_top=False ,来自 imagenet 的卡住权重,一 GlobalAveragePooling2D层和最后一个密集的 sigmoid 层。我与 Adam 一起使用 kaggle dogs-vs-cats 数据集的 2000 张图像对其进行训练(我使用了 1000 张图像作为验证)。使用 rescale 它在​​ 5 个 epoch 后无法适应任何内容,它总是预测第一类(尽管奇怪的是训练精度为 97%,但当我运行 evaluate_generator`` on the training images, the accuracy is **50%**). But with preprocess_input , it achieves **98%** accuracy on the validation set. Also note that you do not really need the images to be of the same dimensions as the trained models, for example if I use 150 instead of 224, I still get a **97.5%** accuracy. Without any rescaling or preprocess_input`,我的验证准确率达到了 95%

我尝试了同样的事情 vgg16 ,通过重新缩放,它确实能够适应,但是使用 preprocess_input 达到 87%97%95% 没有任何东西。

然后我从头开始训练了一个小型转换网络,进行了 10 个时期,没有任何东西或使用 resnet50 preprocess_input ,它根本不适合,但通过重新缩放,我获得了 70% 验证准确度。

关于python - Keras:rescale=1./255 与 preprocessing_function=preprocess_input - 使用哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54702212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com