Ich habe derzeit einen Code, der es einem kombinatorischen (kartesischen) Produkt über eine bestimmte Achse ermöglicht. Dies ist in numpy und stammte aus einer früheren Frage Efficient axis-wise cartesian product of multiple 2D matrices with Numpy or TensorFlowTensorflow-Äquivalent dieses numply achsenweisen kartesischen Produkts für 2D-Matrizen
A = np.array([[1,2],
[3,4]])
B = np.array([[10,20],
[5,6]])
C = np.array([[50, 0],
[60, 8]])
cartesian_product([A,B,C], axis=1)
>> np.array([[ 1*10*50, 1*10*0, 1*20*50, 1*20*0, 2*10*50, 2*10*0, 2*20*50, 2*20*0]
[ 3*5*60, 3*5*8, 3*6*60, 3*6*8, 4*5*60, 4*5*8, 4*6*60, 4*6*8]])
und die Lösung zu wiederholen:
L = [A,B,C] # list of arrays
n = L[0].shape[0]
out = (L[1][:,None]*L[0][:,:,None]).reshape(n,-1)
for i in L[2:]:
out = (i[:,None]*out[:,:,None]).reshape(n,-1)
Gibt es eine bestehende Methode, dies in tensorflow mit Rundfunk führen - ohne einen for-Schleife?