python - keras 中的 preprocess_input() 方法

标签 python keras

我正在尝试以下 keras 文档页面中的示例 keras 代码, https://keras.io/applications/

keras 模块的preprocess_input(x) 函数在下面的代码中做了什么?为什么我们必须在传递给 preprocess_input() 方法之前执行 expand_dims(x, axis=0)

from keras.applications.resnet50 import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input
import numpy as np

model = ResNet50(weights='imagenet')

img_path = 'elephant.jpg'
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

是否有任何文档对这些功能进行了很好的解释?

谢谢!

最佳答案

Keras 可以处理批量图像。因此,第一个维度用于您拥有的样本(或图像)的数量。

加载单张图片时,会得到一张图片的形状,即(size1,size2,channels)

为了创建一批图片,你需要一个额外的维度:(samples, size1,size2,channels)

preprocess_input 函数旨在使您的图像适合模型所需的格式。

一些模型使用的图像值范围为 0 到 1。其他模型使用的值范围为 -1 到 +1。其他人则使用“caffe”样式,即未归一化,而是居中。

来自 source code , Resnet 使用的是 caffe 风格。

您无需担心 preprocess_input 的内部细节。但理想情况下,您应该使用 keras 函数加载图像(这样您就可以保证您加载的图像与 preprocess_input 兼容)。

关于python - keras 中的 preprocess_input() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47555829/

相关文章:

python - 在keras中添加卷积层给出错误

python - 如何在重启后在 python 中更快地执行 opencv cv2 imread

python - 如何从给定目录动态加载 python 类?

python - 在 Keras(tf 后端)中返回标量点积真的那么难吗?

python - 计算主题标签的功能

python - 未实现错误 : Learning rate schedule must override get_config

python - 为分组数据的 RNN 生成具有特定长度的序列/批处理

python - 如何在jupyter中添加conda环境

keras - 图像+数字数据的神经网络

python - 使用 TensorFlow 作为后端的 keras 出现错误