A
とB
の形状が(M, N)
の非常に大きいM
と小さいN
の2つの行列を持っています。私はそれらを乗算し、その結果の対角線利用したいと思いますTensorflowで行列積の対角を計算する方法は?
は:
C = tf.matmul(A, B)
D = tf.diag_part(C)
残念ながら、これはメモリに収まらないことができる非常に大きな(M, M)
マトリックスの作成を必要とします。
しかし、このデータのほとんどは必要ありません。ですから、この値を1ステップで計算することは可能ですか?
einsum
がありますが、合計がありませんか?
tf.einsum('ij,ij->i', A, B)
か::
tf.reduce_sum(A * B, axis=1)
例:あなたが必要なもの
Iが必要ながら、これは ' – Dims
追加されました(1、M)' ''行列(N、N)を与えます上記のコード –