2017-01-30 6 views
0

グラフを別の時間にループする必要があります。 feed_dictを通して整数変数を渡すことができません。あなたがTensorflowグラフを構築するとき、あなたがtf.Session.runを呼び出すまでtensorflowグラフに整数を渡す

rough1 = tf.Graph() 
with rough1.as_default(): 
    st = tf.placeholder(tf.float32,shape =()) 
    d = tf.Variable(0) 
    for i in range(st): 
     d = tf.add(d,1) 

with tf.Session(graph = rough1) as sess: 
    sess.run(tf.initialize_all_variables()) 
    s = sess.run([d], feed_dict={st:3}) 
    print s 

答えて

0

、グラフが実際に評価されません。その結果、rangeのようなPythonの構造体はTensorの値を以外に調べることはできません。run()を呼び出してください。ここでは、range(st)は、stの値がPythonに知られている整数であることを要求しますが、stという値はグラフが実際に実行されるまでわかりません。

他の言い方をすれば、グラフを構成するコードは、そのグラフの評価に依存してはならない。

しかし、ここで、あなただけのPythonの整数ではなく、テンソルを使用することができ、すべてが正常に動作します:

rough1 = tf.Graph() 
with rough1.as_default(): 
    d = tf.Variable(0) 
for i in range(3): 
    d = tf.add(d,1) 

with tf.Session(graph = rough1) as sess: 
    sess.run(tf.initialize_all_variables()) 
    s = sess.run([d]) 
    print s 

役に立てば幸い!

+0

実際にグラフを呼び出すたびに、グラフ内のループを異なる回数実行したいと考えています。他の変数は、多くの訓練された変数と同じままでなければなりません。このループのカウントだけを変更する必要があります。私は何をしようとも私はそれをすることができません。 :( –

+0

テンソルの値に基づいて可変回数の反復が必要な場合は、おそらく 'tf.while_loop'が必要です。https://www.tensorflow.org/api_docs/python/control_flow_ops/control_flow_operations#while_loop –

+0

はい、私はRNNモデルを作っていますが、可変長の変数が使われているインターネット上でコードを見つけることはできませんでした。ありがとうございました:)ありがとうございました:) –

0

これを試して、あなたが探しているものかどうかを確認してください。

st=1 
rough1 = tf.Graph() 
with rough1.as_default(): 
    d = tf.Variable(0) 
for i in range(st): 
    d = tf.add(d,1) 

with tf.Session(graph = rough1) as sess: 
sess.run(tf.initialize_all_variables()) 
    s = sess.run([d]) 
    print s 
関連する問題