python - 评估tensorflow中两个张量行的所有对组合

标签 python numpy tensorflow

我正在尝试在 tensorflow 中定义一个自定义操作,其中有一点我需要构建一个矩阵 (z),该矩阵将包含两个矩阵的行对的所有组合的总和 ( xy)。一般来说,xy的行数是动态的。

在 numpy 中它相当简单:

import numpy as np
from itertools import product

rows_x = 4
rows_y = 2
dim = 2

x = np.arange(dim*rows_x).reshape(rows_x, dim)
y = np.arange(dim*rows_y).reshape(rows_y, dim)

print('x:\n{},\ny:\n{}\n'.format(x, y))

z = np.zeros((rows_x*rows_y, dim))
print('for loop:')
for i, (x_id, y_id) in enumerate(product(range(rows_x), range(rows_y))):
    print('row {}: {} + {}'.format(i, x[x_id, ], y[y_id, ]))
    z[i, ] = x[x_id, ] + y[y_id, ]

print('\nz:\n{}'.format(z))

返回:

x:
[[0 1]
 [2 3]
 [4 5]
 [6 7]],
y:
[[0 1]
 [2 3]]

for loop:
row 0: [0 1] + [0 1]
row 1: [0 1] + [2 3]
row 2: [2 3] + [0 1]
row 3: [2 3] + [2 3]
row 4: [4 5] + [0 1]
row 5: [4 5] + [2 3]
row 6: [6 7] + [0 1]
row 7: [6 7] + [2 3]

z:
[[  0.   2.]
 [  2.   4.]
 [  2.   4.]
 [  4.   6.]
 [  4.   6.]
 [  6.   8.]
 [  6.   8.]
 [  8.  10.]]

但是,我不知道如何在 tensorflow 中实现类似的东西。

我主要研究 SO 和 tensorflow API,希望找到一个可以产生两个张量元素组合的函数,或者一个可以给出张量元素排列的函数,但无济于事。

欢迎提出任何建议。

最佳答案

您可以简单地使用 tensorflow 的广播功能。

import tensorflow as tf

x = tf.constant([[0, 1],[2, 3],[4, 5],[6, 7]], dtype=tf.float32)
y = tf.constant([[0, 1],[2, 3]], dtype=tf.float32)

x_ = tf.expand_dims(x, 0)
y_ = tf.expand_dims(y, 1)
z = tf.reshape(tf.add(x_, y_), [-1, 2])
# or more succinctly 
z = tf.reshape(x[None] + y[:, None], [-1, 2])

sess = tf.Session()
sess.run(z)

关于python - 评估tensorflow中两个张量行的所有对组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43534057/

相关文章:

python - BeautifulSoup 只获取 td 标签中的 "general"文本,嵌套标签中没有任何内容

在任意位置插入列的 Pythonic 方式

python - try-except block 中的 Numpy 零除,引发 "RuntimeWarning: invalid value encountered in double_scalars"和奇怪的结果

python - 第二次运行tensorflow时出错

python - python 的新 openCV API 中的 getCentralMoment 去了哪里?

Python for 循环执行

python - 为什么在一个脚本中两次调用 ElementTree.parse 函数会出现异常?

image - 从图像中检测和裁剪文本 block (段落)的简单方法?

tensorflow - 为什么在layers.Embedding中需要input_length在keras tensorflow中?

python - TensorFlow while_loop() 的非确定性行为