image - 通过除以 255 来规范化图像是否会在训练集和测试集之间泄漏信息?
问题描述
我已经看到在 CNN 在线教程中多次使用除以 255 作为归一化,这是在训练测试拆分之前在整个数据集上完成的。
我的印象是测试集应该根据训练集的均值/标准/最大值等进行归一化。通过在整个数据集中使用 /255,显然我们让训练集对测试集有一种感觉。真的吗?
这里的正确方法是什么?
这个:
x_train = (x_train - x_train_mean)/x_train_std
x_test = (x_test - x_test_mean)/x_test_std
或这个:
x_train = (x_train - x_train_mean)/x_train_std
x_test = (x_test - x_train_mean)/x_train_std
或这个:
data/255
谢谢
我被要求提供我所尝试的背景:这似乎是无法搜索的,我还没有找到任何关于它的讨论。
编辑:只是另一个想法。
因为训练集和测试集已经处于相同的比例(即每个像素从 0-255)我假设除以 255 没有区别,现在它们处于相同的比例,但是从 0-1。
解决方案
您的猜测是正确的,将图像除以 255 只是将图像从 0-255 重新缩放到 0-1。(将它从 int 转换为 float 也方便计算)但是,两者都不是必需的。然而,当将数据归零时,平均值不能泄漏到测试集中:( http://cs231n.github.io/neural-networks-2/#datapre )
x_train = (x_train - x_train_mean)
x_test = (x_test - x_train_mean)
此外,您可以使用 sklearn 的 Pipeline 类 ( https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html ) 并使用 fit() 和/或 fit_transform() 方法来简化流程。如果您使用的是 Keras,则有一个包装器
推荐阅读
- php - 如何通过laravel中的api对Web登录页面进行身份验证
- angular - 为什么 IdentityServer 4 代码流在一段时间后得到 invalid_grant 响应?
- android - android 10中的后台服务每10分钟获取一次位置
- flutter - 颤振将日期时间转换为字符串在午夜失败
- android - Textstyle 在发布时没有唤醒
- string - 如何使用 Flutter TextFormField 在行开头和结尾进行缩进和缩进
- html - 为什么我的图标没有显示在 HTML 网站中?
- python - 如何在文本中查找特定单词并使用python对其进行计数?
- php - 如何在laravel的数组列表中删除多余的数组
- angular - 在没有 accessToken 的情况下访问 Firestore 映像