我正在尝试以下 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/