Theano(2):Theano简介【待更新】

第一篇博客说theano是一个深度学习库,其实在大家的眼里:


最近正在为theano抠大脑,感觉它更像是一个代数符号验算系统,写起来有点写FPGA的感觉。它本身并没有说自己跟神精网络有什么关系,theano这个库对自己的定义是这样的:
Theano is a Python library that allows you to define, optimize, andevaluate mathematical expressions involving multi-dimensionalarrays efficiently.
翻译成汉语应该是:
Theano是一个Python库,专门用于定义、优化、求值数学表达式,效率高,适用于多维数组。
因为是一个代数符号系统,所以数学表达式里面的一个符号(symbol,Theano也管这个叫variable)是一个Variable对象,对象之间用加减乘除等操作符连接起来,就变成了一个图(Theano管这个叫graph)。在建模一个神经网络的时候将网络表示成为一个巨大的公式(graph)。此举给神精网络的建模提供了not any more的灵活性,你用C++写无非也就如此嘛,就是前排答主说得需求拆分非常到位,所以不仅是神经网络,市面上大部分参数化模型都可以用Theano实现,非参模型用theano的话不知道应该是什么思路(决策树、GBDT、RF)。

比如最简单的z = x + y这个表达式,你需要使用theano.tensor.*里面提供的对象,组合出这样一个图:

<img data-rawheight="384" data-rawwidth="400" src="https://i-blog.csdnimg.cn/blog_migrate/ab73294c5fc917ae2c93d18e23b33d35.png" class="content_image" width="400">图片来源: 图片来源: Graph Structures

上图绿色的代表操作符类的对象,红色的是变量类的对象,紫色的是类型类的对象。一个神经网络也是这样构建出来的,因为是从符号的粒度去构建一个神经网络,所以你可以手工攒出你想要的任意形状的神经网络。

因为是一个代数符号系统,一个graph可以充分地表达一个表达式,这样就能够对表达式进行自动求导,这方面理论和实践都已经很成熟了: Introduction to Automatic Differentiation

因为是一个代数符号系统,而且相当于在命令语言(Python)里造了一个符号语言(类似PFGA),用命令语言去做符号操作,操作起来可想而知是非常蹩脚的。那个scan的tutorial那几个例子看了好半天都看不明白,看完scan的spec感觉真是日了狗了。。。我从没见过一个Python库的API参数设计得这么拧巴。。。

来,给大家开开眼
scan的tutorial: Loop — Theano 0.7 documentation
scan的spec: deeplearning.net/softwa
啊,还有就是,Theano安装起来实在是太令人伤心了。。。


作者:赵孽
链接:http://www.zhihu.com/question/35485591/answer/80787902
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



我之后更新自己的理解。。。。

不过这句话看似有用:因为是一个代数符号系统,所以数学表达式里面的一个符号(symbol,Theano也管这个叫variable)是一个Variable对象,对象之间用加减乘除等操作符连接起来,就变成了一个图(Theano管这个叫graph)。在建模一个神经网络的时候将网络表示成为一个巨大的公式(graph)。此举给神精网络的建模提供了not any more的灵活性,你用C++写无非也就如此嘛,就是前排答主说得需求拆分非常到位,所以不仅是神经网络,市面上大部分参数化模型都可以用Theano实现,非参模型用theano的话不知道应该是什么思路(决策树、GBDT、RF)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值