英語が苦手な私のタイトルはあいまいかもしれません。このテンソルの '最初の列は、' 重複要素(例えば、[1、2、2、3、4]または[を含めることができ階数2テンソルの要素を取り出す(またはスライスする)方法は、最初の要素が一意です。
array([[1, 2, 3],
[2, 2, 3],
[2, 2, 4],
[3, 2, 3],
[4, 2, 3]], dtype=int32)
: は、私はこのようなテンソルa
があるとします。しかし、私はこのことを意味します1,2,3,3,4,5,5])、どの要素が複製されているかは事前に分かっていない。
、私はこのテンソル取り出したい:uが見ることができるよう
array([[1, 2, 3],
[2, 2, 3],
[3, 2, 3],
[4, 2, 3]], dtype=int32)
を、私は、その最初の要素a
の列でユニークな要素である行を取り出します。
私は最初にtf.unique()
という機能を使いたいと思っていました。しかし、それによって返されるidx
の値は、元のテンソルの出力テンソルの各値の最初のインデックスを示していません。このような
tf.unique()
作品:
# tensor 'x' is [1, 1, 2, 3, 3, 3, 7, 8, 8]
y, idx = tf.unique(x)
y ==> [1, 2, 3, 7, 8]
idx ==> [0, 0, 1, 2, 2, 2, 3, 4, 4]
機能tf.unique(x, name=None)
は1次元テンソルでユニークな要素を見出します。そして、2つの値:y
とidx
を返します。 y
には、x
にある同じ順序でソートされたx
のすべての固有の要素が含まれています。 idx
には、固有の出力y
の各値のインデックスx
が含まれています。
元のテンソルのy
の各値の最初のインデックスを含む3番目の戻り値がどのように必要なのでしょうか。x
も必要です。ただ、numpyのの同等のような
# tensor 'x' is [1, 1, 2, 3, 3, 3, 7, 8, 8]
y, idx, idx_ori = tf.unique(x)
y ==> [1, 2, 3, 7, 8]
idx ==> [0, 0, 1, 2, 2, 2, 3, 4, 4]
idx_ori ==> [0, 2, 3, 6, 7]
を行います:私はこのidx_ori
をお持ちの場合は
array 'x' is [1, 1, 2, 3, 3, 3, 7, 8, 8]
y, idx_ori = np.unique(x, return_index=True)
y ==> [1, 2, 3, 7, 8]
idx_ori ==> [0, 2, 3, 6, 7]
、私はtf.gather()
で私の問題を解決することができます。
_, _1, idx_ori = tf.unique(a[:, 0])
result = tf.gather(a, idx_ori)
それはこのように働くかもしれませんこの問題を回避するアイデアですか?または私が望むこの指標を得るための任意のアイデア。
P.S.私は...私の説明がうんざりするほど長いです:-P知っ