首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tf.truncated_normal和tf.random_normal有什么区别?

tf.truncated_normal和tf.random_normal有什么区别?
EN

Stack Overflow用户
提问于 2017-01-18 02:32:58
回答 3查看 27.9K关注 0票数 52

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)从截断正态分布输出随机值。

我试着用谷歌搜索‘截断正态分布’。但不太理解。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-16 17:08:36

documentation说明了一切:对于截断正态分布:

从具有指定平均值和标准差的正态分布中提取值,丢弃并重新绘制距平均值超过两个标准差的任何样本。

通过自己绘制图表,很可能很容易理解其中的区别(%magic是因为我使用jupyter笔记本):

代码语言:javascript
复制
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])

而现在

代码语言:javascript
复制
plt.hist(a, 100, (-4.2, 4.2));
plt.hist(b, 100, (-4.2, 4.2));

使用截断法线的要点是克服像sigmoid这样的tome函数的饱和度(如果值太大/太小,神经元停止学习)。

票数 78
EN

Stack Overflow用户

发布于 2017-05-02 04:36:31

tf.truncated_normal()从均值接近0且值接近0的正态分布中选择随机数。例如,从-0.1到0.1。它被称为截断,因为你从正态分布中去掉了尾部。

tf.random_normal()从均值接近于0的正态分布中选择随机数,但值可以稍远一些。例如,从-2到2。

在机器学习中,实际上,您通常希望权重接近于0。

票数 25
EN

Stack Overflow用户

发布于 2017-01-18 02:53:06

API documentation for tf.truncated_normal()将该函数描述为:

从截断正态分布输出随机值。

生成的值遵循具有指定平均值和标准差的正态分布,但幅度超过平均值2个标准差的值将被丢弃并重新选取。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41704484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档