共享变量(shared variable)非常重要,是实现机器学习算法参数更新的重要机制。

在前文【深度学习入门4】Theano符号变量及符号计算图模型中,提到了其他的变量类型转换时用到了shared函数,本节则是重点介绍一下共享变量。shared函数返回的值就是共享变量。有点类似于其他函数的“全局变量”。

在C语言的函数中,有局部变量和全局变量的说法。函数里的变量一般是局部变量,也就是在这个函数范围内有效。

局部变量与全局变量示意图

共享变量有一个内部状态的值,这个值可以被多个函数共享。它可以存储在显存中,利用GPU提高性能。

使用get_value和set_value方法来读取或者修改共享变量的值,使用共享变量实现累加操作。

import theano
import theano.tensor as T
from theano import shared

#定义一个共享变量,并初始化为0
state = shared(0)
#定义一个int类型的标量,名字为inc
inc = T.iscalar('inc')
accumulator = theano.function([inc], state, updates=[(state, state+inc)])
# 打印state的初始值
print(state.get_value())

accumulator(1) # 进行一次函数调用,inc赋值为1

# 函数返回后,state的值发生了变化
print(state.get_value()) 

运行结果:

0
1

这里state是一个共享变量,初始化为0,每次调用accumulator(),state都会加上inc。


声明:内容来源于吴茂贵老师主编的学习教材《Python深度学习——基于TensorFlow》,本文仅供学习参考,并加入了博主自己的一些理解和操作,并非原汁原味,为了更好的阅读体验和系统性地学习,请购买正版读物进行学习。



博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/TheanoShared.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 05 月 25 日
如果觉得我的文章对你有用,请随意赞赏