Theano入门-代数学

5.4 theano入门

imoprt Theano:

>>>from theano import *

几个常用的符号(symbols)在theano的子包tensor中,加载子包:

>>>import theano.tensor as T

5.4.3 代数学

两个标量(Scalars)加

>>>imoprt theano.tensor as T
>>>from theano import function
>>>x = T.dscalar('x')
>>>y = T.dscalar('y')
>>>z = x + y
>>>f = function([x, y], z)

使用创建的函数:

>>>f(2, 3)
array(5.0)
>>>f(16.3, 12.1)
array(28.4)

上面的代码可以 分成几个步骤:

  1. 定义2个符号(变量),表示加的输入
  2. 求和z,表示x和y的和,可以使用pp输出与z相关的表达式:
    >>>from theano import pp
    >>>print pp(z)
    (x + y)
  3. 创建输入为x和y,输出为z的函数:
    >>>f = function([x, y], z)
    function的第一个参数是一个输入的参数列表,第二个为单个或者一个输出变量的列表,f的输出为0维德numpy.ndarray。
    或者可以不定义function,直接使用eval()函数求解z的值:
    >>>import theano.tensor as T
    >>>x = T.dscalar('x')
    >>>y = T.dscalar('y')
    >>>z = x + y
    >>>z.eval({x:16.3, y:12.1})
    array(28.4)

两个矩阵的加

>>>x = T.dmatrix('x')
>>>y = T.dmatrix('y')
>>>z = x + y
>>>f = function([x, y], z)

dmatrix是double类型的矩阵,调用f函数:

>>>f([[1, 2], [3, 4]], [[10, 20], [30, 40]])
array([[ 11., 22.],[ 33., 44.]])

可以使用numpy的array作为函数的输入:

>>>import numpy
>>>f(numpy.array([[1, 2], [3, 4]]), numpy.array([[10, 20], [30, 40]]))
array([[ 11., 22.],[ 33., 44.]])

这里,function可以做标量和矩阵、向量和矩阵、标量和向量等的加。
下面为可用的类型:

  • byte:bscalar、bvector、bmatrix、brow、bcol、btensor3、btensor4
  • 16位整形:wscalar、wvector、wmatrix、wrow、wcol、wtensor3、wtensor4
  • 32位整形:iscalar、ivector、imatrix、irow、icol、itensor3、itensor4
  • 64位整形:lscalar、lvector、lmatrix、lrow、lcol、ltensor3、ltensor4
  • float:fscalar、fvector、fmatrix、frow、fcol、ftensor3、ftensor4
  • double:dscalar、dvector、dmatrix、drow、dcol、dtensor3、dtensor4
  • complex:cscalar、cvector、cmatrix、crow、ccol、ctensor3、ctensor4

练习

import theano
a = theano.tensor.vector()
out = a + a ** 10
f = theano.function([a], out)
print f([0, 1, 2])

上面的代码改为计算a ** 2 + b ** 2 + 2 * a * b:

import theano
a = theano.tensor.vector()
b = theano.tensor.vector()
out = a ** 2 + b ** 2 + 2 * a * b
f = theano.function([a, b], out)
print f([0, 1, 2])

你可能感兴趣的:(入门)