В чем разница между tf.truncated_normal и tf.random_normal?
tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
выводит случайные значения из нормального распределения.
tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
выводит случайные значения из усеченного нормального распределения.
Я попробовал "усеченное нормальное распределение" в googling. Но не очень понял.
Ответы
Ответ 1
В документации говорится:
Для усеченного нормального распределения:
Сгенерированные значения соответствуют нормальному распределению с заданным средним значением и стандартное отклонение, за исключением того, что значения, величина которых больше чем 2 стандартных отклонения от среднего, отбрасываются и перебираются.
Скорее всего, легко понять разницу, построив график для себя (% magic - это потому, что я использую jupyter notebook):
import tensorflow as tf
import matplotlib.pyplot as plt
%matplotlib inline
n = 500000
A = tf.truncated_normal((n,))
B = tf.random_normal((n,))
with tf.Session() as sess:
a, b = sess.run([A, B])
А теперь
plt.hist(a, 100, (-4.2, 4.2));
plt.hist(b, 100, (-4.2, 4.2));
![введите описание изображения здесь]()
Точка для использования усеченного нормали - это преодоление насыщения томе-функций, таких как сигмоид (где, если значение слишком велико/мало, нейрон перестает учиться).
Ответ 2
tf.truncated_normal выбирает случайные числа из нормального распределения, чье среднее близко к 0, а значения близки к 0 Ex. От -0,1 до 0,1. Он называется усеченным, потому что вы отрезаете хвосты от нормального распределения.
tf.random_normal выбирает случайные числа из нормального распределения, чье среднее близко к 0; однако значения могут немного отличаться друг от друга. Ex. -2 до 2
На практике (машинное обучение) вы обычно хотите, чтобы ваши веса были близки к 0.
Ответ 3
Документация API для tf.truncated_normal() описывает эту функцию как:
Выводит случайные значения из усеченного нормального распределения.
Сгенерированные значения следуют за нормальным распределением с заданным средним и стандартным отклонением, за исключением того, что значения, величина которых превышает 2 стандартных отклонения от среднего, отбрасываются и перебираются.