neural-network - 卷积神经网络的归一化方法
问题描述
共有三种常见的图像数据归一化方法,它们是
1. X = (X - X.mean) / X.std
2. X /= 255. # (based on formula: (X - min) / (max - min) which can converge data into [0, 1].)
3. X = 2 * (X - min) / (max - min) - 1 # converge into [-1, 1]
我在不同的 CNN 教程或帖子中发现,人们可能会使用其中一个来规范化数据。但是我对它们有点困惑,我应该如何在不同的情况下选择一个?
感谢您提前提供任何解释。
解决方案
从广义上讲,我们对图像进行归一化的原因是为了让模型收敛得更快。当数据未归一化时,网络的共享权重对不同的特征有不同的校准,这会使成本函数收敛非常缓慢且无效。规范化数据使成本函数更容易训练。
您选择哪种归一化方法取决于您正在处理的数据以及您对该数据所做的假设。以上三种归一化方法都是基于两个思想,即居中和缩放。方法 2. 仅涉及将数据缩放到特定范围。这确保了各种特征的比例在相似的范围内,因此提供了稳定的梯度。方法 1. 涉及以平均数据点为中心的数据,然后将数据点的每个维度除以其标准差,以便所有维度对学习算法具有同等重要性。当您有理由相信数据中的不同维度具有很大不同的范围时,这种标准化会更有效。使所有维度都在同一范围内,从而使参数共享有效。方法 3 也可以看作是在做与方法 1 相同的工作。
推荐阅读
- c++ - 如何记录 C++20 模块中的功能?
- selenium-webdriver - 在 selenium 中不是有效的 xpath 表达式问题
- r - 更新到 macOS Catalina (10.15) 后出现 Rmarkdown Pandoc 错误
- sql - 如何将一个大字符串合并为一个单词之间没有空格的字符串?
- swift - App Store Receipts 字段中缺少“product_id”
- sql - ASP.NET Windows 身份验证 - 用户“NT AUTHORITY/ANONYMOUS LOGON”登录失败
- javascript - 当我使用 Python (Windows 10) 发送本地文件地址时,我试图找到一种让浏览器读取我的 URL 参数的方法
- sql-server - 如何使用 SSIS 表达式将 dd.mm.yyyy 格式的字符串转换为日期?
- python - Python 3:如何根据范围函数创建列表列表
- java - 安装后第一个应用程序运行时相机无法正常工作