Neural network 我必须使用神经网络预处理测试数据吗?
我使用的是Keras(版本2.0.0),我希望使用预训练的模型,例如VGG16。 为了开始,我运行了[Keras documentation site]的示例,用于使用VGG16提取特征:Neural network 我必须使用神经网络预处理测试数据吗?,neural-network,keras,test-data,image-preprocessing,Neural Network,Keras,Test Data,Image Preprocessing,我使用的是Keras(版本2.0.0),我希望使用预训练的模型,例如VGG16。 为了开始,我运行了[Keras documentation site]的示例,用于使用VGG16提取特征: from keras.applications.vgg16 import VGG16 from keras.preprocessing import image from keras.applications.vgg16 import preprocess_input import numpy as np
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\u input()
函数困扰着我
(该函数通过查看源代码可以看到的像素平均值进行零居中)
在使用经过训练的模型之前,我真的需要预处理输入数据(验证/测试数据)吗
(a)
如果是的话,我们可以得出这样的结论:您必须始终了解在培训阶段执行了哪些预处理步骤
(b)
如果否:验证/测试数据的预处理是否会导致偏差
非常感谢您的帮助。是的,您应该使用预处理步骤。您可以在不使用预处理步骤的情况下重新训练模型,但第一层将学习将数据居中,因此这是对参数的浪费 如果你不重新居中,你的表演就会受到影响
reddit上的优秀线程:谢谢你的回答。为了清晰起见:我必须对验证/测试数据使用与训练数据相同的预处理步骤(例如:训练数据的平均缩减-->对验证/测试数据的平均缩减使用相同的平均值?)。如果预训练模型在具有值的图像上执行[0255],然后我也要将我的图像缩放到这个范围,对吗?我不确定你是否正确。我不想重新训练模型。我想对它进行微调。意思是:第一层是不可训练的,只有最后一层是可训练的。那么,“第一层将学习以数据为中心”是什么意思,因为第一层无论如何都是不可培训的?是的。如果要使用现有网络,则应使用与培训过程中使用的完全相同的预处理。否则,性能可能会受到影响,因为您的数据分布将不同于用于培训的数据分布。