如何正确地使我的数据居中

数据挖掘 机器学习 深度学习 美国有线电视新闻网 正常化
2022-02-25 06:50:12

我的任务是根据一个人面部的 rgb 图像来估计一个人的年龄。为此,我正在使用 ResNet-50。在第一阶段,我在一个名为 WIKI-IMDB 的数据集上训练了我的网络(在通过水平翻转过滤和扩展我的数据集之后,它包含大约 300k 图像),我用预训练的 ResNet 的权重初始化了网络的权重。在 ImageNet 上训练的 50 个网络。在 WIKI-IMDB 数据集上进行训练时,我计算了训练集输入的每个通道 (RGB) 的平均值,并从批次中的每个示例中减去它(我也使用相同的平均值从我的验证集中减去它)用于提前停止)。在我完成了在 WIKI-IMDB 上的网络训练后,我想在另一个数据集集上对其进行测试,这是该任务的基准。我的新数据集 m 测试称为 CACD,包含约 160k 图像,我将其划分为训练集和测试集。我需要在 CACD 训练集上微调我的网络,最后报告我在 CACD 测试集上使用的指标。

我的问题是:在学习新的 CACD 训练集时,我应该从批次中的每个示例中减去 CACD 训练集的平均值,还是应该继续减去 WIKI-IMDB 训练集的平均值?如果我需要减去 CACD 训练集的新平均值,我是否应该在评估 CACD 测试集时也使用该平均值?

3个回答

每个 rgb 颜色通道的值都在 0 到 255 之间。归一化方法有很多。对于这种情况,我只需将图像除以 255 而不减去平均值,以确保输出介于 0 和 1 之间

Z = X/255

如果您有兴趣将图像集中在零附近,您可以减去 127(作为平均值),然后除以 255

Z = (X-127)/255

关于使用训练摘要统计或完整数据集的统计,以下是一些对该问题有很好答案的主题/回复:

上一个堆栈问题

在 rapidminer 社区板上

简而言之,在训练模型时“偷看”测试数据是一个常见但危险的错误。

在将数据集拆分为训练和测试子集之前,应用Z-score 归一化,即减去均值并将余数除以完整数据集的方差。