axis和shape关系:
axes是整数或者tuple(之前在dot中前部分已经处理好了),axes就是要进行点乘的维度,也就是计算后减少/消失的那个维度。
输出张量的shape是两个输入张量的shape进行concatenate得到的:但把a张量的axes维度去除了,b张量的batch维度和axes维度去除了。
看下面的例子,a.shape=(100, 20),b.shape=(100, 30, 20),axes=(1, 2),则张量a的维度1和b的维度2进行点乘,输出张量output.shape=(100, 30),计算过程如下:
首先output.shape先加入a.shape中第一个元素100(即output.shape=(100, )),然后第二个元素20就是axes=1上的shape所以点乘后会消失,不计入output.shape,张量a就到此结束;张量b.shape的第一个元素100是batch维度不计入(此时output.shape=(100, )),然后第二个元素30要concatenate到output.shape中(此时output.shape=(100, 30)),第三个元素20就是axes=2的shape点乘后也会消失,不计入output.shape,所以最终output.shape=(100, 30)。