我沿着第二维有两个相同大小的等级-2 Tensor
s,但沿着第一维不等。例如形状[a, n]
的张量A
和形状[b, n]
的张量B
。它们可以被看作是包含长度为n
的矢量的两个阵列。在Tensorflow中的两个张量中的每对元素上应用函数
我有一个函数f
它需要两个输入,每个形状张量[n]
,并返回一个标量。我想将这个函数应用于A
和B
中的每对载体,其结果是形状为[a, b]
的张量C
,使得对于C
,C[i, j] = f(A[i], B[j])
中的每个位置(i, j)
。
如果这些人只是普通numpy的阵列,我可以用下面的代码实现这一点:
# Assume a, b, and n are integers, and A and B are Numpy arrays
C = numpy.zeros((a, b))
for i in range(0, a):
for j in range(0, b):
C[i, j] = f(A[i], B[j])
return C
如果能以这样的方式来完成的是f
只是需要A
和B
作为输入并返回C
,这将是首选的解决方案,因此所有事情都会发生为适当的张量操作,因此它可以通过Tensorflow完全并行化。只要最终的结果是一样的。
我发现solution to this problem专门为f
计算每对载体之间的欧氏距离。我想扩展到其他功能,如余弦距离或曼哈顿(L1)距离。
它实际上可能是在可扩展性和性能方面更好地使'上尺寸的张量F'工作'[a,n]'和'[b,n]'直接。 –
我想我应该澄清,我不一定需要'f'作为一个单独的函数。我只想应用可实现指定结果的_some_操作。正如你所说,它直接在整个张量上运行将是首选解决方案。我现在要澄清一下。 – ItsTimaiFool
我发现了这个类似的问题,我现在正在研究它,看看我是否可以将它扩展到除欧几里德距离以外的函数:https://stackoverflow.com/questions/37009647/compute-pairwise-distance-in-a-批量 - 无复制 - 张量张量?rq = 1 – ItsTimaiFool