Регуляризатор активности в TensorFlow - PullRequest
0 голосов
/ 30 апреля 2018

В Keras, для плотных слоев, мы можем использовать параметр activity_regularizer. В Tensorflow аналогичного параметра нет.

Керас:

from keras import regularizers
encoding_dim = 32
input_img = Input(shape=(784,))
# add a Dense layer with a L1 activity regularizer
encoded = Dense(encoding_dim, activation='relu', activity_regularizer=regularizers.l1(10e-5))(input_img)
decoded = Dense(784, activation='sigmoid')(encoded)
autoencoder = Model(input_img, decoded)

Как сделать Activity_regularizer в тензорном потоке?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Документация Keras не слишком точна, но из того, что я прочитал, регуляризация действий - это просто термин L1 или L2 для вывода определенного слоя, добавленного к соответствующей функции потерь модели.

Допустим, у вас есть потери, например, MSE для некоторых ярлыков:

loss = tf.metrics.mean_squared_error(labels, model_output)

Чтобы добавить регуляризацию активности L1 к определенному слою, вы просто добавили бы к вашим потерям термин регуляризации L1 для выхода этого слоя с некоторой силой регуляризации (я возьму 10e-5, как указано в вашем вопросе):

loss += 10e-5*tf.nn.l1_loss(layer_output)

Где layer_output - вывод слоя, который вы хотите регулировать.

Если бы вы сделали то же самое с весами слоя вместо его вывода, вы бы получили то, что в документации Keras 1014 * называется регуляризацией ядра. Если вы сделаете то же самое для вектора смещения этого слоя, вы получите регуляризацию смещения Кераса.

0 голосов
/ 30 апреля 2018
  • тензор потока реализует API Keras в tf.keras, поэтому технически, если он определен в Keras, он / должен быть в тензор потока.
  • другие высокоуровневые API в тензорном потоке ведут себя аналогично. Например, tf.layer.Dense имеет аргументы kernel_regularizer и bias_regularizer в своем конструкторе.
  • Если вы не хотите использовать высокоуровневые API-интерфейсы, а хотите все реализовать самостоятельно, вы можете добавить регуляризатор к вашей потере. Например, регуляризатор L2 для параметра достигается добавлением суммы его квадратов к вашему убытку, умноженной на некоторую константу, связанную с силой этого ограничения. (Коэффициент 10e-5 в вашем примере).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...