tf.truncated_normal与tf.random_normal的详细用法

本文介绍了tf.truncated_normal与tf.random_normal的详细用法,分享给大家,具体如下:

tf.truncated_normal

代码如下:

tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

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

生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择。

在正态分布的曲线中,横轴区间(μ-σ,μ+σ)内的面积为68.268949%。

横轴区间(μ-2σ,μ+2σ)内的面积为95.449974%。

横轴区间(μ-3σ,μ+3σ)内的面积为99.730020%。

X落在(μ-3σ,μ+3σ)以外的概率小于千分之三,在实际问题中常认为相应的事件是不会发生的,基本上可以把区间(μ-3σ,μ+3σ)看作是随机变量X实际可能的取值区间,这称之为正态分布的“3σ”原则。

在tf.truncated_normal中如果x的取值在区间(μ-2σ,μ+2σ)之外则重新进行选择。这样保证了生成的值都在均值附近。

参数:

shape: 一维的张量,也是输出的张量。
mean: 正态分布的均值。
stddev: 正态分布的标准差。
dtype: 输出的类型。
seed: 一个整数,当设置之后,每次生成的随机数都一样。
name: 操作的名字。

import tensorflow as tf;
import numpy as np;
import matplotlib.pyplot as plt; 

c = tf.truncated_normal(shape=[10,10], mean=0, stddev=1) 

with tf.Session() as sess:
  print sess.run(c) 

输出:

[[ 1.95758033 -0.68666345 -1.83860338 0.78213859 -1.08119416 -1.44530308
0.38035342 0.57904619 -0.57145643 -1.22899497]
[-0.75853795 0.48202974 1.03464043 1.19210851 -0.15739718 0.8506189
1.18259966 -0.99061841 -0.51968449 1.38996458]
[ 1.05636907 -0.02668529 0.64182931 0.4110294 -0.4978295 -0.64912242
1.27779591 -0.01533993 0.47417602 -1.28639436]
[-1.65927458 -0.364887 -0.45535028 0.078814 -0.30295736 1.91779387
-0.66928798 -0.14847915 0.91875714 0.61889237]
[-0.01308221 -0.38468206 1.34700036 0.64531708 1.15899456 1.09932268
1.22457981 -1.1610316 0.59036094 -1.97302651]
[-0.24886213 0.82857937 0.09046989 0.39251322 0.21155456 -0.27749416
0.18883201 0.08812679 -0.32917103 0.20547724]
[ 0.05388507 0.45474565 0.23398806 1.32670367 -0.01957406 0.52013856
-1.13907862 -1.71957874 0.75772947 -1.01719368]
[ 0.27155915 0.05900437 0.81448066 -0.37997526 -0.62020499 -0.88820189
1.53407145 -0.01600445 -0.4236775 -1.68852305]
[ 0.78942037 -1.32458341 -0.91667277 -0.00963761 0.76824385 -0.5405798
-0.73307443 -1.19854116 -0.66179073 0.26329204]
[ 0.59473759 -0.37507254 -1.21623695 -1.30528259 1.18013096 -1.32077384
-0.59241474 -0.28063133 0.12341146 0.48480138]]

tf.random_normal

代码如下:

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)

从正态分布中输出随机值。

参数:

  1. shape: 一维的张量,也是输出的张量。
  2. mean: 正态分布的均值。
  3. stddev: 正态分布的标准差。
  4. dtype: 输出的类型。
  5. seed: 一个整数,当设置之后,每次生成的随机数都一样。
  6. name: 操作的名字。

代码

a = tf.Variable(tf.random_normal([2,2],seed=1))
b = tf.Variable(tf.truncated_normal([2,2],seed=2))
init = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init)
  print(sess.run(a))
  print(sess.run(b))

输出:

[[-0.81131822  1.48459876]
 [ 0.06532937 -2.44270396]]
[[-0.85811085 -0.19662298]
 [ 0.13895047 -1.22127688]]

