Numpy中的RandomState用法与场景

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

RandomState公开了许多用于生成从各种概率分布中提取的随机数的方法。除了特定于分发的参数之外,每个方法都采用默认为None的关键字参数 大小。

  • 如果size为None,则生成并返回单个值。
  • 如果size是整数,则返回填充了生成值的1-D数组。
  • 如果size是一个元组,则填充并返回具有该形状的数组。

随机种子初始化伪随机数发生器。可以是整数,任意长度的整数数组(或其他序列),也可以是None(默认值)。如果seed为None,则RandomState将尝试从/ dev / urandom(或Windows模拟)中读取数据(如果可用),否则从时钟读取种子。

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

import numpy as np

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

# 基于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_)

输出如下:

X:
 [[0.72720018 0.28898549]
 [0.84958831 0.72706081]
 [0.20943945 0.63031518]
 [0.87853488 0.85733564]
 [0.9919958  0.25845015]
 [0.03842232 0.38609866]
 [0.65607323 0.79059298]
 [0.39962985 0.72230018]
 [0.03642497 0.47008926]
 [0.95306087 0.90524506]
 [0.3696302  0.83432897]
 [0.28926819 0.54505938]
 [0.60519762 0.429539  ]
 [0.67582936 0.99919274]
 [0.17604048 0.76754937]
 [0.69873835 0.8458034 ]
 [0.72946299 0.77090942]
 [0.95893772 0.52065197]
 [0.51026042 0.72549506]
 [0.13752722 0.44240834]
 [0.02546257 0.74217963]
 [0.4206484  0.33079034]
 [0.46040295 0.70464219]
 [0.36609694 0.13207232]
 [0.11424162 0.69747853]
 [0.45084243 0.44479715]
 [0.24687041 0.78268242]
 [0.61573627 0.60022867]
 [0.4276501  0.58009485]
 [0.42806566 0.67133675]
 [0.23329054 0.99567699]
 [0.57450239 0.32628898]]
Y_:
 [[0], [0], [1], [0], [0], [1], [0], [0], [1], [0], [0], [1], [0], [0], [1], [0], [0], [0], [0], [1], [1], [1], [0], [1], [1], [1], [0], [0], [0], [0], [0], [1]]

2,RandomState的引用方法

# 两个语句等价

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

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

<mtrand.RandomState object at 0x0000022380FCA900>
当使用RandomState类中的方法时,就可以print出具体值。但不同的方法function会得到不同的结果。

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

import tensorflow as tf
import numpy as np
SEED = 2222

rdm = np.random.mtrand.RandomState(SEED)
print(rdm)#打印对象地址
a = rdm.rand(32,2)
print(a)#打印随机数结果
<mtrand.RandomState object at 0x0000022380FCA900>
[[0.72720018 0.28898549]
 [0.84958831 0.72706081]
 [0.20943945 0.63031518]
 [0.87853488 0.85733564]
 [0.9919958  0.25845015]
 [0.03842232 0.38609866]
 [0.65607323 0.79059298]
 [0.39962985 0.72230018]
 [0.03642497 0.47008926]
 [0.95306087 0.90524506]
 [0.3696302  0.83432897]
 [0.28926819 0.54505938]
 [0.60519762 0.429539  ]
 [0.67582936 0.99919274]
 [0.17604048 0.76754937]
 [0.69873835 0.8458034 ]
 [0.72946299 0.77090942]
 [0.95893772 0.52065197]
 [0.51026042 0.72549506]
 [0.13752722 0.44240834]
 [0.02546257 0.74217963]
 [0.4206484  0.33079034]
 [0.46040295 0.70464219]
 [0.36609694 0.13207232]
 [0.11424162 0.69747853]
 [0.45084243 0.44479715]
 [0.24687041 0.78268242]
 [0.61573627 0.60022867]
 [0.4276501  0.58009485]
 [0.42806566 0.67133675]
 [0.23329054 0.99567699]
 [0.57450239 0.32628898]]
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值