Класс RandomUniform
Класс RandomUniform относится к секции train и
применяется для инициализации весов нейронной сети
случайными значениями, взятыми из равномерного
распределения на отрезке от minval до maxval.
Первым параметром передается нижняя граница диапазона
minval, вторым - верхняя граница maxval.
Третьим параметром можно передать зерно генератора
случайных чисел seed для воспроизводимости результата.
Класс удобно использовать в качестве аргумента
kernel_initializer при создании слоев.
Синтаксис
tf.keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None)
Пример
Давайте создадим инициализатор с диапазоном от
-0.05 до 0.05 и получим из него тензор формы
(2, 3):
import tensorflow as tf
tf.random.set_seed(0)
init = tf.keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=0)
t = init(shape=(2, 3))
print(t)
Результат выполнения кода:
tf.Tensor(
[[ 0.02770257 -0.03484619 0.0228982 ]
[ 0.04620981 -0.00844574 0.03110909]], shape=(2, 3), dtype=float32)
Пример
Давайте используем инициализатор RandomUniform
в слое Dense и посмотрим на форму весов:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.Dense(
units=4,
kernel_initializer=tf.keras.initializers.RandomUniform(minval=-0.1, maxval=0.1, seed=0)
)
t = layer(tf.constant([[1.0, 2.0, 3.0]]))
print(t)
print(layer.kernel.shape)
Результат выполнения кода:
tf.Tensor(
[[-0.11057746 -0.23385683 0.01598489 0.2992373 ]], shape=(1, 4), dtype=float32)
(3, 4)
Пример
Давайте получим несколько значений из инициализатора и убедимся, что они лежат в заданных границах:
import tensorflow as tf
tf.random.set_seed(0)
init = tf.keras.initializers.RandomUniform(minval=0.0, maxval=1.0, seed=0)
t = init(shape=(5,))
print(t)
print(tf.reduce_min(t).numpy(), tf.reduce_max(t).numpy())
Результат выполнения кода:
tf.Tensor([0.5541201 0.09686289 0.45793605 0.9240941 0.83102834], shape=(5,), dtype=float32)
0.09686289 0.9240941
Смотрите также
-
класс
RandomNormal,
который инициализирует веса нормальным распределением -
класс
GlorotUniform,
который применяет равномерную инициализацию Глоро -
класс
HeNormal,
который инициализирует веса нормальным распределением Хе -
класс
Zeros,
который инициализирует веса нулями