返回介绍

01. Python 工具

02. Python 基础

03. Numpy

04. Scipy

05. Python 进阶

06. Matplotlib

07. 使用其他语言进行扩展

08. 面向对象编程

09. Theano 基础

10. 有趣的第三方模块

11. 有用的工具

12. Pandas

Theano 随机数流变量

发布于 2022-09-03 20:46:15 字数 3194 浏览 0 评论 0 收藏 0

In [1]:

import theano
import theano.tensor as T
import numpy as np
Using gpu device 1: Tesla C2075 (CNMeM is disabled)

Theano 的随机数变量由 theano.sandbox.rng_mrg 中的 MRG_RandomStreams 实现(sandbox 表示是实验代码):

In [2]:

from theano.sandbox.rng_mrg import MRG_RandomStreams

新建一个 MRG_RandomStreams(seed=12345, use_cuda=None) 实例:

In [3]:

srng = MRG_RandomStreams()

它支持以下方法:

  • normal(size, avg=0.0, std=1.0, ndim=None, dtype=None, nstreams=None)
    • 产生指定形状的、服从正态分布 $N(avg, std)$ 的随机数变量,默认为标准正态分布
  • uniform(size, low=0.0, high=1.0, ndim=None, dtype=None, nstreams=None)
    • 产生指定形状的、服从均匀分布 $U(low, high)$ 的随机数变量,默认为 0-1 之间的均匀分布
  • binomial(size=None, n=1, p=0.5, ndim=None, dtype='int64', nstreams=None)
    • 产生指定形状的、服从二项分布 $B(n,p)$ 的随机数变量
  • multinomial(size=None, n=1, pvals=None, ndim=None, dtype='int64', nstreams=None)
    • 产生指定形状的、服从多项分布的随机数变量

与 np.random.random 不同,它产生的是随机数变量,而不是随机数数组,因此可以将 size 作为参数传给它:

In [4]:

rand_size = T.vector(dtype="int64")

rand_normal = srng.normal(rand_size.shape)
rand_uniform = srng.uniform(rand_size.shape)
rand_binomial = srng.binomial(rand_size.shape)

f_rand = theano.function(inputs = [rand_size], 
                         outputs = [rand_normal, rand_uniform, rand_binomial])

print f_rand(range(5))[0]
print f_rand(range(5))[1]
print f_rand(range(5))[2]
[ 0.10108768 -1.64354193  0.71042836 -0.77760422  0.06291872]
[ 0.23193923  0.71880513  0.03122572  0.97318739  0.99260223]
[0 1 0 1 1]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文