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)