我正在使用Keras(版本2.0.0),我想使用预训练模型,例如VGG16 . 为了开始,我运行了[Keras文档站点] [https://keras.io/applications/]的示例,用于提取VGG16的功能:
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np
model = VGG16(weights='imagenet', include_top=False)
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)
features = model.predict(x)
使用过的 preprocess_input()
功能困扰我(该功能通过平均像素进行零中心,通过查看源代码可以看到) .
在使用经过训练的模型之前,我是否真的需要预处理输入数据(验证/测试数据)?
a)如果是,可以得出结论,你总是必须知道在训练阶段已经执行了哪些预处理步骤?!
b)如果否:验证/测试数据的预处理会导致偏差吗?
我感谢您的帮助 .
1 回答
是的,您应该使用预处理步骤 . 您可以在没有它的情况下重新训练模型,但是第一层将学会使数据居中,这样就浪费了参数 .
如果你没有重新录制你的表演会受到影响 .
reddit上的精彩主题:https://www.reddit.com/r/MachineLearning/comments/3q7pjc/why_is_removing_the_mean_pixel_value_from_each/