2017-08-23 4 views
1

tf.reduce_meanおよびtf.reduce_prodのような関数は、要素に応じた操作を実行して、軸に沿ったテンソルを減らします。私は、形状が(1000, 3, 3)のテンソルR、3x3行列のリストを持っています。私がしたいのは、の行列です。そのため、3x3の行列を1つ残しておきます。これが使いにくい場合はテンソルの行列の配列を小さくする

np.linalg.multi_dot(R) 

テンソルフローでどうすればいいですか?

答えて

4

あなたはtf.scan使用することができます。tf.scan(lambda a, b: tf.matmul(a, b), R)[-1]

import tensorflow as tf 
import numpy as np 

R = np.random.rand(10, 3, 3) 
R_reduced = np.linalg.multi_dot(R) 

R_reduced_t = tf.scan(lambda a, b: tf.matmul(a, b), R)[-1] 

with tf.Session() as sess: 
    R_reduced_val = sess.run(R_reduced_t) 
    diff = R_reduced_val - R_reduced 
    print(diff) 

この版画:

[[ -3.55271368e-15 0.00000000e+00 0.00000000e+00] 
[ 1.77635684e-15 0.00000000e+00 3.55271368e-15] 
[ -1.77635684e-15 3.55271368e-15 0.00000000e+00]] 
関連する問題