首页 > 学院 > 开发设计 > 正文

theano学习初步(二) 基础Tensor函数

2019-11-14 11:28:57
字体:
来源:转载
供稿:网友

http://blog.csdn.net/u013007900/article/details/52447561

theano学习初步(二) 基础Tensor函数

2016-09-06 11:26 1929人阅读 评论(0) 收藏 举报 分类:

目录(?)[+]

本文来自于官方文档

Creation(声明)

Theano有多种方式进行声明变量。变量也可以进行命名,从而便于debug,而且每一种声明方式都能够接受name的参数。 下面这三种声明方式,声明的是0维的整型变量,它的名字是myvar

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

Constructors with optional dtype(用dtype参数进行声明)

theano.tensor.scalar(name=None, dtype=config.floatX)11

返回一个0维的numpy.ndarray

theano.tensor.vector(name=None, dtype=config.floatX)11

返回一个1维的numpy.ndarray

theano.tensor.row(name=None, dtype=config.floatX)11

返回一个2维的numpy.ndarray,但是行数保证是1。

theano.tensor.col(name=None, dtype=config.floatX)11

返回一个2维的numpy.ndarray,但是列数保证是1。

theano.tensor.matrix(name=None, dtype=config.floatX)11

返回一个2维的numpy.ndarray

theano.tensor.tensor3(name=None, dtype=config.floatX)11

返回一个3维的numpy.ndarray

theano.tensor.tensor4(name=None, dtype=config.floatX)11

返回一个4维的numpy.ndarray

All Fully-Typed Constructors(用完整的类型进行声明)

上文说的dtype在Theano中都有定义。

Constructordtypendimshapebroadcastable
bscalarint80()()
bvectorint81(?,)(False,)
browint82(1,?)(True, False)
bcolint82(?,1)(False, True)
bmatrixint82(?,?)(False, False)
btensor3int83(?,?,?)(False, False, False)
btensor4int84(?,?,?,?)(False, False, False, False)
btensor5int85(?,?,?,?,?)(False, False, False, False, False)
wscalarint160()()
wvectorint161(?,)(False,)
wrowint162(1,?)(True, False)
wcolint162(?,1)(False, True)
wmatrixint162(?,?)(False, False)
wtensor3int163(?,?,?)(False, False, False)
wtensor4int164(?,?,?,?)(False, False, False, False)
wtensor5int165(?,?,?,?,?)(False, False, False, False, False)
iscalarint320()()
ivectorint321(?,)(False,)
irowint322(1,?)(True, False)
icolint322(?,1)(False, True)
imatrixint322(?,?)(False, False)
itensor3int323(?,?,?)(False, False, False)
itensor4int324(?,?,?,?)(False, False, False, False)
itensor5int325(?,?,?,?,?)(False, False, False, False, False)
lscalarint640()()
lvectorint641(?,)(False,)
lrowint642(1,?)(True, False)
lcolint642(?,1)(False, True)
lmatrixint642(?,?)(False, False)
ltensor3int643(?,?,?)(False, False, False)
ltensor4int644(?,?,?,?)(False, False, False, False)
ltensor5int645(?,?,?,?,?)(False, False, False, False, False)
dscalarfloat640()()
dvectorfloat641(?,)(False,)
drowfloat642(1,?)(True, False)
dcolfloat642(?,1)(False, True)
dmatrixfloat642(?,?)(False, False)
dtensor3float643(?,?,?)(False, False, False)
dtensor4float644(?,?,?,?)(False, False, False, False)
dtensor5float645(?,?,?,?,?)(False, False, False, False, False)
fscalarfloat320()()
fvectorfloat321(?,)(False,)
frowfloat322(1,?)(True, False)
fcolfloat322(?,1)(False, True)
fmatrixfloat322(?,?)(False, False)
ftensor3float323(?,?,?)(False, False, False)
ftensor4float324(?,?,?,?)(False, False, False, False)
ftensor5float325(?,?,?,?,?)(False, False, False, False, False)
cscalarcomplex640()()
cvectorcomplex641(?,)(False,)
crowcomplex642(1,?)(True, False)
ccolcomplex642(?,1)(False, True)
cmatrixcomplex642(?,?)(False, False)
ctensor3complex643(?,?,?)(False, False, False)
ctensor4complex644(?,?,?,?)(False, False, False, False)
ctensor5complex645(?,?,?,?,?)(False, False, False, False, False)
zscalarcomplex1280()()
zvectorcomplex1281(?,)(False,)
zrowcomplex1282(1,?)(True, False)
zcolcomplex1282(?,1)(False, True)
zmatrixcomplex1282(?,?)(False, False)
ztensor3complex1283(?,?,?)(False, False, False)
ztensor4complex1284(?,?,?,?)(False, False, False, False)
ztensor5complex1285(?,?,?,?,?)(False, False, False, False, False)

Plural Constructors(多重声明)

iscalars, lscalars, fscalars, dscalarsivectors, lvectors, fvectors, dvectorsirows, lrows, frows, drowsicols, lcols, fcols, dcolsimatrices, lmatrices, fmatrices, dmatrices

用法参考如下

from theano.tensor import *x, y, z = dmatrices(3) # creates three matrix Variables with no namesx, y, z = dmatrices('x', 'y', 'z') # creates three matrix Variables named 'x', 'y' and 'z'12341234

Custom tensor types(一般的类型声明)

如果你想要创建一个非标准的类型,那么就只能创造一个你自己定义的TensorType。你需要将dtypebroadcasting pattern传入声明函数中。 下面的例子是,自创一个五维向量。

dtensor5 = TensorType('float64', (False,)*5)x = dtensor5()z = dtensor5('z')123123

你也可以重构一个已存在的类型

my_dmatrix = TensorType('float64', (False,)*2)x = my_dmatrix() # allocate a matrix variablePRint my_dmatrix == dmatrix # output is 'True'123123

他们会很好地结合起来。

Converting from Python Objects(从Python对象中转移)

使用的是shared()函数。

x = shared(numpy.random.randn(3,4))11

这个函数似乎有一些细节,虽然可以这么转化,但是缺少上面声明的一些功能。

Shaping and Shuffling

theano.tensor.shape(x)11

返回一个lvector用于表示x的shape

theano.tensor.reshape(x, newshape, ndim=None)11

Parameters:

x (某种TensorVariable (或者是可兼容的类型)) – 要进行reshape的变量newshape (lvector (或者是可兼容的类型)) – x的新形状ndim – 可选的- the length that newshape‘s value will have. If this is None, then reshape() will infer it from newshape.

Return type:

variable with x’s dtype, but ndim dimensions
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表