2017-02-28 4 views
2

TensorFlowを初めて使用しています。私はTensorFlowでダイナミックな "pythonic"リストを作成する方法を理解できません。基本的に、私はテンソルオブジェクト(train_data[i])上のいくつかの計算を実行し、私はこのような何かをしたい(100,)TensorFlowでリストを作成して追加する

形状とテンソルになりたい「リスト」X、それを追加します。

X = [] 
for i in range(100): 
    q = tf.log(train_data[i]) 
    print(q) #Tensor("Log:0", shape=(), dtype=float32) 
    X.append(q) 

Xは、テンソルオブジェクトである基本的に列ベクトルである形状(100,)のテンソルにします。上のコードを実行すると、代わりにPythonのTensorObjectsリストが取得されます。

答えて

2

あなたがループのために、あなたの後X = tf.stack(X)を追加することができます(100)テンソルにXを変換したい場合:

X = [] 
for i in range(100): 
    q = tf.log(train_data[i]) 
    print(q) #Tensor("Log:0", shape=(), dtype=float32) 
    X.append(q) 
X = tf.stack(X) 

これは、あなたには、いくつかのテンソルをtf.unstackしたい場合があり便利な構成で、オーバーループ結果リストを作成し、次にtf.stackを使用して1つのテンソルに戻ります。

+1

ありがとう!私は昨日それを理解しましたが、これは正解です。もう一つの方法は、tf.concat()を使うことです。私はここに要点を作った:https://gist.github.com/alivcor/921b797a7f0242b9024105f128bc7da8 –

0

ここで本当の答えは、少し考え方を変えなければならないと思います。 Tensorflowでは、まず計算グラフを定義し、値を入力として評価します。

例:Xが実際に形状(100,1)のテンソルである場合、tf.log(X)が最も効果的です。 コードのように動的リストを作成する場合は、グラフに渡す前にこのリストを作成する方がよいでしょう。

これが役立つ場合はお知らせください。

+0

ありがとうございましたrmeertens!私はTFでグラフを作っていることを理解していますが、私の質問はどのようにしてリストを定義/初期化できますか?上記のコードを実行した結果、Xは(100,1)テンソルになります。あなたはこれを達成するために何をすべきかについてもっと具体的に考えていただけますか? –

+0

さて、実際にこのようにしたいと思っているのであれば、おそらくscatter_update関数を使うことができます:https://www.tensorflow.org/api_docs/python/tf/scatter_update。 Xが既に(100,1)テンソルである場合、X = tf.scatter_update(X、[i]、tf.log(train_data [i])を試すことができます – rmeertens

関連する問題