博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Theano学习笔记(三)——图结构
阅读量:6567 次
发布时间:2019-06-24

本文共 1288 字,大约阅读时间需要 4 分钟。

图结构(Graph Structures)这是理解Theano该基金会的内部运作。

Theano编程的核心是用符号占位符把数学关系表示出来。

 

图结构的组成部分

如图实现了这段代码:

importtheano.tensor as Tx= T.matrix('x')y= T.matrix('y')z= x + y

变量节点(variable nodes)

红色表示。

变量节点都有owner。当中x与y的owner为none。

z的owner为apply。

 

操作节点(op nodes)

绿色表示。表示各个变量之间的运算(比如+, -, **, sum(),tanh()等等)。

 

应用节点(apply nodes)

蓝色表示。

其它节点都连在上面。

 

 

分析nodes相应属性

对于下面代码。分析其节点属性。

importtheano.tensor as Tx= T.dmatrix('x')y= x * 2.>>>y.owner.op.name'Elemwise{mul,no_inplace}'#y的owner是apply而apply的op是'Elemwise{mul,no_inplace}'>>>len(y.owner.inputs)2#两个输入>>>y.owner.inputs[0]x#第一个输入是x矩阵>>>y.owner.inputs[1]InplaceDimShuffle{x,x}.0
#注意这里第二个输入并非2。而是和x相同大小的矩阵框架,由于等会要广播才干相乘

>>>type(y.owner.inputs[1])
>>>type(y.owner.inputs[1].owner)
>>>y.owner.inputs[1].owner.op
#用DimShuffle把2广播出来>>>y.owner.inputs[1].owner.inputs[2.0]#矩阵框架的owner才是2

自己主动优化

编译Theano事实上是编译了一张图。这张图从输入变量開始贯穿全图直到输出变量。

Theano能够检測关键子图。来进行替换,防止反复,以达到优化的目的。比方用x替换xy/y。

举个样例

>>>import theano>>>a = theano.tensor.vector("a")     # declare symbolic variable>>>b = a + a ** 10                    #build symbolic expression>>>f = theano.function([a], b)        #compile function>>>print f([0, 1, 2])                 #prints `array([0,2,1026])`
优化前
优化后

欢迎參与讨论并关注以及兴许内容继续更新哦~

转载请您尊重作者的劳动,完整保留上述文字以及文章链接。感谢您的支持!

你可能感兴趣的文章
Cron 表达式详解和案例
查看>>
Android - 软件自动更新的实现
查看>>
oracle数据库远程不落地导入本地数据库
查看>>
dns相关内容
查看>>
JavaScript骚操作
查看>>
MySQL的主从复制与读写分离原理
查看>>
luaCPU性能测试
查看>>
mysql优化
查看>>
【批处理】for循环中产生不同的随机数
查看>>
Gradle -help
查看>>
/etc/security/limits.conf
查看>>
js 框架
查看>>
android 实现ListView中添加RaidoButton单选
查看>>
Oracle数据库:启动操作
查看>>
linux下的防火墙
查看>>
SNAT与DNAT
查看>>
Linux 修改密码“ Authentication token manipulation err”
查看>>
openstack
查看>>
Lync Server 2013 安装体验(一)
查看>>
EBB-24、DNS2
查看>>