Caffe的输入数据归一化

据我所知,如果我想将数据从[0, 255]归一化到[0, 1),可以在prototxt文件的transform_param中传递一个scale参数:0.00390625。然而,如果我想在prototxt级别将数据归一化到[-0.5, 0.5](以获得0均值分布),该怎么做呢?

假设我的train_val.prototxt文件如下所示:

transform_param {  mirror: true  crop_size: 227  scale: 0.00390625  mean_file: "some_mean_file.binaryproto"

从数学角度来看,我认为它看起来像下面这样:

 normalized value = (input pixel value / 255) - 0.5  

但我不知道如何将其映射到transform_param的scale值,因为scale值没有负值(符号值)的概念。或许,Caffe有不同的机制来实现这一点(而不是通过scale操作)。

从我在Udacity的深度学习讲座中获得的理解,它提到始终将输入归一化以获得0均值是一种好的做法。我可以放宽这种指导吗?如果我忽略它,会有什么显著影响吗?


回答:

查看caffe.proto中关于TransformationParameter的注释

// 对于数据预处理,我们可以进行简单的缩放和减去数据均值,如果提供了的话。请注意,均值减法总是先于缩放进行。

均值减法是在缩放之前进行的,因此,在减去mean_file之后,您的数据大约在[-128, 128]范围内。将其缩放1/256,您就完成了,您的数据应该大致在[-0.5, 0.5]范围内。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注