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学习四----Theano shared

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

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

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

如何查看Theano的TensorSharedVariable和TensorVariable变量

在Theano调试过程中,TensorSharedVariable类型变量可以用get_value方法和set_value方法获取和设置其值,至于TensorVariable类型变量是没有值的,无法直...
  • mingtian715
  • mingtian715
  • 2017年01月20日 20:15
  • 1804

Theano——shared

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

theano学习之borrow

官网说明: http://deeplearning.net/software/theano/tutorial/aliasing.html#borrowing-when-creating-shared...
  • qq_17090877
  • qq_17090877
  • 2016年04月09日 18:05
  • 1250

深度学习(二)theano学习笔记(1)环境搭建

theano学习笔记(1)环境搭建 原文地址:http://blog.csdn.net/hjimce/article/details/46654229 作者:hjimce 搭建t...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年01月25日 15:54
  • 4020

Theano(2):Theano简介【待更新】

第一篇博客说theano是一个深度学习库,其实在大家的眼里: 最近正在为theano抠大脑,感觉它更像是一个代数符号验算系统,写起来有点写FPGA的感觉。它本身并没有说自己跟神精网络有什么关系...
  • mmc2015
  • mmc2015
  • 2016年03月16日 11:26
  • 3591

theano中的一些备忘

上个学期一直想用theano,但是苦于当时文档读的不是很懂,并且很多东西感觉不到咋弄的,同时时间比较紧急,就没怎么弄。这个学习来,发现文档大部分都看懂了,并且的确这玩意很好,单不说可以利用GPU,就是...
  • silence1214
  • silence1214
  • 2015年03月06日 10:38
  • 3646

theano学习指南1(翻译)

原文链接:http://www.cnblogs.com/xueliangliu/archive/2013/04/03/2997437.html theano学习指南,主要翻译官方文档:官方文档链接:...
  • zhaoyu106
  • zhaoyu106
  • 2016年04月21日 19:59
  • 578

Theano / Numpy, "ImportError: libatlas.so.3gf: cannot open shared object file"

Theano / Numpy, "ImportError: libatlas.so.3gf: cannot open shared object file" If you got the "I...
  • yangyangyang20092010
  • yangyangyang20092010
  • 2016年06月18日 19:07
  • 663
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Theano——shared
举报原因:
原因补充:

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