`
bewithme
  • 浏览: 433479 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DataVec/归一化

    博客分类:
  • dl4j
阅读更多

为什么要进行归一化?

 

当它们被馈送的数据被归一化时,神经网络工作得最好,数据被限制在-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

[源码]

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

 

 

有任何问题请联系微信 

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

     

分享到:
评论

相关推荐

    deeplearning4j-examples:Deeplearning4j示例(DL4J,DL4J Spark,DataVec)

    - **数据预处理**:DataVec是DL4J的一部分,专门用于数据清洗和转换,如归一化、标准化等。 3. **DL4J Spark**: - **分布式训练**:DL4J与Apache Spark结合,可以在大规模分布式环境中进行深度学习,利用Spark的...

    Deep Learning A Practitioner's Approach(pdf+epub+aw3)

    同时,可能还会讨论深度学习的优化策略,如正则化、dropout、批量归一化以及更先进的优化算法,如Adam和RMSprop。 通过阅读《深度学习:实践者的途径》,Java程序员不仅能掌握深度学习的基本理论,还能获得在实际...

    基于java 的深度学习框架DL4J

    - **数据预处理**: DataVec支持多种数据类型的数据预处理,如图像的读取、保存、灰度化、翻转、归一化等。 - **特征提取**: 通过特征提取器将原始数据转换为模型可以处理的格式。 #### 实例分析 本部分将通过一个...

    DL4J所有jar包导入项目就可使用

    同时,熟悉数据预处理的步骤,如归一化、标准化和特征提取,也是提升模型性能的关键。 总的来说,DL4J提供了一个强大的平台,让Java开发者可以便捷地探索和应用深度学习技术。这个压缩包简化了依赖管理,使得开发者...

    基于Java语言实现的深度学习框架,方便Java开发者学习.zip

    Deeplearning4j 的 DataVec 工具可以帮助你清洗、转换和归一化原始数据,使其适合模型训练。了解如何正确处理数据,包括数据集划分(训练集、验证集和测试集)、数据增强等,对于模型的泛化能力至关重要。 在模型...

    Neural Network Programming with Java

    Java可以通过Apache Commons Math库或OpenCV等库来处理数据,进行归一化、标准化、缺失值填充等操作,以便更好地适应模型的输入需求。 2. **神经网络模型**:Java中的Deeplearning4j(DL4J)是一个流行的深度学习库...

    deeplearning4j:deeplearning4j注意

    - **数据预处理**:对输入数据进行标准化、归一化等预处理,提高模型训练效果。 3. **分布式计算** - **Spark集成**:Deeplearning4j与Apache Spark无缝集成,支持在大规模数据集上进行分布式训练。 - **...

    dl4j_training

    在训练模型前,数据通常需要进行预处理,包括归一化、缺失值填充、异常值处理等。DL4J提供了DataVec工具,用于数据读取、转换和预处理,支持CSV、ARFF、Image等多种数据格式。 4. **构建模型** 在DL4J中,可以...

Global site tag (gtag.js) - Google Analytics