Перейти к содержанию

Ограничения

Использование ограничений

Функции из модуля ограничений позволяют устанавливать ограничения (например, неотрицательность) на сетевые параметры при оптимизации.

Штрафы применяются на уровне каждого слоя. Точный API будет зависеть от слоя, но слои Dense, Conv1D, Conv2D и Conv3D имеют унифицированный API.

Эти слои выставляют 2 аргумента по ключевым словам:

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

Ограничение веса, падающего на каждую скрытую единицу, чтобы норма была меньше или равна желаемому значению.

Аргументы

  • max_value: максимальная норма для входящих весов.
  • axis: целое число, ось, по которой рассчитываются нормы веса. Например, в Dense слое весовая матрица имеет форму (input_dim, output_dim), установив ось 0, чтобы ограничить каждый весовой вектор длины (input_dim,). В слое Conv2D с data_format=»channels_last» весовой тензор имеет форму (строки, столбцы, input_depth, output_depth), установив ось в [0, 1, 2] для ограничения весов каждого тензора размера фильтра (rows, cols, input_depth).

Ссылки

  • Исключение: Простой способ предотвратить перегрузку нейронных сетей.

[source]

NonNeg

keras.constraints.NonNeg()

Сдерживает вес, чтобы быть неотрицательным.


[source]

UnitNorm

keras.constraints.UnitNorm(axis=0)

Сдерживает весовой инцидент с каждой скрытой единицей, чтобы иметь единичную норму.

Аргументы

  • axis: целое число, ось, по которой рассчитываются нормы веса. Например, в Dense слое весовая матрица имеет форму (input_dim, output_dim), установив ось 0, чтобы ограничить каждый весовой вектор длины (input_dim,). В слое Conv2D с data_format=»channels_last» весовой тензор имеет форму (строки, столбцы, input_depth, output_depth), установив ось в [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.

Удерживает вес, падающий на каждую скрытую единицу, чтобы иметь норму между нижней и верхней границей.

Аргумент

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), установив по оси 0, чтобы ограничить каждый весовой вектор длины (input_dim,). В слое Conv2D с data_format=»channels_last» весовой тензор имеет форму (rows, cols, input_depth, output_depth), установив ось в [0, 1, 2] для ограничения весов каждого тензора размера фильтра (строки, столбцы, input_depth).