我有一个自定义层,可以将两个张量为(x,1)&(1,y)的张量A和B相乘,在这里我要生成一个尺寸为(x,y)的输出C。
为了考虑批处理,即矩阵大小实际上是(?,x,1)&(?,1,y),我在打电话:
C = K.batch_dot(A,B, axes = [2,1])
这似乎产生了所需的输出,但是我真的不明白
axes
变量在这里代表什么。我的直觉是,这些轴是我们要执行矩阵乘法的轴,但是我不明白为什么它是按[2,1]而不是[1,2]的顺序生成错误的。谁能帮助我理解我?
最佳答案
根据官方文档here
轴[0]和轴[1]的长度应该相同
在您的情况下,A
的尺寸为(?, x, 1)
,而B
的尺寸为(?, 1, y)
。
因此很明显,从axis = [2, 1]
开始,A
的第二维,即1
等于B
的第一维,即1
(轴暗淡从0开始)并产生所需的结果。
关于python - 'axes'在keras.backend.batch_dot中的作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48908811/