首页 > 编程知识 正文

回调函数理解,函数的极限怎么理解

时间:2023-05-06 17:58:52 阅读:201617 作者:3983

最近在学深度学习时,碰到许多关于Numpy的知识点,边学边做点笔记,方便记忆。
此篇文章用来学习Numpy Transpose函数。
————————————————————————————————

array = np.arange(0, 24).reshape(2, 4, 3)print(array)

得到一个三维矩阵:

[[[ 0 1 2] [ 3 4 5] [ 6 7 8] [ 9 10 11]] [[12 13 14] [15 16 17] [18 19 20] [21 22 23]]]

array.shape = (2,4,3)
第一个参数表示此三维矩阵中存在2个二维矩阵;第二个、第三个参数表示其中二维矩阵为43列矩阵,故shape为(2,4,3),且三个参数顺序分别对应索引号(0,1,2),2的索引号对应0,4的索引号对应1,3的索引号对应2。
————————————————————————————————
进行transpose变形

b = array.transpose(1, 0, 2)

transpose中参数(1,0,2)表示对第一个索引号与第二个索引号对应数字进行交换,结合上述array的实际情况,array.shape变为(4,2,3),此shape参数表示新的三维矩阵b中存在4个二维矩阵;第二个、第三个参数表示其中二维矩阵为23列矩阵,得到以下矩阵。

[[[ 0 1 2] [12 13 14]] [[ 3 4 5] [15 16 17]] [[ 6 7 8] [18 19 20]] [[ 9 10 11] [21 22 23]]]

新得到b矩阵从shape上来看,与推论一致,但究竟是怎么来的呢,请看下面推导。
————————————————————————————————
原先array矩阵如下,把其中每个元素索引号写出,见括号内。
(只写了第一块矩阵,第二块矩阵可以自己动手完成)

[[[ 0(0,0,0) 1(0,0,1) 2(0,0,2)] [ 3(0,1,0) 4(0,1,1) 5(0,1,2)] [ 6(0,2,0) 7(0,2,1) 8(0,2,2)] [ 9(0,3,0) 10(0,3,1) 11(0,3,2)]] [[12 13 14] [15 16 17] [18 19 20] [21 22 23]]]

transpose表面上是对矩阵shape的索引号进行相应变换,但实质上,它是对其中每个元素索引号进行相应变换,transpose(1,0,2),就是将每个元素第一个索引号与第二个索引号进行互换,可得变化后的元素对应索引号。

[[[ 0(0,0,0) 1(0,0,1) 2(0,0,2)] [ 3(1,0,0) 4(1,0,1) 5(1,0,2)] [ 6(2,0,0) 7(2,0,1) 8(2,0,2)] [ 9(3,0,0) 10(3,0,1) 11(3,0,2)]] [[12 13 14] [15 16 17] [18 19 20] [21 22 23]]]

然后,将数字放入现在索引号对应的正确位置。

[[[0(0,0,0) 1(0,0,1) 2(0,0,2)] [12 13 14]] [[3(1,0,0) 4(1,0,1) 5(1,0,2)] [15 16 17]] [[6(2,0,0) 7(2,0,1) 8(2,0,2)] [18 19 20]] [[ 9(3,0,0) 10(3,0,1) 11(3,0,2)] [21 22 23]]]

这样就可以得到最终的正确答案。
二维矩阵的transpose更加简单,另外维度的transpose也是一样的原理。

转载请注明原处

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。