2015-11-22 4 views
9

テンソルフローでは、エントロピーと行列の乗算に便利な関数がありますが、ドキュメントを調べた結果、の外積を2つのテンソルのとするための内部関数は見つかりません。 (numpy.outerのような)小さいテンソルの要素のすべての可能な副産物:テンソルフローの外積

v_{i,j} = x_i*h_j 

または

M_{ij,kl} = A_{ij}*B_{kl} 

tensorflowは、このような機能を持っていますか?

答えて

15

はい、テンソルフローのブロードキャストセマンティクスを利用することでこれを行うことができます。最初のサイズを自分自身の1xNサイズに、2番目のサイズを自分自身のサイズMx1に合わせると、それらを乗算するとすべての結果がMxNにブロードキャストされます。

は(あなたがところで、それは単純な文脈でどのように動作するか確認するためにnumpyの中で同じことで遊ぶことができます。

a = np.array([1, 2, 3, 4, 5]).reshape([5,1]) 
b = np.array([6, 7, 8, 9, 10]).reshape([1,5]) 
a*b 

あなたはtensorflowでそれを行う方法を正確にあなたがしたい軸どのビットに依存します使用して、どのような意味論あなたは結果の乗算のためにしたいが、一般的な考え方が適用されます。ケースの他の誰かがつまずいて

1

この時、tensorflowドキュメントに応じて次の2つのテンソルaの外積を計算するためにtf.einsum()機能を使用することができますし、 b

# Outer product 
>>> einsum('i,j->ij', u, v) # output[i,j] = u[i]*v[j] 
関連する問題