TensorFlow — индекс по оси

Я хочу индексировать последнюю ось тензора произвольной формы, за исключением последней, которая равна 2.

например Пусть x имеет вид (1,2,2). Указатель на последнюю ось на

x_0 = x[:, :, 0]    # x_0, x_1 shapes are (1,2)
x_1 = x[:, :, 1]

например Пусть x имеет вид (1,2,3,4,2). Указатель на последнюю ось на

x_0 = x[:, :, :, :, 0]   # x_0, x_1 shapes are (1,2,3,4)
x_1 = x[:, :, :, :, 1]

Мне не удалось найти какую-либо функцию тензорного потока или использование для нарезки произвольной формы.

Мне нужен общий метод индексации, чтобы я всегда мог получить доступ к последней оси для любого тензора формы.


person kt-kbr    schedule 27.07.2021    source источник


Ответы (1)


Синтаксис фрагмента в tensorflow очень похож на numpy. Вы можете использовать многоточие в тот случай:

Многоточие расширяется до числа : объектов, необходимых для кортежа выбора для индексации всех измерений. В большинстве случаев это означает, что длина расширенного кортежа выбора равна x.ndim. Может присутствовать только одно многоточие.

В твоем случае,

x_0 = x[..., 0]

индексирует последнюю ось тензора произвольной формы.

Вы также можете посмотреть ответ на вопрос: в чем разница между операторами slice (:) и ellipsis (…) в numpy ?.

person Lescurel    schedule 28.07.2021