theano tutorial(十)Graph Structures
2016-04-20 13:09
483 查看
Theano中将数学计算的工程用graph来进行表示。这些graph有一些内部节点构成:Apply,Variable和Op。Apply代表来将一些op应用于variables。注意区分用op表示的数学定义式和用实际的data来进行运算的实例(Application node) 。数据的类型使用Type实力来进行表示的。
import theano.tensor as T
x = T.dmatrix('x')
y = T.dmatrix('y')
z = x + y
下图演示了这段代码
箭头代表了Python对象指向的参照。蓝色代表Apply节点,红色代表Variable节点,绿色代表Ops节点,紫色代表Types
当我们创建来Variable并且将Ops应用到这个变量中来产生更多的变量时,我们穿件来二分、有向无环图。指向Apply节点的Variables节点代表了一个函数实例通过这个变量的owner域来创建他们的过程。反过来,Apply节点通过输入输出域来指向其输入和输出变量。(Apply实力也右一个关于输出的list,但这些指针在这个graph中没啥用)
x,y的owner field都指向来None因为他们不是另一个计算的结果,如果他们是另一个计算的结果,那么他们的owner域将会指向另一个Apply节点,就像z一样。
请注意,Apply实例的输出指向z,z.owner回指向Apply实例
贯穿整个图
通过使用owner域整个图可以从输出向下贯穿到输入
print(type(y.owner))#y的owner是Apply节点
print(y.owner)
print(y.owner.op.name)
print(len(y.owner.inputs))
print(y.owner.inputs[0])
print(y.owner.inputs[1])#注意第二个输入并不是2,因为用DimShuffle对2进行了广播
<class 'theano.gof.graph.Apply'>
Elemwise{mul,no_inplace}(x, DimShuffle{x,x}.0)
Elemwise{mul,no_inplace}
2
x
DimShuffle{x,x}.0
进一步理解
print(type(y.owner.inputs[1]))#并不是constant2,而是tensor变量
print(type(y.owner.inputs[1].owner))#作为Aplly的输入
print( y.owner.inputs[1].owner.op )#inputs[1]使用op DimShuffle进行广播操作后的结果
print(y.owner.inputs[1].owner.inputs)
#结果
<class 'theano.tensor.var.TensorVariable'>
<class 'theano.gof.graph.Apply'>
DimShuffle{x,x}
[TensorConstant{2}]
import theano.tensor as T
x = T.dmatrix('x')
y = T.dmatrix('y')
z = x + y
下图演示了这段代码
箭头代表了Python对象指向的参照。蓝色代表Apply节点,红色代表Variable节点,绿色代表Ops节点,紫色代表Types
当我们创建来Variable并且将Ops应用到这个变量中来产生更多的变量时,我们穿件来二分、有向无环图。指向Apply节点的Variables节点代表了一个函数实例通过这个变量的owner域来创建他们的过程。反过来,Apply节点通过输入输出域来指向其输入和输出变量。(Apply实力也右一个关于输出的list,但这些指针在这个graph中没啥用)
x,y的owner field都指向来None因为他们不是另一个计算的结果,如果他们是另一个计算的结果,那么他们的owner域将会指向另一个Apply节点,就像z一样。
请注意,Apply实例的输出指向z,z.owner回指向Apply实例
贯穿整个图
通过使用owner域整个图可以从输出向下贯穿到输入
print(type(y.owner))#y的owner是Apply节点
print(y.owner)
print(y.owner.op.name)
print(len(y.owner.inputs))
print(y.owner.inputs[0])
print(y.owner.inputs[1])#注意第二个输入并不是2,因为用DimShuffle对2进行了广播
<class 'theano.gof.graph.Apply'>
Elemwise{mul,no_inplace}(x, DimShuffle{x,x}.0)
Elemwise{mul,no_inplace}
2
x
DimShuffle{x,x}.0
进一步理解
print(type(y.owner.inputs[1]))#并不是constant2,而是tensor变量
print(type(y.owner.inputs[1].owner))#作为Aplly的输入
print( y.owner.inputs[1].owner.op )#inputs[1]使用op DimShuffle进行广播操作后的结果
print(y.owner.inputs[1].owner.inputs)
#结果
<class 'theano.tensor.var.TensorVariable'>
<class 'theano.gof.graph.Apply'>
DimShuffle{x,x}
[TensorConstant{2}]
相关文章推荐
- 微信公众号命名规则将调整 全平台公众号名称唯一
- win8/8.1中如何查看及删除无线网络配置文件等
- postInvalidate postInvalidateOnAnimation 区别
- 109. Convert Sorted List to Binary Search Tree
- Caused by: java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet
- 将 Book-Crossing Dataset 书籍推荐算法中 CVS 格式测试数据集导入到MySQL数据库
- UML 的基本组成
- centos安装配置hadoop超详细过程
- javaweb中两种jsp声明
- 怎样删除保存的无线上网WiFi密码
- 使用 HTML5 WebSocket 构建实时 Web 应用
- 电脑弹出磁盘空间不足怎么办
- Spring MVC 3.0版本 深入讲解
- scrollview中linearlayout布局不全屏
- 【HDU】 1222 Wolf and Rabbit
- weblogic 启用管理端口(administration port) 分离管理和应用端口
- 软件工程管理——第七次作业
- 大数阶乘末尾0的个数问题 数字的奇妙
- Yacc基础语法分析程序(无附加实验内容)
- 用 R 进行高频金融数据分析简介