约束是以层为对象进行的。具体的 API 因层而异,但 DenseConv1DConv2DConv3D 这些层具有统一的 API。

约束层开放 2 个关键字参数:

  • kernel_constraint 用于主权重矩阵。
  • bias_constraint 用于偏置。

可用的约束

[source]

MaxNorm 最大范数权值约束。

参数

  • m: 输入权值的最大范数。
  • axis: 整数,需要计算权值范数的轴。 例如,在 Dense 层中权值矩阵的尺寸为 (input_dim, output_dim), 设置 axis0 以约束每个长度为 (input_dim,) 的权值向量。 在 Conv2D 层()中,权值张量的尺寸为 (rows, cols, input_depth, output_depth),设置 axis[0, 1, 2] 以越是每个尺寸为 (rows, cols, input_depth) 的滤波器张量的权值。

参考文献

权重非负的约束。

映射到每个隐藏单元的权值的约束,使其具有单位范数。

参数

  • axis: 整数,需要计算权值范数的轴。 例如,在 Dense 层中权值矩阵的尺寸为 (input_dim, output_dim), 设置 axis0 以约束每个长度为 (input_dim,) 的权值向量。 在 Conv2D 层(data_format="channels_last")中,权值张量的尺寸为 (rows, cols, input_depth, output_depth),设置 为 [0, 1, 2] 以越是每个尺寸为 (rows, cols, input_depth) 的滤波器张量的权值。

[source]

MinMaxNorm 最小/最大范数权值约束。

参数

  • min_value: 输入权值的最小范数。
  • max_value: 输入权值的最大范数。
  • rate: 强制执行约束的比例:权值将被重新调整为 (1 - rate) norm + rate norm.clip(min_value, max_value)。 实际上,这意味着 rate = 1.0 代表严格执行约束,而 rate <1.0 意味着权值 将在每一步重新调整以缓慢移动到所需间隔内的值。