'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ır dışı 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`. Sabitler
Sicim | OP_NAME | Bu operasyonun TensorFlow çekirdek motoru tarafından bilinen adı |
Genel Yöntemler
Çıkış <T> | Çıkış olarak () Tensörün sembolik tutamacını döndürür. |
static <T, TType'ı 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
Sabitler
genel statik son Dize OP_NAME
Bu operasyonun TensorFlow çekirdek motoru tarafından bilinen adı
Genel Yöntemler
genel Çıkış <T> asOutput ()
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 <? extends TNumber > 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.