欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DataVec/归一化

程序员文章站 2022-03-01 19:06:57
...

为什么要进行归一化?

 

当它们被馈送的数据被归一化时,神经网络工作得最好,数据被限制在-1到1之间。这样做有几个原因。一个是使用梯度下降训练网络,并且它们的激活函数通常在-1和1之间的某个范围。即使使用不会很快饱和的激活函数,将你的值限制到这个范围以提高性能仍然是很好的实践。

 

可用的预处理器


MultiNormalizerStandardize

[源码]

MultiDataSet的预处理器把特征值(和可选的标签值)归一化到均值为0,标准差为1。

 

load
public void load(@NonNull List<File> featureFiles, @NonNull List<File> labelFiles) throws IOException 

 从文件系统加载均值和标准差。

  • 参数featureFiles是特征值的原文件,每个输入要求有两个文件,均值和标准差文件。
  • 参数labelFiles是标签源文件,每个输出要求2个文件,均值和标准差文件。
save
public void save(@NonNull List<File> featureFiles, @NonNull List<File> labelFiles) throws IOException 
    • 参数featureFiles是特征值的原文件,每个输入要求有两个文件,均值和标准差文件。
    • 参数labelFiles是标签源文件,每个输出要求2个文件,均值和标准差文件。
    • 已弃用 使用 {- link MultiStandardizeSerializerStrategy} 代替

保存当前的均值和标准差到文件系统。

 

ImageMultiPreProcessingScaler 图像多预处理缩放器

[源码]

 

一种预处理器,专门用于在多数据集中应用最小最大缩放到一个或多个特征阵列的图像。

可以采用一个范围,因此可以将像素值从0->255缩放为minRange->maxRange默认minRange=0和maxRange=1;如果像素值不是8位,则可以指定位数作为构造函数中的第三个参数。

对于已经浮点的值,指定位数为1。

 

 

ImageMultiPreProcessingScaler
public ImageMultiPreProcessingScaler(double a, double b, int maxBits, int[] featureIndices) 

 预处理器可以取一个范围作为最小范围和最大范围

 

      • 参数 a, 默认 = 0
      • 参数 b, 默认 = 1
      • 参数maxBits是图片的最大位, 默认 = 8
      • 参数 featureIndices 特征数组的索引。如果只存在一个特征数组,则应该总是为0。

StandardizeStrategy 标准化策略

[源码]

全部的均值和标准差文。

 

preProcess
public void preProcess(INDArray array, INDArray maskArray, DistributionStats stats) 

归一化一个数据数组

      • 参数 array 用于归一化的数组
      • 参数 stats 数据总体的统计 
revert
public void revert(INDArray array, INDArray maskArray, DistributionStats stats) 

反归一化一个数据组

      • 参数 array 用于反归一化的数组
      • 参数 stats 数据总体的统计

MultiNormalizerMinMaxScaler 多归一化器最小最大值缩放器

[源码]

