Theano dimshuffle函数用法
来源:互联网 发布:网络包年维护服务 编辑:程序博客网 时间:2024/06/01 17:13
本文主要介绍Theano中的一个函数,名叫dimshuffle()。在做卷积实验室会用到,是用来改变一个array张量结构的一个工具。原来不懂这个函数的作用以及作用后的结果是什么,经过多次实验,终于有了结果。下面来说一下我的结果。仅贡献给尚不懂这个函数的同学。
为了弄懂dimshuffle()函数的作用,最好的方法就是做实验。输入数据,然后观察输出数据。渐渐地就能找到规律,并能总结出函数作用。下面我们开始做实验。
实验代码gitHub下载。
实验代码CSDN免费下载。
代码介绍:借用Python卷积运算的代码,将图片显示的部分去掉,另外加入function函数中间值输出功能。
实验条件:经测试,b是shared变量时,才能调用dimshuffle()函数。
实验开始:
1. 一维变换。b是一维张量(把b视为列向量,因此其shape为(2,)),调用dimshuffle()时,传入的参数只可以为0或’x’
(1). 调用b.dimshuffle(0)
结果:b_1.dimshuffle str = [ 0.33799502 -0.06810025]
分析:输出b的原始结构信息,shape为(2,)。
(2). 调用b.dimshuffle(0, ‘x’)
结果:b_1.dimshuffle str = [[ 0.33799502]
[-0.06810025]]
分析:将b的结构改变为2维,且shape为(2, 1)
(3). 调用b.dimshuffle(‘x’, 0)
结果:b_1.dimshuffle str = [[ 0.33799502 -0.06810025]]
分析:将b的结构改变为2维,且shape为(1, 2)
(4). 调用b.dimshuffle(0, ‘x’, ‘x’)
结果:b_1.dimshuffle str = [[[ 0.33799502]]
[[-0.06810025]]]
分析:将b的结构改变为3维,且shape为(2, 1, 1)
(5). 调用b.dimshuffle(‘x’, 0, ‘x’)
结果:b_1.dimshuffle str = [[[ 0.33799502]
[-0.06810025]]]
分析:将b的结构改变为3维,且shape为(1, 2, 1)
(6). 调用b.dimshuffle(‘x’, ‘x’, 0)
结果:b_1.dimshuffle str = [[[ 0.33799502 -0.06810025]]]
分析:将b的结构改变为3维,且shape为(1, 1, 2)
其他实验自己继续做,比如dimshuffle(0,’x’,’x’,’x’)等。先作如下总结:0代表原始b的行。因为原b是1维,因此dimshuffle中的参数只有0,没有1。每增加一个’x’,则结果增加一维。0的位置不同,结果中结构不同。结果结构规律为:把’x’用1替换,0则用原来的行数代替。例如(4)中的(0, ‘x’, ‘x’)用以上规律则其结构为:2*1*1,为什么0对应的是2呢,因为原来的b有2行。
2. 二维变换。b1是二维张量,调用dimshuffle()时,传入的参数可以为(0和1)或’x’
(1). 调用b.dimshuffle(0, 1)
结果:b_1.dimshuffle str = [[0 1 2]]
分析:输出b1的原始结构信息,shape为(1,3)。
(2). 调用b.dimshuffle(1, 0)
结果:b_1.dimshuffle str = [[0]
[1]
[2]]
分析:输出b1的原始结构信息,shape为(3,1)。
(3). 调用b.dimshuffle(0, 1, ‘x’)
结果:b_1.dimshuffle str = [[[0]
[1]
[2]]]
分析:输出b1的原始结构信息,shape为(1,3,1)。
(4). 调用b.dimshuffle(0, ‘x’, 1)
结果:b_1.dimshuffle str = [[[0 1 2]]]
分析:输出b1的原始结构信息,shape为(1,1,3)。
(5). 调用b.dimshuffle(‘x’, 0, 1)
结果:b_1.dimshuffle str = [[[0 1 2]]]
分析:输出b1的原始结构信息,shape为(1,1,3)。
(6). 调用b.dimshuffle(1, 0, ‘x’)
结果:b_1.dimshuffle str = [[[0]]
[[1]]
[[2]]]
分析:输出b1的原始结构信息,shape为(3,1,1)。
(7). 调用b.dimshuffle(1, ‘x’, 0)
结果:b_1.dimshuffle str =[[[0]]
[[1]]
[[2]]]
分析:输出b1的原始结构信息,shape为(3,1,1)。
(8). 调用b.dimshuffle(‘x’, 1, 0)
结果:b_1.dimshuffle str =[[[0]
[1]
[2]]]
分析:输出b1的原始结构信息,shape为(1,3,1)。
(9). 调用b.dimshuffle(‘x’, 1, ‘x’, 0)
结果:b_1.dimshuffle str = [[[[0]]
[[1]]
[[2]]]]
分析:输出b1的原始结构信息,shape为(1,3,1,1)。
(10). 调用b.dimshuffle(‘x’, 0, ‘x’, 1)
结果:b_1.dimshuffle str = [[[[0 1 2]]]]
分析:输出b1的原始结构信息,shape为(1,1,1,3)。
其他实验自己继续做,比如dimshuffle(0,’x’,’x’,1,’x’)等。先作如下总结:0对应原始b1的行数,1对应原始b1的列数。每增加一个’x’,则结果增加一维。0和1的位置不同,结果中结构不同。结果结构规律为:把’x’用1替换,0用原来b1的行数代替,1用原来b1的列数代替。例如(9)中的(‘x’, 1, ‘x’, 0)用以上规律则其结构为:1*3*1*1。
基本实验及结果介绍到此,其中描述会有不严谨的部分,但是总结的规律可以让新手明白dimshuffle到底是怎么回事。如有疑问或建议,欢迎交流
- Theano dimshuffle函数用法
- theano dimshuffle
- Theano学习笔记01--Dimshuffle()函数
- theano dimshuffle的使用说明
- theano dimshuffle的使用说明
- theano dimshuffle 实例
- numpy,theano中的函数
- Theano---scan函数
- theano的scan函数
- theano switch函数
- theano,numpy tile函数
- theano中 founction的用法
- 理解Theano的Scan函数
- Theano基础、函数与实现
- theano
- Theano
- theano
- Theano
- linux安装git
- java 用jsoup爬数据
- 通过generator-esri-appbuilder-js自定义Web Appbuilder微件()
- Android源码修改所了解的默认语言及默认时区对应表
- caffe基础-13AlexNet模型bvlc_reference_caffenet的测试
- Theano dimshuffle函数用法
- 第四周项目(2)-建立链表的算法库
- 扫地僧身份解析
- pop的实际应用
- oracle之触发器(trigger)
- VIM 移动
- plink做SNP筛选和GWAS
- JS中的!=、== 、!==、===的用法和区别
- 剑指offer 最小的k个数