首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow中两种不同形状矩阵的逐行元向积向量化

Tensorflow中两种不同形状矩阵的逐行元向积向量化
EN

Stack Overflow用户
提问于 2018-03-03 21:31:35
回答 1查看 379关注 0票数 1

在Tensorflow中,假设我有两个矩阵MN,如何才能得到其(i, j)元素是M的第一行和N的第j行的按元素方向积的张量?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-04 23:25:02

这里有一个窍门:将两个矩阵展开为3D,并进行逐次乘(即a。哈达玛产品)。

代码语言:javascript
复制
# 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

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

代码语言:javascript
复制
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,也适用于任何元素级的二进制操作(和、积、除法、.)。下面是逐行元素求和张量的示例:

代码语言:javascript
复制
# 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]]]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49089407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档