Caffe的输入数据规范化

时间:2017-02-27 13:59:11

标签: machine-learning deep-learning normalization caffe

据我所知,如果我想将数据[0,255]的规范化应用于[0,1],我可以在 transform_param 中传递一个scale:0.00390625的参数> prototxt 文件。但是,如果我想在 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 的比例值,因为比例值没有负值概念(有符号值)。也许,Caffe有不同的机制来实现这一点(而不是通过规模操作来实现)。

根据我从Udacity的深度学习讲座中获得的理解,它提到总是将输入规范化以便具有 0 的意思是一个好习惯。我可以放松这种指南吗?如果我忽略它会产生什么重大影响?

1 个答案:

答案 0 :(得分:1)

查看TransformationParameter

上的caffe.proto条评论
// For data pre-processing, we can do simple scaling and subtracting the
// data mean, if provided. Note that the mean subtraction is always carried
// out before scaling.

平均减法在缩放之前完成,因此,在减去mean_file之后,您的数据大约在[-128. 128]范围内。将其缩小1/256并完成后,您的数据应大致在[-.5, .5]范围内。