我已经理解归一化 using tf.keras.utils.normalize(x_train, axis=0)和 的tf.keras.utils.normalize(x_train, axis=1)数学含义 -> 如果我们的列是特征,行是数据样本,则使用axis=0意味着对所有样本中该特征的总和的每个特征进行归一化。现在,当我们有一个尺寸为 28*28 的图像时,归一化轴取决于什么?每个图像都是一个数据样本,因此我很困惑在哪个轴上标准化与单个图像对应的像素值。在几乎每个教程和示例中,axis=1都会对所有图像一起进行标准化。
除了数学运算之外,我也很想了解轴选择背后的推理。
通道标准化可能会扰乱图像的视觉表示,并且总是更难进行健全性检查。
问题 1: 现在当我们有一张尺寸为 28*28 的图像时,归一化轴取决于什么?
如果您有28*28*1(假设有 1 个通道),您可以根据该图像在数据集中的排列来标准化该图像。这里通常使用的值是1,因为图像通常是堆叠的而不是串联的。
[Image 0] Compared to [Image 0][Image 1][Image 2][Image ...]
[Image 1]
[Image 2]
[Image ...]
Run Code Online (Sandbox Code Playgroud)
这意味着您可以像这样引用它:
Image[0] = (28*28*1) // 28*28 is the number of Columns per Row (Image)
Image[1] = (28*28*1)
Run Code Online (Sandbox Code Playgroud)
问题2: 每张图像都是一个数据样本,所以我很困惑在什么轴上对单个图像对应的像素值进行归一化。在几乎每个教程和示例中,都采用 axis=1 并对所有图像一起进行归一化。
标准化数据意味着两件事:
Scaling is commonly 0 to 1, -1 to 1, and -1 to 1 with 0 mean.
Run Code Online (Sandbox Code Playgroud)
正如我在问题 1 的答案中指出的,值轴 = 1 是由于图像被堆叠所致。
Image[0][28*28_pixels]
Image[1][28*28_pixels]
Image[...][28*28_pixels]
Run Code Online (Sandbox Code Playgroud)
因此,当您进行归一化时,考虑到像素位置中的所有值,axis = 1 (columns)您可以获得正确的比例pixel 1 is compared to pixel 1 of all the images,这是在整个数据集上完成的,因此归一化在整个数据中平衡到某个点。
| 归档时间: |
|
| 查看次数: |
1656 次 |
| 最近记录: |