2017-11-28 26 views
2

私はたとえばx = [1,2] and y=[3]のために、2つのテンソルをした、と私はtensorflowに理想的z = [[1,3],[2,3]].を取得し、他の軸に沿って最後を複製したい:Tensorflow:2つのテンソルを連結して連結しようとする動的な形状にどう対処するのですか?

x = tf.placeholder(shape=[None, 2], dtype = tf.float32) 
y = tf.placeholder(shape=[1], dtype = tf.float32) 
z = tf.concat(x, tf.tile(y, [ x.shape[0] ]) , 1) 

問題は、xのプレースホルダー最初の次元が決定されていないということです、どうすればこの問題を解決できますか?

答えて

0
x = tf.placeholder(shape=[None, 2], dtype = tf.float32) 
y = tf.placeholder(shape=[1], dtype = tf.float32) 

dim = tf.shape(x)[0] 
y1 = tf.expand_dims(y, axis = 1) 
y1 = tf.tile(y1, [dim, 1]) 
z = tf.concat((x, y1), axis = 1) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    z_val = sess.run(z, feed_dict = {x:[[2,5],[5,7],[8,9]], y:[3]}) 
    print(z_val) 

出力:

[[ 2. 5. 3.] 
[ 5. 7. 3.] 
[ 8. 9. 3.]] 
+0

は、例えば、3×2のために動作しない場合、このコードは入力の1x2であろう情報を暗黙的に利用するように思わ:feed_dict = {xについて: [[2,5]、[5,7]、[8,9]]、y:[3]}出力は[[2. 5. 5. 3] [7. 8. 9. 3] ]、代わりに[[2,5,3]、[5,7,3]、[8,9,3]] – BernardG

+0

@BernardGが必要です。見てみましょう。 – user1190882

+0

は完璧に動作します、ありがとうございます。 – BernardG

関連する問題