РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
437 of 824 menu

Класс LecunNormal

Класс LecunNormal создает инициализатор весов, который генерирует случайные значения из нормального распределения со средним 0 и стандартным отклонением, равным квадратному корню из 1, деленному на количество входных нейронов слоя. Такой подход к инициализации предложил Ян Лекун и он хорошо подходит для сетей с функцией активации selu или tanh.

Инициализатор принимает один необязательный параметр seed - целое число для фиксации генератора случайных чисел, что позволяет получать воспроизводимые результаты.

Синтаксис

tf.keras.initializers.LecunNormal(seed=None)

Пример

Давайте создадим инициализатор LecunNormal с фиксированным зерном и сгенерируем тензор формы (3, 4):

import tensorflow as tf initializer = tf.keras.initializers.LecunNormal(seed=0) t = initializer(shape=(3, 4)) print(t)

Результат выполнения кода:

tf.Tensor( [[-0.20360488 0.2733991 0.36171672 -0.59151083] [ 0.58708334 0.03033855 -0.6207983 0.21409136] [ 0.49762583 -0.36655873 0.02391963 0.45483297]], shape=(3, 4), dtype=float32)

Пример

Давайте применим инициализатор LecunNormal к полносвязному слою Dense с четырьмя нейронами и выведем полученные веса:

<+python+> import tensorflow as tf layer = tf.keras.layers.Dense( units=4, kernel_initializer=tf.keras.initializers.LecunNormal(seed=0) ) t = tf.constant([[1.0, 2.0, 3.0]]) res = layer(t) print(layer.kernel) <-python+>

Результат выполнения кода:

<tf.Variable 'dense/kernel:0' shape=(3, 4) dtype=float32, numpy= array([[-0.20360488, 0.2733991 , 0.36171672, -0.59151083], [ 0.58708334, 0.03033855, -0.6207983 , 0.21409136], [ 0.49762583, -0.36655873, 0.02391963, 0.45483297]], dtype=float32)>

Пример

Давайте создадим инициализатор без фиксации зерна и сравним два вызова с разными формами тензора:

<+python+> import tensorflow as tf initializer = tf.keras.initializers.LecunNormal() t1 = initializer(shape=(2, 2)) t2 = initializer(shape=(2, 2)) print(t1) print(t2) <-python+>

Результат выполнения кода:

tf.Tensor( [[-0.2153091 0.2891396 ] [ 0.6212609 -0.65694886]], shape=(2, 2), dtype=float32) tf.Tensor( [[ 0.34336564 -0.12445231] [-0.47817495 0.2678953 ]], shape=(2, 2), dtype=float32)

Смотрите также

  • класс LecunUniform,
    который инициализирует веса равномерным распределением Лекуна
  • класс HeNormal,
    который инициализирует веса нормальным распределением Хе
  • класс GlorotNormal,
    который инициализирует веса нормальным распределением Глоро
  • класс RandomNormal,
    который инициализирует веса случайным нормальным распределением
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить