2017-01-18 4 views
2

2次元テンソルを幅(列番号)方向に展開する必要があります。下の例では、列を繰り返すことでBをAと同じ幅にしたいと考えています。 Tensorflowで、Tensorflowの2Dテンソルの幅を列を繰り返すことで拡大する

[[19 15 19] 
[18 14 18] 
[17 13 17]] 

がどのように私は2つの定数テンソルAとBのためにこれを行うことができます。

A = np.array([[1,2,3],[4,5,6],[6,7,8]]) 
B = np.array([[19,15],[18,14],[17,13]]) 

ncl = A.shape[1] 

B = B[:,np.mod(np.arange(ncl),B.shape[1])] 
print(B) 

収量:

これがでnumpyの中で行うことができますか?

+0

これを行う方法上の任意のアイデア? – Qubix

答えて

0
A = tf.constant([[1,2,3,4,4,5,6,7],[4,5,6,6,4,5,6,7],[6,7,8,9,4,5,6,7]]) 
B = tf.constant([[19,15], 
      [18,14], 
      [17,13]]) 

diff = A.get_shape()[1] - B.get_shape()[1] 

Bt = tf.transpose(B) 
for idx in range(diff): 
    col = tf.gather_nd(Bt, [[idx]]) 
    Bt = tf.concat(0, [Bt, col]) 

result = tf.transpose(Bt) 

with tf.Session() as sess: 
    res = sess.run(result) 
    print(res) 

これまでで最も美しいコードではありませんが、動作します。

出力:

[[19 15 19 15 19 15 19 15] 
[18 14 18 14 18 14 18 14] 
[17 13 17 13 17 13 17 13]] 
関連する問題