【问题标题】:what does axes parameter do in dot layer in keras?轴参数在keras的点层中有什么作用?
【发布时间】:2019-11-20 21:52:11
【问题描述】:

当我们指定轴 = (2, 2) 时,哪些值被精确地相乘?谁能告诉我幕后到底发生了什么?

match = dot([input_encoded_m, question_encoded], axes=(2, 2))
match = Activation('softmax')(match)

数据形状:

print(input_encoded_m)
print(questions_encoded)

(<tf.Tensor 'dropout_41/Identity:0' shape=(None, 552, 64) dtype=float32>,
 <tf.Tensor 'dropout_42/Identity:0' shape=(None, 5, 64) dtype=float32>)

input_encoded_m,552是句子长度,64是嵌入长度​​

questions_encoded,5 是句子长度,64 是嵌入长度​​

如果我们在点层中指定轴 = (2, 2),哪些值被相乘?谁能帮帮我?

【问题讨论】:

  • @TheGuywithTheHat 我已经看过文档但无法理解。除此之外,它还采用这两个张量的点积。但是这里的轴 (2, 2) 是什么。我的嵌入是否正在成倍增加?是吗?

标签: python python-3.x tensorflow keras


【解决方案1】:

轴表示张量的轴。

例如,在你的例子中,你有一个 shape=(None,552,64) 的张量,它是 3D(rank 3) 张量。

标量(例如 3)是 0D 张量。

一个向量 ([1,2,3]) 是一维张量:

一个矩阵([是二维张量。等等。

       [1,2],
       [2,3],
        ]

第一个轴(轴 0)是没有的轴。

第二个轴(轴 1)是一个有 522 行的轴。

第三个轴(轴 2)有 64 列。

a = Input(batch_shape=(None,255,64))
b = Input(batch_shape=(None,5,64))
out = dot([a,b], axes =(2,2))
out.shape
TensorShape([Dimension(None), Dimension(255), Dimension(5)])

所以基本上,a.b = a1.b1 + a2.b2 +.... + a64.b64 将给出一个标量。 由于您有 5 行,因此您将在张量的最后一个轴上有一个 5 维的向量。(向量维度与张量维度不同

【讨论】:

  • 所以点积是在嵌入上完成的,即 64*64 。在这种情况下,最终的形状会是什么?
  • 理论上应该是,(无,255,5),更新了我的答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-08
  • 2019-08-09
  • 2018-04-28
  • 1970-01-01
  • 2022-10-24
  • 2019-12-03
  • 1970-01-01
相关资源
最近更新 更多