a6657266的个人博客分享 http://blog.sciencenet.cn/u/a6657266

博文

theano学习初步 shared, givens,updates,random

已有 14707 次阅读 2013-7-11 15:34 |系统分类:科研笔记| Random, shared, givens, updates

import theano.tensor as T

from theano import function

a,b=T.dmatrices('a','b')

diff=a-b

f=function([a,b],diff)


为参数设定default值

from theano import Param

x,y=T.dscalars('x','y')

z=x+y

f=function([x,Param(y,default=1),name='y_name'],z)


创建一个类似于全局变量的变量,用shared

from theano import shared

state=shared(0)

x=T.iscalar('x')

counter=function([x],state,updates=[(state,state+x)])#此处如果通过之前声明state+=x代替updates,会导致错误,因为state+=x将sharedscalar类型的state转化成tensorvalue类型的x,就没有.get_value以及eval的属性了


如果只是想用shared变量的名字,而不用值,可以在建立函数的时候用givens,中的变量代替shared变量

fn_state=state+x

counter_fn=function([foo,x],fn_state,givens=[(state,foo)])

实际中,givens可以用来代替表达式中任意部分



随机数

from theano.tensor.shared_randomstreams import RandomStreams

randomstream_my=RandomStreams(seed=12)

random_matrix1=randomstream.uniform((2,3))

random_matrix2=randomstream.normal((2,3))

f=function([],random_matrix1)

g=function([],random_matrix2,no_default_updates=True)  #多次调用,不更新


或者rng=numpy.random

 rng.randn(N,dimension)

 rng.randint(size=N,low=0,high=2)

来生成随机数








https://blog.sciencenet.cn/blog-571755-707182.html

上一篇:python中的异常
下一篇:python shared数据类型更改,print
收藏 IP: 210.72.26.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 21:58

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部