Theano 是一个python类库。他基于表示矩阵向量的numpy和包含大量数学功能的scipy,提供一种符号表示的数学公式。符号表示的数学公式的主要不同就是, 在建立公式的时候,你不需要知道公式里的自变量的值是什么。
比如传统的式子:
y= ax+b 在程序执行这一句的时候,必须知道 a,x,和b的值 ,不然就会报错或者得到非正常的结果。
而作为符号表示,则只是建立这个公式。
我们看个例子:
>>> x = T.dmatrix('x') >>> s = 1 / (1 + T.exp(-x)) >>> logistic = function([x], s) >>> logistic([[0, 1], [-1, -2]]) array([[ 0.5 , 0.73105858], [ 0.26894142, 0.11920292]]) 这个例子中首先,定义了x是一个矩阵。 然后给出了s这个符号变量(这个时候,没有赋值),根据这个公式,建立了一个函数logistic 。 将具体值代入这个函数,得到结果。 前面全部是符号运算。 具体实现方法是:建立一个运算树。 声明第一行x的时候,建立一个值节点。 第二行建立一颗树, 包括值的节点和运算节点。 代入值的时候,在这个数上做运算。 需要注意的事,这种符号表示的函数有一个无法替代的又是,就是可以求导。 每个运算节点都知道如何求导。比如: y = a + b , 对这个公式求导,那么 d(y) = d(a)+d(b),求导就可以递归来解决。 引用: [1] http://deeplearning.net/software/theano/tutorial/printing_drawing.html#pretty-printing