点积层

[源代码]

Dot

keras.layers.Dot(axes, normalize=False, **kwargs)

计算两个张量的逐元素点积。

它接收一个包含 2 个输入的列表,以及要执行点积的相应轴。

假设 xy 是两个输入张量,形状分别为 (2, 3, 5)(2, 10, 3)。两个输入的批次维度大小应相同,且 axes 应对应于在相应输入中具有相同大小的维度。例如,使用 axes=(1, 2)xy 的点积将生成一个形状为 (2, 5, 10) 的张量。

示例

>>> x = np.arange(10).reshape(1, 5, 2)
>>> y = np.arange(10, 20).reshape(1, 2, 5)
>>> keras.layers.Dot(axes=(1, 2))([x, y])

在 Keras 模型中的用法

>>> x1 = keras.layers.Dense(8)(np.arange(10).reshape(5, 2))
>>> x2 = keras.layers.Dense(8)(np.arange(10, 20).reshape(5, 2))
>>> y = keras.layers.Dot(axes=1)([x1, x2])

参数

  • axes: 整数或整数元组,沿其进行点积的轴或轴。如果为元组,则应包含两个整数,分别对应第一个输入和第二个输入的所需轴。请注意,所选的两个轴的大小必须匹配,并且不能包含轴 0(批次轴)。
  • normalize: 在执行点积之前,是否沿点积轴对样本进行 L2 归一化。如果设置为 True,则点积的输出是两个样本之间的余弦相似度。
  • **kwargs: 标准的 layer 关键字参数。

返回

一个张量,是输入样本的点积。