テンソルの要素に、私が持っている別のインデックス リストでアクセスする必要がありますが、現時点では、単純な構文では不可能に思えます。バグかどうかわからなかったので、構文を修正するためにここに投稿します。私のコードは次のとおりです。
import tensorflow as tf
import numpy as np
sess = tf.Session()
input = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
idx_list = np.array([0,2])
output = input[:, idx_list]
print(sess.run(output))
しかし、私はエラーが発生します:
ValueError: シェイプは同じランクである必要がありますが、0 と 1 はシェイプ 0 を他のシェイプとマージすることによります。'strided_slice/stack_1' (op: 'Pack') の入力形状: []、[2]。
私がインストールした tensorflow のバージョンは tensorflow-1.1.0-cp35 (pip インストール) です。
更新:
私はこの操作を tf.fn_map で行いますが、これがインデックス作成の正しい方法であると私は本当に疑っています。
output = tf.transpose(tf.map_fn(lambda x: input[:,x], idx_list),perm=[1,0])
更新:
これについて登録されている特定の問題があり、最新のコメントに素敵なスニペットがあり、役立つ可能性があります。その間、この操作は厄介なほど簡単ではありません...
と を使用tf.gather
してtf.transpose
、次のように実行できます。
import tensorflow as tf
import numpy as np
sess = tf.Session()
input = tf.constant([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
idx_list = np.array([0,2])
output = tf.transpose(tf.gather(tf.transpose(input),idx_list))
output.eval(session=sess)
これは印刷します
array([[1, 3],
[4, 6],
[7, 9]])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加