Есть ли способ использовать global_step в рамках Keras? - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь воспроизвести polynomial decay для learning rate decay в Keras платформе, которая, как реализовано в Tensorflow платформе, приведена ниже.

def poly_decay(step, initial_value, decay_period_images_seen):
    """
    Decays a variable using a polynomial law.
    :param step: number of images seen by the network since the beginning of the training.
    :param initial_value: The initial value of the variable to decay..
    :param decay_period_images_seen: the decay period in terms of images seen by the network
    (1 epoch of 10 batches of 6 images each means that 1 epoch = 60 images seen).
    Thus this value must be a multiple of the number of batches
    :return: The decayed variable.
    """

    factor = 1.0 - (tf.cast(step, tf.float32) / float(decay_period_images_seen))
    lrate = initial_value * np.power(factor, 0.9)

    return lrate

Предлагает ли Keras какой-либо скрытый параметр (который, возможно,Я не знаю о) для global step или в Керасе есть эквивалент global step?Или есть какой-нибудь альтернативный способ реализации polynomial learning rate decay в Keras framework?

1 Ответ

0 голосов
/ 22 июня 2019

По сути, сам параметр предоставляется в качестве аргументов для optimisers.

Взгляните на оптимизаторы .

sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)

Так что здесь вы можете простопередать poly_decay() в качестве параметра.

Обычно мы используем time-based decay вместо polynomial decay:

learning_rate = 0.1
decay_rate = learning_rate / epochs
momentum = 0.8
sgd = SGD(lr=learning_rate, momentum=momentum, decay=decay_rate, nesterov=False)

Проверьте этот блог для получения дополнительной информации!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...