Theano学习系列(2):符号变量的方法和属性之矩阵形状的变化

Theano学习系列(2):符号变量的方法和属性之矩阵形状的变化

       前面讲过符号变量是Tensorvariable()基类的实例化,在面向对象中(OOP),对象具有一些方法和属性,这些方法和属性在一个叫做__tensor__py__operator类继承的,这些实际上是借用了python中的Numpy的一些方法,内部机制不是太清楚,不过并不影响我们使用。我们使用这些方法一般而言有两个管道。(1)T.tensor.methods(object,其它参数);(2)object.method(参数)。之后将加以说明。这里呢我们根据文档的顺序来一一介绍和演示下这些方法的含义和使用规则。
        阐述用法的思想是通过一个实例来解释,这样能够快速理解,有疑惑中间会穿插一下对比,加深理解。下面将逐一测试__tensor__py__operator的里面的属性和方法。
        CODE:import theano
                      import theano.tensor as T
                      import numpy as np
                      x=T.matrix('x',theano.config.floatX)
        Attributes:主要有type,ndim,broadcastable,dtype,需要说明的是,dtype=type[0],矩阵肯定2维的,
        运行结果如下图所示:

        Methods方法比较多,有以下属于对单个符号变量操作,有的属于对于对个符号变量操作的。本系列都会一次全部讲完,本节只将几个队矩阵结构改造的函数用法,在这个过程中可能要用到theano.function加以演示。
        flatten(ndim):如果ndim=object.ndim,实际上,输出和输入没有变化,因为保持了维度不变,也就不扁平化操作矩阵,如果ndim=1,实际上把object变成了一个行向量。等同于row注意不是vector(2维),如果object.ndim>ndim,保持object的第一维大小不变,flatten后面维度,已达到目的,下面将通过一个操作展示这样一个机制。


                                 
         shape和reshape(shape,ndim),一个是返回大小,一个是按照规定的shape改变矩阵大小
             
         上图以及给出使用reshape,如果shape直接给定,或者是shape通过参数传递方式给出来的方式。下面重点讲述以下几个方法,这几个方法都要通过theano.tensor.methods()方式来使用了:
       (1)tensor.shape_padleft(),tensor.shape_padright(),tensor.shape_padaxis()


通过两个例子我们看出来,实际上这三个都是增加维度,前两个制定了位置,最左或者最右,可以任意增加,最后一个方法则可以任意位置增加维度,但是只可以增加1维一次。
       (2)控制broadcastable的属性两个函数,Tensor.addbroadcast(),一个是Tensor.patternbroadcast()


从上面这段程序可以看出来,原来broadcastable属性可以被关掉的!!!也可以被打开!!!(感兴趣可以用同样的思路验证)
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值