1 RandomState 的应用场景概述

在训练神经网络时,苦于没有数据,此时numpy为我们提供了 “生产” 数据集的一种方式。

例如在搭建神经网络(一)中的 4.3 准备数据集 章节中就是采用np.random.mtrand.RandomState “生产” 数据的。

常用的方式如下

import numpy as np

# 设置seed值,生成ndarray对象
SEED = 23455

# 基于seed产生随机数
rdm = np.random.mtrand.RandomState(SEED)

# rand函数产生随机数,返回32行2列矩阵
# 32行代表32组数据,2代表输入数据的2个特征
X = rdm.rand(32, 2)

# 为每组数据制备标签
# 若(体积+重量) ≥ 1,则 Y 赋值 0
# 若(体积+重量) < 1,则 Y 赋值 1
# Y 值为输入数据集的标签(正确答案),这里记为 Y_
Y_ = [[int(x0 + x1 < 1)] for (x0, x1) in X]

# 在神经网络中,print函数是可不写的
# 此处仅为了便于观察过程数据
print("X:\n",X)
print("Y_:\n",Y_)

2 RandomState 对象介绍

为了更为清晰地看RandomState,使用help函数打印出RandomState信息。

无论是从命名规则和帮助文档可确定RandomSate是一个类。

import numpy as np

rdm = np.random.mtrand.RandomState()
print(rdm)

运行

<mtrand.RandomState object at 0x00000166B6599BD0>

2.1 RandomState用途

RandomState作为Mersenne Twister伪随机数发生器的容器。


RandomState类中有许多方法,用于从各种概率分布中生成随机数。类中的每个方法都有特定于分布的参数,但所有方法中都包含有一个 'size' 参数。

  • None - 生成并返回单个值
  • 整数integer - 生成并返回一个生成值的1-D数组
  • 元组tuple- 生成并返回一个具有该形状shape的数组。

类中的方法及其方法中的参数详见 numpy.random.mtrand.RandomState


备注:

类RandomState调用的固定的种子和系列( A fixed seed and a fixed series)等相同的参数将会产生相同的结果,也可理解为类RandomState中使用相同integer或array_like参数等固定种子将会产生相同的结果。

Python stdlib模块 “random” 还包含一个Mersenne Twister伪随机数生成器,其中有许多方法类似于`RandomState`中可用的方法。 除了NumPy感知之外,`RandomState`的优点是它提供了更多的概率分布可供选择。

2.2 类的参数

可选参数为随机种子seed(用于初始化initialize伪随机数pseudo-random number生成器igenerator),可以是0~2**32-1间的任一整数integer,或array_like(array or other sequence)的整数integers。或默认值None。

  • None - 生成并返回单个值,此时RandomState将尝试从‘/dev/urandom’或windows analogue读取数据(如果可用),否则将从时钟clock读取种子seed。
  • int - 生成并返回一个生成值的一维数组
  • array_like - 生成并返回一个具有该形状shape的数组。

2.3 RandomState的引用方法

# 两个语句等价

# 可认为是简写版
rdm = np.random.RandomState(SEED)
# 在多场合可看到的版本
rdm = np.random.mtrand.RandomState(SEED)

在官方文档中(numpy.random.mtrand.RandomState)看到的结果。

2.4 RandomState的结果值

由于RandomState是类,所以打印不出具体结果,是对象地址

<mtrand.RandomState object at 0x00000170BB6A9AF8>

当使用RandomState类中的方法时,就可以print出具体值。但不同的方法function会得到不同的结果。

rand()方法就可以得到0~1的随机值

import tensorflow as tf
import numpy as np
SEED = 23455

rdm = np.random.mtrand.RandomState(SEED)
print(rdm)
a = rdm.rand(32,2)
print(a)

运行

<mtrand.RandomState object at 0x00000170BB6A9AF8>
[[0.83494319 0.11482951]
 [0.66899751 0.46594987]
 [0.60181666 0.58838408]
 [0.31836656 0.20502072]
 [0.87043944 0.02679395]
 [0.41539811 0.43938369]
 [0.68635684 0.24833404]
 [0.97315228 0.68541849]
 [0.03081617 0.89479913]
 [0.24665715 0.28584862]
 [0.31375667 0.47718349]
 [0.56689254 0.77079148]
 [0.7321604  0.35828963]
 [0.15724842 0.94294584]
 [0.34933722 0.84634483]
 [0.50304053 0.81299619]
 [0.23869886 0.9895604 ]
 [0.4636501  0.32531094]
 [0.36510487 0.97365522]
 [0.73350238 0.83833013]
 [0.61810158 0.12580353]
 [0.59274817 0.18779828]
 [0.87150299 0.34679501]
 [0.25883219 0.50002932]
 [0.75690948 0.83429824]
 [0.29316649 0.05646578]
 [0.10409134 0.88235166]
 [0.06727785 0.57784761]
 [0.38492705 0.48384792]
 [0.69234428 0.19687348]
 [0.42783492 0.73416985]
 [0.09696069 0.04883936]]