多数据集的预处理器,用来归一化特征值(并且也可以是标签值,值介于一个最小值和最大值之间(默认在0和1之间 )

 

MultiNormalizerMinMaxScaler 
public MultiNormalizerMinMaxScaler(double minRange, double maxRange) 

预处理器可以取一个范围作为最小范围和最大范围

 

 

      •  参数 minRange 是目标范转下界
      • 参数 maxRange 是目标范转上界

CompositeMultiDataSetPreProcessor 组合多数据集预处理器

[源码]

 

一个简单的组合多数据集合预处理器-允许你在一个多数据集上应用多个多数据集合预处理器,它们按顺序被传递给构造器。

 

CompositeMultiDataSetPreProcessor
public CompositeMultiDataSetPreProcessor(MultiDataSetPreProcessor... preProcessors)
      • 参数 preProcessors 是需要应用的预处理器。它们将以这个顺序被应用。

ImageFlatteningDataSetPreProcessor 图像平坦化数据集预处理

[源码]

 

用于平坦化一个4维的CNN 特征数组为一个平坦的2维格式的数据集预处理器(用于一个类似于稠密层/多层感知器)


MultiNormalizerHybrid 多归一化器混合

[源码]

多数据集预处理器,可以配置为对不同的输入和输出使用不同的归一化策略,或者根本不使用。例如,当一个输入应该被归一化时,可以使用,但是另一个输入应该不被修改,因为它是嵌入层的输入。或者,人们可能想要混合归一化和最小最大缩放用于不同的输入和输出。

默认情况下,不应用归一化。有一些方法可以针对全局或单个输入/输出级别的输入和输出配置期望的归一化策略。特定的输入/输出策略将取代全局的输入/输出策略。

 

MultiNormalizerHybrid
public MultiNormalizerHybrid standardizeAllInputs() 

对所有输入应用标准化,除了被单独配置的那些输入。

      • 返回归一化器 
minMaxScaleAllInputs
public MultiNormalizerHybrid minMaxScaleAllInputs() 

对所有输入应用最小最大缩放,除了被单独配置的那些输入。

    • 返回归一化器 
minMaxScaleAllInputs
public MultiNormalizerHybrid minMaxScaleAllInputs(double rangeFrom, double rangeTo) 

 

对所有输入应用最小最大缩放,除了被单独配置的那些输入。

      • 参数rangeFrom是目标范围的下界
      • 参数rangeTo是目标范围的上界
      • 返回归一化器 
standardizeInput
public MultiNormalizerHybrid standardizeInput(int input)  
对指定输入应用标准化,重写全局输入策略(如果有的话)
      • 参数input是输入索引
      • 返回归一化器
minMaxScaleInput
public MultiNormalizerHybrid minMaxScaleInput(int input) 
对指定输入应用最小最大缩放,重写全局输入策略(如果有的话)
      • 参数input是输入索引
      • 返回归一化器
minMaxScaleInput
public MultiNormalizerHybrid minMaxScaleInput(int input, double rangeFrom, double rangeTo) 
对指定输入应用最小最大缩放,重写全局输入策略(如果有的话)
      • 参数input是输入索引
      • 参数rangeFrom是目标范围的下界
      • 参数rangeTo是目标范围的上界
      • 返回归一化器
standardizeAllOutputs
public MultiNormalizerHybrid standardizeAllOutputs() 

 对所有输出应用标准化,除了单独配置的输出。

      • 返回归一化器
minMaxScaleAllOutputs
public MultiNormalizerHybrid minMaxScaleAllOutputs()  
        对所有输出应用最小最大缩放,除了单独配置的输出。
      • 返回归一化器
minMaxScaleAllOutputs
public MultiNormalizerHybrid minMaxScaleAllOutputs(double rangeFrom, double rangeTo) 

所有输出应用最小最大缩放,除了单独配置的输出。

      • 参数rangeFrom是目标范围的下界
      • 参数rangeTo是目标范围的上界
      • 返回归一化器
standardizeOutput
public MultiNormalizerHybrid standardizeOutput(int output) 
对指定输出应用标准化,重写全局输入策略(如果有的话)
    • 参数输出是输出索引
    • 返回归一化器
minMaxScaleOutput
public MultiNormalizerHybrid minMaxScaleOutput(int output) 
对指定输出应用最小最大缩放,重写全局输入策略(如果有的话)
    • 参数输出是输出索引
    • 返回归一化器
minMaxScaleOutput
public MultiNormalizerHybrid minMaxScaleOutput(int output, double rangeFrom, double rangeTo) 

对指定输出应用最小最大缩放,重写全局输入策略(如果有的话)

      • 参数输出是输出索引
      • 参数rangeFrom是目标范围的下界
      • 参数rangeTo是目标范围的上界
      • 返回归一化器
getInputStats
public NormalizerStats getInputStats(int input) 

给定一个输入,获取归一化统计。

      • 参数input是输入索引
      • 返回一个相当于归一化策略的归一化统计
getOutputStats
public NormalizerStats getOutputStats(int output)  
给定一个输入,获取归一化统计。
      • 参数output是输出索引
      • 返回一个相当于归一化策略的归一化统计

 

fit
public void fit(@NonNull MultiDataSet dataSet) 

获取每个输入的归一化统计映射

      • 返回指向归一化器统计实例的输入索引映射
fit
public void fit(@NonNull MultiDataSetIterator iterator) 

在数据集上迭代用于归一化的统计信息

      • 参数iterator是用于收集统计信息的迭代器
transform
public void transform(@NonNull MultiDataSet data) 

转换一个数据集 

      • 参数 data是要预处理的数据集 the dataset to pre proces
revert
public void revert(@NonNull MultiDataSet data) 

 取消这个数据归一化实例(数组在原处修改)所应用的归一化。

      • 参数data是需要取消归一化的多数据集。
revertFeatures
public void revertFeatures(@NonNull INDArray[] features) 

撤消(还原)此数据归一化实例应用到整个输入数组的归一化

      • 参数features是输入的归一化数组
revertFeatures
public void revertFeatures(@NonNull INDArray[] features, INDArray[] maskArrays)  
撤消(还原)此数据归一化实例应用到整个输入数组的归一化
      • 参数features是输入的归一化数组
      • 参数 maskArrays是 属于输入的可选掩码数组
revertFeatures
public void revertFeatures(@NonNull INDArray[] features, INDArray[] maskArrays, int input) 

 撤消(还原)此数据归一化实例应用到一个特殊输入的特征的归一化

      • 参数features是输入的归一化数组
      • 参数 maskArrays是 属于输入的可选掩码数组
      • 参数input是要还原归一化的输入的索引
revertLabels
public void revertLabels(@NonNull INDArray[] labels) 

撤消(还原)此数据归一化实例应用到整个输出数组的归一化

      • 参数labels是输出的归一化数组 
revertLabels
public void revertLabels(@NonNull INDArray[] labels, INDArray[] maskArrays) 

撤消(还原)此数据归一化实例应用到整个输出数组的归一化

      • 参数labels是输出的归一化数组
      • 参数 maskArrays是 属于输出的可选掩码数组
revertLabels
public void revertLabels(@NonNull INDArray[] labels, INDArray[] maskArrays, int output) 

撤消(还原)此数据归一化实例应用到一个特殊输出的特征的归一化

      • 参数labels是输出的归一化数组
      • 参数maskArrays是 属于输出的可选掩码数组
      • 参数output是要还原归一化的输出的索引 

NormalizerMinMaxScaler

[源码]

 

数据集的预处理器,用于归一化特征值(也可以是标签值),让其介于一个最小值与最大值之间(默认为0到1之间)

 

NormalizerMinMaxScaler
public NormalizerMinMaxScaler(double minRange, double maxRange) 

预处理器,可以取一个范围作为最小范围和最大范围

      • 参数 minRange
      • 参数 maxRange
load
public void load(File... statistics) throws IOException 

加载给定的最大和最小值 

      • 需要加载的统计信息
      • 抛出 IOException
save
public void save(File... files) throws IOException 

保存当前最小值和最大值

      • 参数files是要保存的统计信息
      • 抛出IOException
      • 弃用,使用NormalizerSerializer代替

CompositeDataSetPreProcessor 组合数据集预处理器

[源码]

一个简单的组合数据集预处理器-允许你在一个数据集上按顺序应用多个数据集预处理器,它们按顺序传递给构造器。

 

CompositeDataSetPreProcessor
public CompositeDataSetPreProcessor(DataSetPreProcessor... preProcessors)
      • 参数  preProcessors 是要应用的预处理器。它们会以这个顺序应用。 

Normalizer

[源码]

所有归一化器的基础接口


NormalizerStrategy

[源码]

基于全体统计用于归一化和还原归一化的策略接口。


ImagePreProcessingScaler 图像预处理缩放器

[源码]

Created by susaneraly on 6/23/16.

 

一种预处理器,专门用于在多数据集中应用最小最大缩放到一个或多个特征阵列的图像。可以采用一个范围,因此可以将像素值从0->255缩放为minRange->maxRange默认minRange=0和maxRange=1;如果像素值不是8位,则可以指定位数作为构造函数中的第三个参数。对于已经浮点的值,指定位数为1。

 

ImagePreProcessingScaler
public ImagePreProcessingScaler(double a, double b, int maxBits) 

预处理器可以取一个范围作为最小范围和最大范围

      • 参数 a, 默认 = 0
      • 参数 b, 默认 = 1
      • 参数maxBits是图片的最大位, 默认 = 8
fit
public void fit(DataSet dataSet) 

拟合数据集(只计算基于此数据集的统计数据)

      • 参数dataSet参与计算的数据集
fit
public void fit(DataSetIterator iterator) 

在数据集上迭代用于归一化的统计信息

      • 参数iterator是用于收集统计信息的迭代器
transform
public void transform(DataSet toPreProcess) 

转换数据 

      • 参数toPreProcess要转换的数据集

VGG16ImagePreProcessor

[源码]

 

这是一个专门用于VG16的预处理器。它从每个像素中减去在训练集上计算的平均RGB值,如报告的那样。https://arxiv.org/pdf/1409.1556.pdf

 

fit
public void fit(DataSet dataSet) 

拟合数据集(只计算基于此数据集的统计数据)

    • 参数dataSet参与计算的数据集
fit
public void fit(DataSetIterator iterator) 

在数据集上迭代用于归一化的统计信息

      • 参数iterator是用于收集统计信息的迭代器
transform
public void transform(DataSet toPreProcess) 

转换数据 

 

      • 参数toPreProcess要转换的数据集

NormalizerStandardize

[源码]

Created by susaneraly, Ede Meijer 。数据集的方差和均值预处理器,将特征值(和可选的标签值)标准化为0均值和标准偏差1

 

 

load
public void load(File... files) throws IOException 

从文件系统中加载均值和标准差

      • 参数files是需要加载的文件,如果标准化标签需要4个文件,否则为2.
save
public void save(File... files) throws IOException 
      • 参数files是需要保存的文件,如果标准化标签需要4个文件,否则为2.
      • 弃用,使用NormalizerSerializer代替

将当前方法和标准偏差保存到文件系统 


MultiDataNormalization

[源码]

一个用于多数据集归一化器的接口。数据归一化器,在一个多数据集上计算某些统计信息并按某种方式缩放数据。


MinMaxStrategy

[源码]

总体数据的上界和下界统计

 

MinMaxStrategy
public MinMaxStrategy(double minRange, double maxRange) 
      • 参数minRange是目标范围的下界
      • 参数maxRange是目标范围的上界
preProcess
public void preProcess(INDArray array, INDArray maskArray, MinMaxStats stats) 

归一化一个数据数组

      • 参数array是需要归一化的数据
      • 参数stats是总体数据的统计信息  
revert
public void revert(INDArray array, INDArray maskArray, MinMaxStats stats) 

对一个数据数组还原归一化

      • 参数array是需要还原归一化的数据
      • 参数stats是总体数据的统计信息

DataNormalization

[源码]

一个用于多数据集归一化器的接口。数据归一化器,在一个多数据集上计算某些统计信息并按某种方式缩放数据。

 

 

有任何问题请联系微信 

DataVec/归一化
            
    
    博客分类: dl4j dl4jdeeplearning4jjava机器学习

如果您觉得我的文章给了您帮助,请为我买一杯饮料吧!以下是我的支付宝,意思一下我将非常感激!

DataVec/归一化
            
    
    博客分类: dl4j dl4jdeeplearning4jjava机器学习