数据预处理--输入归一化/标准化/放缩

输入归一化/标准化

  Alex 和 Caffe中的初始化参数都是基于均值归一化的,如果不做归一化,会因为输入大了一半,导致训练失败。这也是为什么Caffe强制为样本计算图像均值的原因。

  这样,像素值[0,255]被调整成了近似[-128,128]。尽管图像数据格式规整,但是做一做归一化还是挺有用处的。

  归一化本身是一种降低特征之间差异的手段,不一定就可以增强discriminative ability,应该慎重使用。

一个简单策略

  训练样本均值归一化。即对训练集所有样本计算各个维度的均值(比如32x32图像,就应该有32x32个均值)并且将均值存储起来。
  训练网络时,训练集、验证集减去存起来的均值。
  测试网络时,测试集减去存起来的均值(一定要全减去训练集的均值)。

深度学习cnn中图片预处理方式(减去均值后,又乘以了0.0167)

  减去均值后,又乘以了0.0167。简单来说,就是减均值除以标准差。这里对应输入为0-255的情形。
  0.0167表示的是方差归一化,不同数据集用不同的值为的是Normalize Input,减去均值除以std得到均值为0std为1的数据组。

  取0.0167初衷是用它来近似代替除以标准差。在ImageNet上,输入数据的BGR三通道均值是[104,117,123]左右,而标准差在[57.1,57.4,58.4]左右,相差很小,都近似取58。然后,除以标准差,就是x/58=x*(1/58)≌x*0.017。


输入的尺寸很重要

  ImageNet通常将224x224x3作为输入尺寸,即具有3个颜色通道的224×224像素图像。虽然12GB内存对于ImageNet上具有112x112x3维度的类似数据集的最先进的结果至关重要,但我们可能会获得最新的结果,只有4-6GB的内存。另一方面,对于输入大小为25x75x75x3x的视频数据集,12GB的内存可能与您需要的结果相差很远。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在R语言中,可以使用`scale()`函数来对数据进行归一化,将其放缩到(-1,1)的范围内。 例如,假设我们有一个数据框`data`,其中有两列数据`x`和`y`,我们想要对它们进行归一化,可以按如下步骤操作: 1. 选择要进行归一化的列,这里我们选择`x`和`y`列 ```R cols_to_normalize <- c("x", "y") ``` 2. 对数据进行归一化 ```R data[cols_to_normalize] <- scale(data[cols_to_normalize], center = FALSE, scale = max(abs(data[cols_to_normalize]))) ``` 这里的`center`参数设置为`FALSE`,表示不对数据进行均值中心化;`scale`参数设置为数据中的最大绝对值,这样就可以将数据放缩到(-1,1)的范围内。 归一化后,我们可以通过`summary()`函数来查看数据的统计信息,以确保数据已经被正确归一化。 ### 回答2: 在R语言中,可以使用不同的方法来实现数据归一化并将其放缩到(-1,1)的范围内。 一种常用的方法是使用如下的归一化公式: scaled_value = (value - min_value) / (max_value - min_value) * 2 - 1 其中,value表示原始数据的某个值,min_value表示原始数据中的最小值,max_value表示原始数据中的最大值,scaled_value表示归一化后的值。 首先,可以使用R语言中的函数来找到原始数据的最大值和最小值,可以使用min()函数找到最小值,max()函数找到最大值。假设原始数据存储在一个向量或数据框中,可以像下面这样找到最大最小值: min_value <- min(data) max_value <- max(data) 然后,可以使用for循环或apply()函数来遍历原始数据,并使用上述归一化公式来归一化数据。以下是一个使用for循环的示例: scaled_data <- numeric(length(data)) for (i in 1:length(data)) { scaled_data[i] <- (data[i] - min_value) / (max_value - min_value) * 2 - 1 } 或者可以使用apply()函数来实现: scaled_data <- apply(data, 1, function(x) { (x - min_value) / (max_value - min_value) * 2 - 1 }) 这样,scaled_data中就存储了归一化放缩到(-1,1)的值。 ### 回答3: R语言中对数据进行归一化放缩到(-1,1)可以使用以下方法: 1. 最小-最大放缩方法(Min-Max Scaling): 首先找到原始数据集中的最小值(min)和最大值(max)。然后使用以下公式将数据归一化到(-1,1)的范围内: 归一化值 =(原始数值 - 最小值)/(最大值 - 最小值)*2 - 1 2. Z-标准化方法(Z-Score Normalization): 使用Z-标准化将数据归一化到(-1,1)的范围内也是常用的方法。首先,计算原始数据集中的平均值(mean)和标准差(standard deviation)。然后使用以下公式将数据归一化到(-1,1)的范围内: 归一化值 =(原始数值 - 平均值)/标准差 下面是一个示例代码,演示如何使用R语言对数据进行归一化放缩到(-1,1): ```R # 创建示例数据集 data <- c(5, 10, 15, 20, 25) # 最小-最大放缩方法 scaled_min_max <- (data - min(data))/(max(data) - min(data))*2 - 1 # Z-标准化方法 scaled_z_score <- (data - mean(data))/sd(data) # 打印归一化结果 print(scaled_min_max) print(scaled_z_score) ``` 执行以上代码,将会得到最小-最大放缩和Z-标准化归一化结果,呈现在(-1,1)范围内的数据集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值