numpy中的np.random.mtrand.RandomState的更多相关文章

  1. numpy中的np.round()取整的功能和注意

    numpy中的np.round()取整的功能和注意 功能 np.round() 是对浮点数取整的一个函数,一般的形式为 np.round(a, b),其中a为待取整的浮点数,b为保留的小数点的位数 注 ...

  2. [转]numpy中的np.max 与 np.maximum区别

    转自:https://blog.csdn.net/lanchunhui/article/details/52700895

  3. numpy中np.random.seed()的详细用法

    在进行机器学习和深度学习中,我们会经常用到np.random.seed(),利用随机数种子,使得每次生成的随机数相同. numpy.randn.randn(d0,d1,...,dn) randn函数根 ...

  4. Numpy中np.random.randn与np.random.rand的区别,及np.mgrid与np.ogrid的理解

    np.random.randn是基于标准正态分布产生的随机数,np.random.rand是基于均匀分布产生的随机数,其值在[0,1). np.mgrid 与np.ogrid的理解及区别:np.mgr ...

  5. 对抗生成网络-图像卷积-mnist数据生成(代码) 1.tf.layers.conv2d(卷积操作) 2.tf.layers.conv2d_transpose(反卷积操作) 3.tf.layers.batch_normalize(归一化操作) 4.tf.maximum(用于lrelu) 5.tf.train_variable(训练中所有参数) 6.np.random.uniform(生成正态数据

    1. tf.layers.conv2d(input, filter, kernel_size, stride, padding) # 进行卷积操作 参数说明:input输入数据, filter特征图的 ...

  6. numpy中random的使用

    import numpy as np a=np.random.random()#用于生成一个0到1的随机浮点数: 0 <= n < 1.0print(a)0.772000903322952 ...

  7. np.random.random()函数 参数用法以及numpy.random系列函数大全

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.r ...

  8. 【转】np.random.random()函数 参数用法以及numpy.random系列函数大全

    转自:https://www.cnblogs.com/DOMLX/p/9751471.html 1.np.random.random()函数参数 np.random.random((1000, 20) ...

  9. numpy中np.c_和np.r_

    np.r_:按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat() np.c_:按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的mer ...

随机推荐

  1. "Ext 4.1 Grid 'el.dom' 为空或不是对象"问题的解决

    我在使用Ext 4.1 做Grid,IE下冒出这么个错误,导致表格完全显示不出来,换另外一个IE浏览器,有没有问题,呵呵,百思不得其解啊... 后来得出答案,即在grid相关代码周围套上Ext.onR ...

  2. OpenGL ES 3.0(五)

    使用EGL(在iOS中是EAGL)创建屏幕渲染 加载顶点和片段着色器 创建程序对象,连接顶点和片段着色器,连接程序对象 设置视口 清除颜色缓冲区 绘制一个简单的图元(三角形) 显示缓冲区内容 1.创建 ...

  3. mysql游标的使用 No data - zero rows fetched, selected

    转自:http://blog.sina.com.cn/s/blog_544c72960101bvl3.html 这是一个游标的使用例子. 但是其中有几点需要注意,就是为什么要加入 declare CO ...

  4. [海蜘蛛] 海蜘蛛 V8 全线无限试用版 免费发布破解教程

    http://bbs.p52.cn/forum.php?mod=viewthread&tid=3499&extra=page%3D1&page=1&_dsign=79c ...

  5. 来自Vexels的超棒免费商业相关图标资源 #精选设计素材图标

    如果你也在寻找一些商务相关的图标的话,今天推荐的这套图标资源绝对是你梦寐以求滴 , 首先呢请预览一下效果吧~ 这套来自Vexels的图标包含了28张商务和商业相关的内容,包含了战略,市场,项目,付款等 ...

  6. Lintcode: Add Binary

    C++ class Solution { public: /** * @param a a number * @param b a number * @return the result */ str ...

  7. PAT 1069 1070 1071 1072

    pat 1069 The Black Hole of Numbers 水题,代码如下: #include<cstdio> #include<cstdlib> #include& ...

  8. JAVA中动态编译的简单使用

    一.引用库 pom文件中申明如下: <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> ...

  9. mySQL内存及虚拟内存优化设置[转]

    mySQL内存及虚拟内存优化设置 . 数据库mySQL内存优化G-LB  为了装mysql环境测试,装上后发现启动后mysql占用了很大的虚拟内存,达8百多兆.网上搜索了一下,得到高人指点my.ini ...

  10. cocos2d-js 自定义事件监听派发

    熟悉js的dom事件或者flash事件的,基本都能立马明白cc.eventManager的用法. cc.eventManager有两种注册监听器的方式,一种是原生事件,例如 cc.eventManag ...