Keras 2 API 文档 / 层 API / 层权重约束

层权重约束

[源代码]

MaxNorm

tf_keras.constraints.MaxNorm(max_value=2, axis=0)

MaxNorm 权重约束。

约束每个隐藏单元的入射权重的范数小于或等于期望值。

也可以通过快捷函数 tf.keras.constraints.max_norm 使用。

参数

  • max_value:传入权重的最大范数值。
  • axis:整数,计算权重范数的轴。例如,在 Dense 层中,权重矩阵的形状为 (input_dim, output_dim),将 axis 设置为 0 以约束长度为 (input_dim,) 的每个权重向量。在 data_format="channels_last"Conv2D 层中,权重张量的形状为 (rows, cols, input_depth, output_depth),将 axis 设置为 [0, 1, 2] 以约束大小为 (rows, cols, input_depth) 的每个滤波器张量的权重。

[源代码]

MinMaxNorm

tf_keras.constraints.MinMaxNorm(min_value=0.0, max_value=1.0, rate=1.0, axis=0)

MinMaxNorm 权重约束。

约束每个隐藏单元的入射权重的范数在较低边界和较高边界之间。

也可以通过快捷函数 tf.keras.constraints.min_max_norm 使用。

参数

  • min_value:传入权重的最小范数。
  • max_value:传入权重的最大范数。
  • rate:强制约束的速率:权重将被重新缩放以产生 (1 - rate) * norm + rate * norm.clip(min_value, max_value)。实际上,这意味着 rate=1.0 代表严格执行约束,而 rate<1.0 意味着权重将在每一步重新缩放以缓慢地向所需区间内的值移动。
  • axis:整数,计算权重范数的轴。例如,在 Dense 层中,权重矩阵的形状为 (input_dim, output_dim),将 axis 设置为 0 以约束长度为 (input_dim,) 的每个权重向量。在 data_format="channels_last"Conv2D 层中,权重张量的形状为 (rows, cols, input_depth, output_depth),将 axis 设置为 [0, 1, 2] 以约束大小为 (rows, cols, input_depth) 的每个滤波器张量的权重。

[源代码]

NonNeg

tf_keras.constraints.NonNeg()

约束权重为非负数。

也可以通过快捷函数 tf.keras.constraints.non_neg 使用。


[源代码]

UnitNorm

tf_keras.constraints.UnitNorm(axis=0)

约束每个隐藏单元的入射权重具有单位范数。

也可以通过快捷函数 tf.keras.constraints.unit_norm 使用。

参数

  • axis:整数,计算权重范数的轴。例如,在 Dense 层中,权重矩阵的形状为 (input_dim, output_dim),将 axis 设置为 0 以约束长度为 (input_dim,) 的每个权重向量。在 data_format="channels_last"Conv2D 层中,权重张量的形状为 (rows, cols, input_depth, output_depth),将 axis 设置为 [0, 1, 2] 以约束大小为 (rows, cols, input_depth) 的每个滤波器张量的权重。

[源代码]

RadialConstraint

tf_keras.constraints.RadialConstraint()

约束 Conv2D 卷积核权重对于每个半径都相同。

也可以通过快捷函数 tf.keras.constraints.radial_constraint 使用。

例如,以下 4x4 卷积核的期望输出为:

    kernel = [[v_00, v_01, v_02, v_03],
              [v_10, v_11, v_12, v_13],
              [v_20, v_21, v_22, v_23],
              [v_30, v_31, v_32, v_33]]

如下所示:

    kernel = [[v_11, v_11, v_11, v_11],
              [v_11, v_33, v_33, v_11],
              [v_11, v_33, v_33, v_11],
              [v_11, v_11, v_11, v_11]]

此约束可以应用于任何 Conv2D 层版本,包括 Conv2DTransposeSeparableConv2D,以及 "channels_last""channels_first" 数据格式。该方法假设权重张量的形状为 (rows, cols, input_depth, output_depth)