Подтвердить что ты не робот

В чем разница между 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. Но не очень понял.

4b9b3361

Ответ 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 стандартных отклонения от среднего, отбрасываются и перебираются.