||
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)
来生成随机数
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 21:58
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社