Есть ли тензорная функция PyTorch, которая уменьшает размерность в обычных шаблонах?

Извините за плохую формулировку названия. Я хотел сделать вот что:  example Матрица 1 - это исходная матрица, а матрица 2 - это матрица 1, но все четные столбцы и строки удалены. Матрица 3 является матрицей 1, но имеет только 1 (mod 3) столбец и строку. Матрица 4 такая же, с 1 столбцом и строкой (по модулю 4). Матрица 5 имеет 1 столбец (по модулю 2) и все строки.

Есть ли функция PyTorch, которая управляет тензорами таким образом, быстро и может использовать графический процессор? Это вроде как MaxPool2d, но мне нужно только первое значение, а не максимальное. Если таких функций нет, есть ли способ сделать это вручную, но при этом быстро?


person 157 239n    schedule 20.05.2020    source источник
comment
Разве это не просто нарезка?   -  person Arya McCarthy    schedule 20.05.2020
comment
Да, но я не хочу иметь циклы for и выбор отдельных столбцов и строк, потому что это будет очень медленно. Я ищу внутреннюю функцию, которая может сделать это быстро   -  person 157 239n    schedule 20.05.2020
comment
Я знаю. Используйте ломтики. Это не связано с циклами for.   -  person Arya McCarthy    schedule 20.05.2020


Ответы (1)


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

matrix5 = matrix1[, ::2]

Это обозначение занимает каждый второй столбец, начиная с нуля.

person Arya McCarthy    schedule 20.05.2020
comment
Теперь вопрос кажется глупым. Просто я никогда раньше не использовал этот последний индекс нарезки. Спасибо - person 157 239n; 20.05.2020
comment
Да, я пока не могу пометить как решенный - person 157 239n; 20.05.2020