Theano基础

Theano基础

theano与numpy中都有broadcasting:numpy中是动态的,而theano需要在这之前就知道是哪维需要被广播(broadcast)。针对不同类型的数据给出如下的一张表,基本类型包括scalar、vector、row、col、matrix、tensor3、tensor4

x = scalar('myvar',dtype='int32') 
x = iscalar('myvar') 
x = TensorType(dtype = 'int32', broadcastable=())('myvar') 

有整形int对应的8、16、32、64位分别为b、w、i、l;float类型对应的32、64位为f、d;complex类型对应的64、128位为c、z。

theano.tensor.scalar(name=None,dtype=config.floatX) 
theano.tensor.vector(name=None,dtype=config.floatX) 
theano.tensor.row(name=None, dtype=config.floatX) 
theano.tensor.col(name=None,dtype=config.floatX) 
theano.tensor.matrix(name=None,dtype=config.floatX) 
theano.tensor.tensor3(name=None,dtype=config.floatX) #3D张量 
theano.tensot.tensor4(name=None,dtype=config.floatX) #4D张量 

 

 

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
theano基础
"""

import numpy as np
import theano.tensor as T
from theano import function

#定义X和Y两个常量 (scalar),把结构建立好之后,把结构放在function,在把数据放在function。
# 建立 x 的容器
x = T.dscalar('x')
# 建立 y 的容器
y = T.dscalar('y') 
#  建立方程
z = x + y

# 使用 function 定义 theano 的方程
# 将输入值 x, y 放在 [] 里,  输出值 z 放在后面
f = function([x, y], z)

# 将确切的 x, y 值放入方程中
print(f(2, 3))

# output: 5.0

 

在theano 中 的 pp (pretty-print) 能够打印出原始方程:

 

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
theano基础
"""

import numpy as np
import theano.tensor as T
from theano import function

#theano 中 的 pp (pretty-print) 能够打印出原始方程:
from theano import pp
print(pp(z))
# output:(x + y)

 

 

 

 

 定义矩阵,以及利用矩阵做相关运算:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
theano基础
"""

import numpy as np
import theano.tensor as T
from theano import function

#定义矩阵,以及利用矩阵做相关运算:
# 矩阵 x 的容器
x = T.dmatrix('x')
# 矩阵 y 的容器
y = T.dmatrix('y')
# 定义矩阵加法
z = x + y
# 定义方程
f = function([x, y], z)
print(f(
        np.arange(12).reshape(3,4),#x为3行4列的矩阵
        10 * np.ones((3, 4)) #y也为3行4列,且数值全为10
        ))

"""
output:
[[ 10.  11.  12.  13.]
 [ 14.  15.  16.  17.]
 [ 18.  19.  20.  21.]]
"""

 

posted @ 2016-07-26 11:54  xmeo  阅读(214)  评论(0编辑  收藏  举报