Класс RandomNormal
Класс RandomNormal применяется для инициализации весов нейронных сетей.
Он генерирует значения из нормального (гауссова) распределения со средним mean
и стандартным отклонением stddev. Первым параметром передается среднее
распределения, вторым - стандартное отклонение, третьим - зерно генератора
случайных чисел. Также можно указать диапазон допустимых значений через
minval и maxval, за пределами которого значения обрезаются.
Синтаксис
tf.keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=None)
Пример
Давайте создадим инициализатор и сгенерируем тензор формы
2 на 3:
import tensorflow as tf
tf.random.set_seed(0)
init = tf.keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=0)
t = init(shape=(2, 3))
print(t)
Результат выполнения кода:
tf.Tensor(
[[ 0.02143621 0.00028392 -0.01768306]
[-0.03177023 0.04856646 0.02872656]], shape=(2, 3), dtype=float32)
Пример
Давайте изменим среднее и стандартное отклонение:
import tensorflow as tf
tf.random.set_seed(0)
init = tf.keras.initializers.RandomNormal(mean=10.0, stddev=1.0, seed=0)
t = init(shape=(2, 3))
print(t)
Результат выполнения кода:
tf.Tensor(
[[10.428724 10.005678 9.646339 ]
[ 9.364595 10.971329 10.574531 ]], shape=(2, 3), dtype=float32)
Пример
Давайте используем инициализатор в слое Dense:
import tensorflow as tf
tf.random.set_seed(0)
init = tf.keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=0)
layer = tf.keras.layers.Dense(3, kernel_initializer=init)
t = layer(tf.constant([[1.0, 2.0, 3.0]]))
print(t)
Результат выполнения кода:
tf.Tensor([[-0.03213561 0.00944859 0.01263506]], shape=(1, 3), dtype=float32)
Пример
Давайте получим конфигурацию инициализатора через метод get_config:
import tensorflow as tf
init = tf.keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=0)
res = init.get_config()
print(res)
Результат выполнения кода:
{'mean': 0.0, 'stddev': 0.05, 'seed': 0}
Смотрите также
-
класс
RandomUniform,
который генерирует значения из равномерного распределения -
класс
TruncatedNormal,
который генерирует значения из усеченного нормального распределения -
класс
GlorotNormal,
который применяет инициализацию Ксавье на основе нормального распределения -
класс
HeNormal,
который применяет инициализацию Хе на основе нормального распределения