我有一个自定义层,可以将两个张量为(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/

10-11 20:19