我沿着第二維有兩個相同大小的等級-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