Usage of constraints

constraints模块的功能允许在优化过程中对网络参数设置约束(例如,非负性).

处罚是按层进行的. 确切的API将取决于该层,但是DenseConv1DConv2DConv3D具有统一的API.

这些层公开了2个关键字参数:

  • kernel_constraint重矩阵的kernel_constraint
  • bias_constraint为偏差.
from keras.constraints import max_norm
model.add(Dense(64, kernel_constraint=max_norm(2.)))

Available constraints

[source]

MaxNorm

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

MaxNorm重量约束.

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

Arguments

  • 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) .

References


[source]

NonNeg

keras.constraints.NonNeg()

将权重约束为非负数.


[source]

UnitNorm

keras.constraints.UnitNorm(axis=0)

将入射到每个隐藏单元的权重约束为具有单位范数.

Arguments

  • 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) .

[source]

MinMaxNorm

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

MinMaxNorm重量约束.

将入射到每个隐藏单元的权重约束为在下限和上限之间具有范数.

Arguments

  • min_value :传入权重的最小范数.
  • max_value :传入权重的最大范数.
  • rate :执行约束的速率:权重将重新缩放为yield (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) .