\(4 \times 16\) 行列 \(A\) と、\(4 \times 16\) 行列 \(B\) に対して、行列積 \(C = A^T \times B\) (shape:\(16 \times 16\)) を計算してください。\(A,B,C\) のレイアウトは以下のとおりです。
A: (( 4:2), (2:1, 4_PE:1, 2_W:1))
B: (( 4:2), (2:1, 4_PE:1, 2_W:1))
C: ((16:2), (2:1, 4_PE:1, 2_W:1))
\(A, B, C\) の値はこちらです。
A:
[[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
[ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31],
[ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47],
[ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]]
B:
[[200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215],
[216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231],
[232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247],
[248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263]]
C:
import numpy as np
A = np.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, 24, 25, 26, 27, 28, 29, 30, 31],
[ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47],
[ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63]])
B = np.array([[200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215],
[216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231],
[232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247],
[248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263]])
A.T @ B
[[22784,22880,22976,23072,23168,23264,23360,23456,23552,23648,23744,23840,23936,24032,24128,24224],
[23680,23780,23880,23980,24080,24180,24280,24380,24480,24580,24680,24780,24880,24980,25080,25180],
[24576,24680,24784,24888,24992,25096,25200,25304,25408,25512,25616,25720,25824,25928,26032,26136],
[25472,25580,25688,25796,25904,26012,26120,26228,26336,26444,26552,26660,26768,26876,26984,27092],
[26368,26480,26592,26704,26816,26928,27040,27152,27264,27376,27488,27600,27712,27824,27936,28048],
[27264,27380,27496,27612,27728,27844,27960,28076,28192,28308,28424,28540,28656,28772,28888,29004],
[28160,28280,28400,28520,28640,28760,28880,29000,29120,29240,29360,29480,29600,29720,29840,29960],
[29056,29180,29304,29428,29552,29676,29800,29924,30048,30172,30296,30420,30544,30668,30792,30916],
[29952,30080,30208,30336,30464,30592,30720,30848,30976,31104,31232,31360,31488,31616,31744,31872],
[30848,30980,31112,31244,31376,31508,31640,31772,31904,32036,32168,32300,32432,32564,32696,32828],
[31744,31880,32016,32152,32288,32424,32560,32696,32832,32968,33104,33240,33376,33512,33648,33784],
[32640,32780,32920,33060,33200,33340,33480,33620,33760,33900,34040,34180,34320,34460,34600,34740],
[33536,33680,33824,33968,34112,34256,34400,34544,34688,34832,34976,35120,35264,35408,35552,35696],
[34432,34580,34728,34876,35024,35172,35320,35468,35616,35764,35912,36060,36208,36356,36504,36652],
[35328,35480,35632,35784,35936,36088,36240,36392,36544,36696,36848,37000,37152,37304,37456,37608],
[36224,36380,36536,36692,36848,37004,37160,37316,37472,37628,37784,37940,38096,38252,38408,38564]]