Theano——shared

原创 2016年08月29日 11:35:20

  Theano的shared类似于全局变量的概念,其值将会在多个函数中共用。如在softmax实现中,w, b都是shared变量。

     我们先给出theano中的最简单的例子:

>>> from theano import shared

>>> from theano import function

>>> import theano.tensor as T

>>> state = shared(0)         ----->shared变量state

>>> inc = T.iscalar('inc')      ----> 整形标量inc

>>> acc = function([inc],state, updates=[(state, state+inc)])     ---> 定义function, 输入inc, 输出state, state采用state+inc更新

>>> state.get_value()          ----> 获取shared变量state的值

0

>>> acc(1)                             --->调用acc, 不过输出值是未更新前的state, 即0

array(0) 

>>> state.get_value()          ----> 更新后的state的值1

1

>>> state.set_value(10)     ----> 设置state的值

>>> acc(10)    

10

>>> state.get_value()

20

类似的,我们可以定义矩阵类型的shared变量

>>>state = shared(zeros([3,3]))

>>>inc = T.dmatrix('inc')

>>> acc = function([inc], state, updates=[(state, state + inc)])

>>> acc([[1,2,3],[1,2,3],[1,2,3]])

array([[0., 0., 0.],

           [0., 0., 0.],

           [0., 0., 0.]]

>>>state.get_value()

array([[1., 2., 3.],

           [1., 2., 3.],          

           [1., 2., 3.]]


shared variable是一种符号变量(symbolic variable),但是这个symbolic variable又拥有自己的值。

假设你定义了一个shared variable叫做a:
import theano
a = theano.shared(2, "a")
那么a就是一个symbolic variable,目前的初始值是2

现在你定义两个theano.function,一个实现加二的功能,一个实现平方的功能:
i = theano.tensor.scalar("i", dtype=theano.config.floatX)
add_two_func = theano.function(inputs=[i], outputs=[i+a])
sqr_func = theano.function(inputs=[i], outputs=[i**a])

i作为一个输入变量,通过theano.tensor.scalar来定义。i也是一个symbolic variable,但是它在定义的时候没有一个固定的值。

现在开始实际调用加二的函数和平方的函数:
>>> add_two_func(3)
[array(5.0)]
>>> sqr_func(4)
[array(16.0)]

i在调用函数的时候,才被赋值。在上例中,i第一次被赋值了3,第二次被赋值了4。而a作为symbolic variable,却在定义的时候就已经拥有了值:2 。

a之所以叫shared variable是因为a的赋值在不同的函数中都是一致的,即a是被shared的。在上例中a的值在不同的函数中都为2。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

利用Theano理解深度学习——Logistic Regression

一、Logistic Regression1、LR模型Logistic回归是广义线性模型的一种,属于线性的分类模型,在其模型中主要有两个参数,即:权重矩阵WW和偏置向量bb。在Logistic回归中,...

Theano学习四----Theano shared

Theano的shared类似于全局变量的概念,其值将会在多个函数中共用。如在softmax实现中,w, b都是shared变量。      我们先给出theano中的最简单的例子: >>> fr...

python theano中的shared variable

最近在看DeepID框架代码,发现python有用到有关Thenano库中共享变量shared variable的知识,特此分享

python theano中的shared variable

问题:请问Python theano中的shared variable是指什么意思? 补充知识:Theano是一个Python库,支持GPU。用来定义、优化和计算数学表达式,用于高效...

Theano 学习numpy.asarray(), theano.shared()

numpy.asarray(a,dtype=None,order=None):1.功能描述 将输入数据(列表的列表,元组的元组,元组的列表等)转换为矩阵形式 a:数组形式的输入数据,包括list,...

共享内存——shared

Theano学习笔记(四)——导数

导数使用T.grad计算。 这里使用pp()打印梯度的符号表达式。 第3行输出是打印了经过优化器简化的符号梯度表达式,与第1个输出相比确实简单多了。 fill((x** TensorConsta...

Theano学习笔记(二)——逻辑回归函数解析

有了前面的准备,可以用Theano实现一个逻辑回归程序,逻辑回归是典型的有监督学习。 为了形象,这里我们假设分类任务是区分人与狗的照片。   首先是生成随机数对象 [p...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)