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)