テンソルフローのインデックスがまだ開いていることがわかりました。(#206)ですので、現時点では回避策として何が使えるのか不思議です。私は、すべてのトレーニングの例で変わる変数に基づいて行列の行/列をインデックス/スライスする必要があります。プレースホルダに基づいて変数に基づいたTensorflowスライシング
- スライス(動作しない)
を一定の数に基づいて、次の(作業)コードスライス:私がこれまで試したどのような
。
import tensorflow as tf
import numpy as np
x = tf.placeholder("float")
y = tf.slice(x,[0],[1])
#initialize
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
#run
result = sess.run(y, feed_dict={x:[1,2,3,4,5]})
print(result)
しかし、これらの固定数のうちの1つを単にtf.placeholderに置き換えることはできないようです。次のコードは私にエラーを与えます。 "TypeError:単一のTensorが期待するときのテンソルのリスト"
import tensorflow as tf
import numpy as np
x = tf.placeholder("float")
i = tf.placeholder("int32")
y = tf.slice(x,[i],[1])
#initialize
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
#run
result = sess.run(y, feed_dict={x:[1,2,3,4,5],i:0})
print(result)
は、これはあまりにも多くのです[i]は周りの括弧のように聞こえるが、それらを除去することのいずれか助けていません。プレースホルダ/変数をインデックスとして使用する方法
-
Pythonの変数に基づいて
- スライシング(適切に更新/バックプロパゲーションない)
- スライス
一つ私が見つけた問題を回避するには、ワンホットベクターを使用しています。 numpyでワンホットベクトルを作成し、プレースホルダを使用してこれを渡し、次に行列乗算によってスライスします。これは動作しますが、かなり遅いです。
変数に基づいて効率的にスライス/インデックスする方法はありますか?
Iはまた、指標として通常のPython変数を使用して試みました。これによりエラーは発生しませんが、ネットワークはトレーニング中に何も学習しません。変化する変数が適切に登録されておらず、グラフが不正であり、更新が機能しないためです。
ワンホットベクター+乗算(作品が、遅い)を介し
これは動作します、ありがとうございます! – Daniela
それは以下のエラーを出しました: ValueError:Shape()はランク1を持つ必要があります – tejaskhot
ああ、TensorFlowはこれを投稿してからスカラーと長さ1のベクトルの違いについて厳密になりました。それを修正する答えを更新しました。 – mrry