Соберите фрагменты из «параметров» в тензор с формой, заданной «индексами».
`indexes` — это K-мерный целочисленный тензор, который лучше всего рассматривать как (K-1)-мерный тензор индексов в `params`, где каждый элемент определяет срез `params`:
выход[\\(i_0, ..., i_{K-2}\\)] = параметры[индексы[\\(i_0, ..., i_{K-2}\\)]]
В то время как в tf.gather
`indices` определяет срезы в измерении `axis` params`, в tf.gather_nd
`indices` определяет срезы в первых `N` измерениях `params`, где `N = index.shape [-1]`.
Последнее измерение «индексов» может быть не более рангом «параметров»:
index.shape[-1] <= params.rank
Последнее измерение `indices` соответствует элементам (если `indices.shape[-1] == params.rank`) или срезам (если `indices.shape[-1] < params.rank`) вдоль измерения `indices`. shape[-1]` из `params`. Выходной тензор имеет форму
indexes.shape[:-1] + params.shape[indices.shape[-1]:]
Обратите внимание, что на ЦП, если обнаруживается выходной индекс, возвращается ошибка. На графическом процессоре, если обнаруживается выходной индекс, в соответствующем выходном значении сохраняется 0.
Некоторые примеры ниже.
Простая индексация в матрицу:
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
и tf.batch_gather. Публичные методы
Выход <Т> | какВывод () Возвращает символический дескриптор тензора. |
static <T, U расширяет число> GatherNd <T> | |
Выход <Т> | выход () Значения из `params`, собранные из индексов, заданных `indices`, с формой `indices.shape[:-1] + params.shape[indices.shape[-1]:]`. |
Унаследованные методы
Публичные методы
публичный вывод <T> asOutput ()
Возвращает символический дескриптор тензора.
Входные данные для операций TensorFlow являются выходными данными другой операции TensorFlow. Этот метод используется для получения символического дескриптора, который представляет собой вычисление входных данных.
public static GatherNd <T> create (область действия , параметры операнда <T>, индексы операнда <U>)
Фабричный метод для создания класса, обертывающего новую операцию GatherNd.
Параметры
объем | текущий объем |
---|---|
параметры | Тензор, из которого собираются значения. |
индексы | Индексный тензор. |
Возврат
- новый экземпляр GatherNd
публичный вывод <T> вывод ()
Значения из `params`, собранные из индексов, заданных `indices`, с формой `indices.shape[:-1] + params.shape[indices.shape[-1]:]`.