'Params'tan dilimleri, şekli 'indeksler' tarafından belirtilen bir Tensöre toplayın.
"indeksler" K boyutlu bir tamsayı tensörüdür ve en iyi şekilde, her öğenin bir "params" dilimini tanımladığı "paramlara" endekslerin (K-1) boyutlu tensörü olarak düşünülebilir:
çıktı[\\(i_0, ..., i_{K-2}\\)] = parametreler[indeksler[\\(i_0, ..., i_{K-2}\\)]]
tf.gather
"indeksler", "params"ın "eksen" boyutundaki dilimleri tanımlarken, tf.gather_nd
, "indices", dilimleri "params"ın ilk "N" boyutuna tanımlar; burada "N = indices.shape" [-1]'.
'İndekslerin' son boyutu en fazla 'paramların' sıralaması olabilir:
indeksler.şekil[-1] <= paramlar.sıra
"indekslerin" son boyutu, "indeksler" boyutu boyunca öğelere (if `indices.shape[-1] == params.rank`) veya dilimlere (if `indices.shape[-1] < params.rank`) karşılık gelir. "params"ın şekli[-1]'. Çıkış tensörünün şekli vardır
indeksler.şekil[:-1] + parametreler.şekil[indices.şekil[-1]:]
CPU'da sınır dışı bir dizin bulunursa bir hata döndürüleceğini unutmayın. GPU'da, sınırların dışında bir dizin bulunursa karşılık gelen çıkış değerinde 0 saklanır.
Aşağıda bazı örnekler.
Bir matrise basit indeksleme:
indices = [[0, 0], [1, 1]]
params = [['a', 'b'], ['c', 'd']]
output = ['a', 'd']
indices = [[1], [0]]
params = [['a', 'b'], ['c', 'd']]
output = [['c', 'd'], ['a', 'b']]
indices = [[1]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[['a1', 'b1'], ['c1', 'd1']]]
indices = [[0, 1], [1, 0]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [['c0', 'd0'], ['a1', 'b1']]
indices = [[0, 0, 1], [1, 0, 1]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = ['b0', 'b1']
indices = [[[0, 0]], [[0, 1]]]
params = [['a', 'b'], ['c', 'd']]
output = [['a'], ['b']]
indices = [[[1]], [[0]]]
params = [['a', 'b'], ['c', 'd']]
output = [[['c', 'd']], [['a', 'b']]]
indices = [[[1]], [[0]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[[['a1', 'b1'], ['c1', 'd1']]],
[[['a0', 'b0'], ['c0', 'd0']]]]
indices = [[[0, 1], [1, 0]], [[0, 0], [1, 1]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [[['c0', 'd0'], ['a1', 'b1']],
[['a0', 'b0'], ['c1', 'd1']]]
indices = [[[0, 0, 1], [1, 0, 1]], [[0, 1, 1], [1, 1, 0]]]
params = [[['a0', 'b0'], ['c0', 'd0']],
[['a1', 'b1'], ['c1', 'd1']]]
output = [['b0', 'b1'], ['d0', 'c1']]
tf.gather
ve `tf.batch_gather`. Genel Yöntemler
Çıkış <T> | Çıkış olarak () Bir tensörün sembolik tutamacını döndürür. |
statik <T, U Sayıyı genişletir> GatherNd <T> | |
Çıkış <T> | çıktı () "indices.shape[:-1] + params.shape[indices.shape[-1]:]" şekliyle "indeksler" tarafından verilen indekslerden toplanan "paramlardan" değerler. |
Kalıtsal Yöntemler
Genel Yöntemler
genel Çıkış <T> asOutput ()
Bir tensörün sembolik tutamacını döndürür.
TensorFlow işlemlerinin girdileri, başka bir TensorFlow işleminin çıktılarıdır. Bu yöntem, girişin hesaplanmasını temsil eden sembolik bir tanıtıcı elde etmek için kullanılır.
public static GatherNd <T> create ( Kapsam kapsamı, İşlenen <T> parametreleri, İşlenen <U> dizinleri)
Yeni bir GatherNd işlemini saran bir sınıf oluşturmaya yönelik fabrika yöntemi.
Parametreler
kapsam | mevcut kapsam |
---|---|
parametreler | Değerlerin toplanacağı tensör. |
endeksler | İndeks tensörü. |
İade
- GatherNd'nin yeni bir örneği
genel Çıkış <T> çıkışı ()
"indices.shape[:-1] + params.shape[indices.shape[-1]:]" şekliyle "indeksler" tarafından verilen indekslerden toplanan "paramlardan" değerler.