1:最开始这2个一直没搞懂具体的使用的地方,这两天写了一些代码,突然想到一个实验可以证明一下他们的区别,于是一实验,还真对比出来了他们的异同点了呢。先看实验吧
2:实验代码:
第一个实验:
x1 = T.lscalar()
y1 = T.lscalar()
y1 = x1 + numpy.random.randint(10)
f1 = theano.function([x1], y1)
for i in xrange(10):
print f1(1)
第二个实验:
rng = RandomStreams(1024)
x2 = T.lscalar()
y2 = T.ivector()
y2 = rng.random_integers([1,1], 0, 10)
f2 = theano.function([], y2)
for i in xrange(10):
print f2()
实验结果:第一个实验的结果是一致输出一样的数字,而第二个输出的是都不一样的结果。这样区分的很明显了。
因为theano中对function都是编译起来的,真正在运算的时候,才把对应的 自变量给替换掉去运算。所以对于这个的解释就是
因为第一个实验在编译的时候,就把numpy.random,randint的值给算出来了,编译进去了。所以不管运行多少次,结果肯定一样了。
第二个实验,我猜测是编译进去了一个随机函数,然后每次运行的时候,就调用的还是随机函数,于是结果不太一样。