指定seed之后,a的值不变,b的值也不变。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • tf.truncated_normal与tf.random_normal的详细用法

    本文介绍了tf.truncated_normal与tf.random_normal的详细用法,分享给大家,具体如下: tf.truncated_normal 复制代码 代码如下: tf.truncated_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None) 从截断的正态分布中输出随机值. 生成的值服从具有指定平均值和标准偏差的正态分布,如果生成的值大于平均值2个标准偏差的值则丢弃重新选择. 在正态

  • python神经网络tf.name_scope和tf.variable_scope函数区别

    目录 学习前言 两者区别 tf.variable_scope函数 测试代码 1.使用reuse=True共享变量 2.使用AUTO_REUSE共享变量 学习前言 最近在学目标检测……SSD的源码好复杂……看了很多版本的SSD源码,发现他们会使用tf.variable_scope,刚开始我还以为就是tf.name_scope,才发现原来两者是不一样的 两者区别 tf.name_scope()和tf.variable_scope()是两个作用域,一般与两个创建/调用变量的函数tf.variable(

  • Linux shell中的printf的详细用法

    Linux shell中的printf的详细用法 一 语法 printf '输出类型输出格式' 输出内容 输出类型: %ns:输出字符串.n是数字指代输出几个字符. %ni:输出整数.n是数字指代输出几个数字. %m.n:输出浮点数.m和n是数字,指代输出的整数位数和小数 如%8.2代表共输出8位数,其中2位是小数,6位是整数. 输出格式:  二 实战 [root@localhost ~]# printf %s 1 2 3 4 5 6 123456[root@localhost ~]# prin

  • Django Rest framework认证组件详细用法

    本文详细讲述了DRF认证组件的原理以及用法. 源码剖析 讲解DRF版本的时候我们都知道了,在dispatch方法里执行了initial方法来初始化我们的版本. 而在initial方法里有我们的认证.权限.频率组件,如下图: 我们再点进去认证组件看看: 可以看到,我们的权限组件返回的是request.user,那么这里返回的request是新的还是旧的呢? initial方法是在request重新赋值之后执行的,所以我们这里的request是新的--也就是Request类的实例化对象. 所以,这个

  • Django Rest framework权限的详细用法

    前言 我们都听过权限,那么权限到底是做什么的呢. 我们都有博客,或者去一些论坛,一定知道管理员这个角色, 比如我们申请博客的时候,一定要向管理员申请,也就是说管理员会有一些特殊的权利,是我们没有的. ==这些对某件事情决策的范围和程度,我们叫做权限==,权限是我们在项目开发中经常用到的. 本文将详细讲述DRF框架为我们提供的权限组件的使用方法. 源码剖析 DRF的版本控制.认证.权限.频率组件都在initial方法里初始化. 我们点进去看看: 其实我们版本.认证.权限.频率控制走的源码流程大致相

  • 详解Vue中watch的详细用法

    在vue中,使用watch来响应数据的变化.watch的用法大致有三种.下面代码是watch的一种简单的用法: ''' <input type="text" v-model="cityName"/> new Vue({ el: '#root', data: { cityName: 'shanghai' }, watch: { cityName(newName, oldName) { // ... } } }) ''' 直接写一个监听处理函数,当每次监听到

  • tensorflow中tf.slice和tf.gather切片函数的使用

    tf.slice(input_, begin, size, name=None):按照指定的下标范围抽取连续区域的子集 tf.gather(params, indices, validate_indices=None, name=None):按照指定的下标集合从axis=0中抽取子集,适合抽取不连续区域的子集 输出: input = [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]], [[5, 5, 5], [6, 6, 6]]] tf.slice(

  • Qt基础开发之QString与QByteArray详细用法与区别及QString QByteArray互转

    QString Qt的QString类提供了很方便的对字符串操作的接口,QString没有继承任何Qt基类. QString::arg()用法 QString str = QString("%1 %2 %3").arg(1).arg(2.0).arg("hello"); ​ %1, %2, %3作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成1,%2将被替换成2.0,%3将被替换成"hello".输出为:"1 2

  • python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例

    Deferred对象在Twsited框架中用于处理回调,这对于依靠异步的Twisted来说十分重要,接下来我们就以实例解析Python的Twisted框架中Deferred对象的用法 Deferred对象结构 Deferred由一系列成对的回调链组成,每一对都包含一个用于处理成功的回调(callbacks)和一个用于处理错误的回调(errbacks).初始状态下,deffereds将由两个空回调链组成.在向其中添加回调时将总是成对添加.当异步处理中的结果返回时,Deferred将会启动并以添加时

  • 关于tf.matmul() 和tf.multiply() 的区别说明

    我就废话不多说了,大家还是直接看代码吧~ flyfish # a # [[1, 2, 3], # [4, 5, 6]] a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3]) # b1 # [[ 7, 8], # [ 9, 10], # [11, 12]] b1 = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2]) #b2 #[[ 7 8 9] # [10 11 12]] b2 = tf.constant

随机推荐