Theano学习笔记(三)——图结构
来源:互联网 发布:京瓷6525网络打印设置 编辑:程序博客网 时间:2024/05/20 11:26
图结构(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])<class'theano.tensor.basic.TensorVariable'>>>>type(y.owner.inputs[1].owner)<class'theano.gof.graph.Apply'>>>>y.owner.inputs[1].owner.op<class'theano.tensor.elemwise.DimShuffle object at 0x14675f0'>#用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])`
优化前
优化后
欢迎参与讨论并关注本博客和微博以及知乎个人主页后续内容继续更新哦~
转载请您尊重作者的劳动,完整保留上述文字以及文章链接,谢谢您的支持!
1 0
- Theano学习笔记(三)——图结构
- Theano学习笔记(三)——图结构
- Theano学习笔记(三)——图结构
- 【theano-windows】学习笔记三——theano中的导数
- 【theano-windows】学习笔记一——theano中的变量
- Python学习笔记(三)windows下安装theano
- Theano深度学习笔记(三)多层感知器
- Theano学习笔记(一)——代数
- Theano学习笔记(四)——导数
- Theano学习笔记(一)——代数
- Theano学习笔记(四)——导数
- Theano学习笔记(一)——scan函数
- Theano学习笔记(一)——代数
- Theano学习笔记(四)——导数
- theano学习笔记(1)—代数
- Theano学习三----Theano function
- SIP协议结构——SIP学习笔记(三)
- C# Hadoop学习笔记(三)—集群部署结构
- Ext.data库中几个常用类的原理及其使用 (转)
- PAT (Advanced) 1048. Find Coins (25)
- cocos2d-x 3.2 随机数
- Android开发————APK反编译需要的一些东西
- 查找某一些你想要的元素
- Theano学习笔记(三)——图结构
- Linux下安装python集成开发环境——Ulipad
- LuaJavaBridge - Lua 与 Java 互操作的简单解决方案
- Linux-shell脚本学习-1
- Hibernate自动建表、更新表结构的配置方法
- [TexturePacker] 问题积累
- Android Service之onStartCommand方法研究
- mac上安装Adobe Flash Player
- HDU1520题解