RNG¶
- class RNG(seed=None, device=None)[源代码]¶
RNG
公开了一些生成随机数的方法。实际案例
import megengine.random as rand rng = rand.RNG(seed=100) x = rng.uniform(size=(2, 2)) print(x.numpy())
输出:
[[0.84811664 0.6147553 ] [0.59429836 0.64727545]]
- beta(alpha, beta, size=None)[源代码]¶
服从贝塔分布 \(\operatorname{Beta}(\alpha, \beta)\) 的随机变量。
对应的概率密度函数为
\[p(x)=\frac{1}{\mathrm{~B}(\alpha, \beta)} x^{\alpha-1}(1-x)^{\beta-1} \quad \text { for } \alpha, \beta>0,\]其中 \(\mathrm{~B}(\alpha, \beta)\) 是 Beta 函数,
\[\mathrm{~B}(\alpha, \beta)=\int_{0}^{1} t^{\alpha-1}(1-t)^{\beta-1} d t 。\]- 参数
- 返回
输出张量
实际案例
import megengine as mge import megengine.random as rand x = rand.beta(alpha=2, beta=1, size=(2, 2)) print(x.numpy()) alpha = mge.Tensor([[0.5], [ 3]], dtype="float32") beta = mge.Tensor([0.5,5], dtype="float32") x = rand.beta(alpha=alpha, beta=beta) print(x.numpy()) x = rand.beta(alpha=alpha, beta=beta, size=2) print(x.numpy())
输出:
[[0.582565 0.91763186] [0.86963767 0.6088103 ]] [[0.41503012 0.16438372] [0.90159506 0.47588003]] [[[0.55195075 0.01111084] [0.95298755 0.25048104]] [[0.11680304 0.13859665] [0.997879 0.43259275]]]
- gamma(shape, scale=1, size=None)[源代码]¶
服从伽玛分布 \(\Gamma(k, \theta)\) 的随机变量。
对应的概率密度函数为
\[p(x)=x^{k-1} \frac{e^{-x / \theta}}{\theta^{k} \Gamma(k)} \quad \text { for } x>0 \quad k, \theta>0,\]其中 \(\Gamma(k)\) 是 gamma 函数,
\[\Gamma(k)=(k-1) ! \quad \text { for } \quad k>0。\]- 参数
- 返回
输出张量
实际案例
import megengine as mge import megengine.random as rand x = rand.gamma(shape=2, scale=1, size=(2, 2)) print(x.numpy()) shape = mge.Tensor([[ 1], [10]], dtype="float32") scale = mge.Tensor([1,5], dtype="float32") x = rand.gamma(shape=shape, scale=scale) print(x.numpy()) x = rand.gamma(shape=shape, scale=scale, size=2) print(x.numpy())
输出:
[[1.5064533 4.0689363 ] [0.71639484 1.4551026 ]] [[ 0.4352188 11.399335 ] [ 9.1888 52.009277 ]] [[[ 1.1726005 3.9654975 ] [13.656933 36.559006 ]] [[ 0.25848487 2.5540342 ] [11.960409 21.031536 ]]]
- normal(mean=0, std=1, size=None)[源代码]¶
服从高斯分布的随机变量 \(N(\mu, \sigma)\)
- 参数
- 返回
输出张量
实际案例
import megengine as mge import megengine.random as rand x = rand.normal(mean=0, std=1, size=(2, 2)) print(x.numpy())
输出:
[[-1.4010863 -0.9874344 ] [ 0.56373274 0.79656655]]
- permutation(n, *, dtype='int32')[源代码]¶
- 打乱一个张量,或者返回给定范围的随机张量
如果 n 是一个张量,只会沿着第一个轴打乱
- 参数
- 返回
输出张量
实际案例
import numpy as np import megengine as mge import megengine.random as rand x = rand.permutation(10, dtype="int32") print(x.numpy()) x = rand.permutation(10, dtype="float32") print(x.numpy()) x = mge.tensor(np.arange(18)).reshape(6,3) x = rand.permutation(x) print(x.numpy())
输出:
[4 5 0 7 3 8 6 1 9 2] [3. 4. 9. 0. 6. 8. 7. 1. 5. 2.] [[12 13 14] [ 3 4 5] [15 16 17] [ 0 1 2] [ 9 10 11] [ 6 7 8]]
- poisson(lam, size=None)[源代码]¶
服从泊松分布 \(\operatorname{Poisson}(\lambda)\) 的随机变量。
对应的概率密度函数为
\[f(k ; \lambda)=\frac{\lambda^{k} e^{-\lambda}}{k !},\]其中 k 是出现的次数 \(({\displaystyle k=0,1,2...})\) 。
- 参数
- 返回
输出张量
实际案例
import megengine as mge import megengine.random as rand x = rand.poisson(lam=2., size=(1, 3)) print(x.numpy()) lam = mge.Tensor([[1.,1.], [10,10]], dtype="float32") x = rand.poisson(lam=lam) print(x.numpy()) x = rand.poisson(lam=lam, size=(1,3)) print(x.numpy())
输出:
[[3. 1. 3.]] [[ 2. 2.] [12. 11.]] [[[[ 1. 1.] [11. 4.]] [[ 0. 0.] [ 9. 13.]] [[ 0. 1.] [ 7. 12.]]]]
- shuffle(inp)[源代码]¶
打乱张量的内容原地修改张量。这个函数只是沿着第一个轴打乱张量。张量顺序改变但不改变值
- 参数
inp (
Tensor
) – 输入张量。
实际案例
import numpy as np import megengine as mge import megengine.random as rand x = mge.tensor(np.arange(10)) rand.shuffle(x) print(x.numpy()) y = mge.tensor(np.arange(18)).reshape(6,3) rand.shuffle(y) print(y.numpy())
输出:
[7 9 3 0 8 2 4 5 6 1] [[12. 13. 14.] [ 3. 4. 5.] [15. 16. 17.] [ 0. 1. 2.] [ 9. 10. 11.] [ 6. 7. 8.]]