当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.keras.layers.Normalization用法及代码示例


标准化连续特征的预处理层。

继承自:PreprocessingLayerLayerModule

用法

tf.keras.layers.Normalization(
    axis=-1, mean=None, variance=None, **kwargs
)

参数

  • axis 整数、整数元组或无。对于形状中的每个索引,一个或多个轴应该具有单独的均值和方差。例如,如果形状是 (None, 5)axis=1 ,则图层将跟踪最后一个轴的 5 个单独的均值和方差值。如果 axis 设置为 None ,该层将通过标量均值和方差对输入中的所有元素进行归一化。默认为 -1,其中输入的最后一个轴被假定为特征维度并按索引进行归一化。请注意,在唯一轴是批处理轴的批处理标量输入的特定情况下,默认情况下将分别对批处理中的每个索引进行规范化。在这种情况下,请考虑传递 axis=None
  • mean 标准化期间使用的平均值。传递的值将被广播到上面保留轴的形状;如果无法广播该值,则调用该层的build() 方法时将引发错误。
  • variance 标准化期间要使用的方差值。传递的值将被广播到上面保留轴的形状;如果无法广播该值,则调用该层的build() 方法时将引发错误。

属性

  • is_adapted 图层是否已经适合数据。

该层会将输入转换并缩放到以 0 为中心且标准差为 1 的分布中。它通过预先计算数据的均值和方差并在运行时调用 (input - mean) / sqrt(var) 来实现这一点。

该层的均值和方差值必须在构造时提供或通过 adapt() 学习。 adapt() 将计算数据的均值和方差,并将它们存储为层的权重。 adapt() 应该在 fit() , evaluate()predict() 之前调用。

有关预处理层的概述和完整列表,请参阅预处理指南。

例子:

通过分析 adapt() 中的数据集来计算全局均值和方差。

adapt_data = np.array([1., 2., 3., 4., 5.], dtype='float32')
input_data = np.array([1., 2., 3.], dtype='float32')
layer = tf.keras.layers.Normalization(axis=None)
layer.adapt(adapt_data)
layer(input_data)
<tf.Tensor:shape=(3,), dtype=float32, numpy=
array([-1.4142135, -0.70710677, 0.], dtype=float32)>

计算最后一个轴上每个指标的均值和方差。

adapt_data = np.array([[0., 7., 4.],
                       [2., 9., 6.],
                       [0., 7., 4.],
                       [2., 9., 6.]], dtype='float32')
input_data = np.array([[0., 7., 4.]], dtype='float32')
layer = tf.keras.layers.Normalization(axis=-1)
layer.adapt(adapt_data)
layer(input_data)
<tf.Tensor:shape=(1, 3), dtype=float32, numpy=
array([0., 0., 0.], dtype=float32)>

直接传递均值和方差。

input_data = np.array([[1.], [2.], [3.]], dtype='float32')
layer = tf.keras.layers.Normalization(mean=3., variance=2.)
layer(input_data)
<tf.Tensor:shape=(3, 1), dtype=float32, numpy=
array([[-1.4142135 ],
       [-0.70710677],
       [ 0.        ]], dtype=float32)>

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.layers.Normalization。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。