我很好奇单独标准化每个图像与对整个数据集进行标准化之间的区别。
我正在使用tensorflow/models/official/resnet它是使用 tf.estimator 构建的。 tf 估计器支持生成 tf 数据集的输入管道函数。 Dataset 对象应用tf.image.per_image_standardization通过从每个像素中减去图像本身的平均值并强制执行单位方差来进行标准化。
这与其他 ML 预处理不同,后者根据整个数据集的平均值来标准化图像,例如 sklearn.preprocessing.StandardScaler .
我很困惑此输入管道的任何方面是否保留在从 tf.estimator.Estimator 导出的 tf SavedModel 中。
所以我想知道在提供模型时是否仍然需要应用特征标准化,无论是通过 tf.contrib.predictor 还是以任何其他 dnn 格式部署模型时。
即使我使用的是 per_image_standardization,我是否应该在整个数据集中应用标准化?如果是这样,我是否应该以某种方式从整个图像集中导出平均值,以便在为模型提供服务时,服务器可以从整个数据集中获取平均值并以这种方式应用标准化?
最佳答案
在 StandardScaler 中,我们进行特征标准化。对于图像,我们可以通过考虑整个数据分布来进行像素级归一化,但由于分布的可变性,这没有帮助。因此,首选per_image_standardization,它将整个图像标准化为均值零和标准差1。它也使学习速度更快。
进一步this-link可能会有帮助。有another-link ,作者通过一个例子对此进行了解释。
关于python - TensorFlow per_image_standardization 与整个数据集的平均标准化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155481/