2016-12-10 15 views
1

forループによって生成された複数の1次元配列を連結するtensoflowで2次元行列を作成したいとします。 たとえば、すべてのループで、1(= 1,1,1,1,1)で完全なshape =(1,5)の配列が生成されるとします。私は3つのループATER最終的に取得する必要がありますどのような は次のとおりです。Tensorflow:複数のtf.concatを使用して行列を作成する

[[1,1,1,1,1] 
    [1,1,1,1,1] 
    [1,1,1,1,1]] 

私は実際にすべての単一のループで行列に新しい行を追加するソリューションを必要としています。それをテンソルフローで作成するには?私はtf.concatについて考えましたが、どこでループの間に行列の値を保存するかは考えられません。

+0

あなたは常に3つのループを持っているつもりですか? – martianwars

+0

私はいつも特定の数のループを持つつもりです、はい! –

+0

が回答を追加しました。より一般的なものが必要な場合は教えてください – martianwars

答えて

1

ループが多数ある場合は、配列を連結する必要があります。 1つの次元だけを持つ最初のベクトルv1から始めましょう。サイズ(1, vector_size)に再成形して、tf.reshape()を使用して始めます。

v1 = tf.reshape(v1, [1, vector_size]) 

今、あなたはベクトルv2のために同じことを行うとaxis=0に沿って二つの配列を結合するためにtf.concat()を使用することができます。

v1 = tf.concat(0, [v1, v2]) 

注私はここv1を再利用してきました。これはあなたのループの中にあり、v2は新しい変数になります。あなたは配列の一定数が少ない(質問の文脈でループ)持っている代わりに、場合


、あなたはtf.stack()経由でこれを行うことができます。

最初のループは配列v1を生成し、2番目のv2と3番目のv3を生成します。次のようにあなたがtf.stack()を使用することができます 、

result = tf.stack([v1, v2, v3]) 
+0

申し訳ありませんが、私は正しい質問をしませんでした。私の問題はまさにこのviです。ループの数をNとすると、Nは非常に大きくなる可能性があります。私はすべての単一のループで行列の新しい行を追加するソリューションが欲しいです。 –

+0

これはより役に立ちますか? – martianwars

+0

私はnoobの質問があります: 計算グラフの作成中にこれを行うと、forループに埋め込みをいくつか計算し、スタックを使って行列を取得するなど、バックプロップはうまく動作しますか? – Rahul

1

は何をしたいtf.tileこと、および以下の例である可能性があります

a = tf.reshape(tf.range(10), (-1, 10)) 
b = tf.tile(a, (5, 1)) 
with tf.Session() as sess: 
    print(sess.run(a)) 
    print(sess.run(b)) 
関連する問題