在Tensorflow中向量化两个不同形状矩阵的逐行逐元素乘积

安坦德

在Tensorflow中,说我有两个矩阵MN,如何得到张量的张量,其(i, j)元素是的第i行M和第j行的元素乘积N

格言

这是个窍门:将两个矩阵都扩展到3D并进行图元乘法(又名Hadamard乘积)。

# Let `a` and `b` be the rank 2 tensors, with the same 2nd dimension
lhs = tf.expand_dims(a, axis=1)
rhs = tf.expand_dims(b, axis=0)
products = lhs * rhs

让我们检查一下它是否有效:

tf.InteractiveSession()

# 2 x 3
a = tf.constant([
  [1, 2, 3],
  [3, 2, 1],
])

# 3 x 3
b = tf.constant([
  [2, 1, 1],
  [2, 2, 0],
  [1, 2, 1],
])

lhs = tf.expand_dims(a, axis=1)
rhs = tf.expand_dims(b, axis=0)
products = lhs * rhs
print(products.eval())

# [[[2 2 3]
#   [2 4 0]
#   [1 4 3]]
# 
#  [[6 2 1]
#   [6 4 0]
#   [3 4 1]]]

相同的技巧实际上也适用于numpy以及任何按元素进行二进制运算(求和,乘积,除法...)。这是按行逐元素求和张量的示例:

# 2 x 3
a = np.array([
  [1, 2, 3],
  [3, 2, 1],
])

# 3 x 3
b = np.array([
  [2, 1, 1],
  [2, 2, 0],
  [1, 2, 1],
])

lhs = np.expand_dims(a, axis=1)
rhs = np.expand_dims(b, axis=0)
sums = lhs + rhs

# [[[2 2 3]
#   [2 4 0]
#   [1 4 3]]
# 
#  [[6 2 1]
#   [6 4 0]
#   [3 4 1]]]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

向量化numpy / tensorflow中具有不同形状的矩阵的乘法

向量化两个3D张量的按元素乘积

Tensorflow:在两个不同形状的张量的第一个维度上压缩

MATLAB - 使用两个不同大小矩阵的逐元素矩阵乘法

如何使用TensorFlow连接具有不同形状的两个张量?

将两个不同形状的 3d 张量相乘(Tensorflow)

numpy的,合并两个不同形状的数组

如何连接不同形状的两个张量

如何执行具有不同维度的两个向量的逐元素乘法

在两个不同形状的DataFrame中查找相同的数据

在Keras中连接两个具有不同形状的张量

Python中两个不同形状的数组的余弦距离是如何计算的?

TensorFlow中矩阵和向量的高效逐元素乘法

计算Maxima中两个矩阵的元素乘积的元素和

给定两个矩阵和一个需要两个向量的函数,如何对矩阵中每对向量的函数均值进行向量化?

如何对两个矩阵进行逐元素求和?

如何在numpy中向量化两个矩阵的函数?

在Maxima中,如何获得两个矩阵的元素(Hadamard)乘积?

R:确定两个向量中的不同元素

如何在R中详尽地逐行比较两个不同的矩阵?

通过计算两个不同形状的距离来计算形状上下文错误

矩阵与向量的元素乘积

如何在张量流的二维卷积中连接两个具有不同形状的张量?

如何将具有不同形状的两个ndarray的最后一个元素与第一个元素组合

带螺纹的两个矩阵的乘积

逐元素乘积矩阵 x 矩阵

匹配R中的两个矩阵列表(逐行)

使用向量化从两个向量获取特定的矩阵输出

在MATLAB中向量化两个嵌套的for循环