2016-09-01 4 views
0

私はfeed_dictを通してプレースホルダに入れる整数で与えられた長さを持つ動的リストを初期化する必要があります。tf.placeholder(tf.int32)に供給する整数を使用するにはどうしたらいいですか?

が、私はこのコードをグラフを設定します。私はnum_placeholderに入れintを使用するにはどうすればよい'Tensor' object cannot be interpreted as an integer

num_placeholder = tf.placeholder(tf.int32) 
input_data = list() 
for _ in range(num_placeholder): 
    input_data.append(1) 

しかし、次のエラーを取得しますか?

答えて

1

num_placeholderは、Tensorオブジェクトです。intとして直接使用することはできません。最初に評価する必要があります。 placeholderメソッドのドキュメントを参照してください。

あなたは次のようにあなたがそれを評価しなければならないintとしてnum_placeholderオブジェクトを使用する場合:

# create a placeholder  
num_placeholder = tf.placeholder(tf.int32) 

# create an identity operation 
# because same Tensor can not be both fed and fetched 
num_op = tf.identity(num_placeholder) 

with tf.Session() as sess: 
    # feed value to placeholder and fetch it 
    num = sess.run([num_op], feed_dict={num_placeholder: 5}) 

num意志がリスト[5]であり、あなたがあなたのループ内でnum[0]を使用することができます。私はあなたが達成しようとしていることをはっきりしていませんが、ランタイム中に与えられるカスタム長さのベクトルを作成することが目標の場合は、Tensorflowを使用して解決できる方法をここに示します:

ones ==> <type 'list'>: [array([1, 1, 1, 1, 1], dtype=int32)]、 は、私は、各トレーニングステップのための種々の長さの文に入れているので、私は言語モデルをやってるones

+0

を参照してください。だから、私は各単語を1つのホットエンコードされたベクトルとして入力リストに入れようとしています。上に示したことはうまくいくが、各単語をリストに入れる方法はあるのだろうか?私はn個のプレースホルダを持つようにリストを初期化しようとしています(文中の各単語に対して1つ)。しかし、リストの長さのプレースホルダーは私にそれを許可しません。 –

+0

もちろん、可変長のプレースホルダを持つことができます。最初の次元として 'None'を指定するだけで、可変長のバッチを持つことができます。たとえば、 'input_data = tf.placeholder(shape = [None、10])'は、任意の数のエントリを保持できるプレースホルダを作成します。それでは、どのように単語をエンコードするのかはあなた次第です。 –

+0

'input_data'の個々のエントリにアクセスできますか? 'input_data'の最初のエントリを取得したい場合、' input_data [0] 'は動作しますか?プレースホルダは変数だと思っていて、あなたは個々のエントリにアクセスできません。 –

関連する問題