python theano中的shared variable

问题:请问Python theano中的shared variable是指什么意思?

补充知识:Theano是一个Python库,支持GPU。用来定义、优化和计算数学表达式,用于高效的解决多维数组的计算问题。拥有的特点:

·集成NumPy-使用numpy.ndarray

·使用GPU加速计算-比CPU快140倍(只针对32位float类型)

·有效的符号微分-计算一元或多元函数的导数:theano.tensor.grad()

·速度和稳定性优化-比如能计算很小的x的函数log(1+x)的值

·动态地生成C代码-更快地计算

·广泛地单元测试和自我验证-检测和诊断多种错误


理论:

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

shared可以存储在显存中,因为这个特性,我们才会有“把神经网络参数放到shared中”的这种做法。
shared指向显存中的一块区域,这块区域在运算中是共享的,所以常常在运算中用来存储权值参数。


假设你定义了一个shared variable叫做a:


那么a就是一个symbolic variable,目前的初始值是2。(但是不能直接访问,只能调用)


现在你定义两个theano.function,一个实现加二的功能,一个实现平方的功能:


i作为一个输入变量,通过theano.tensor.scalar来定义,但是它在定义的时候没有一个固定的值。往GPU中保存的数据必须是floats格式的,因此定义的数据都要转变成floatX格式。


现在开始实际调用加二的函数和平方的函数:


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

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


提问:

1、为什么输出是小数形式5.0 和16.0?

2、[array()]是什么?

3、看懂下列程序



结论:你就当shared variable是可以加快计算速度的全局变量

本文转自[http://blog.csdn.net/yjiejie7758/article/details/51898686 ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值