Об энциклопедии преобразования измерений тензора Pytorch

# view()    转换维度
# reshape() 转换维度
# permute() 坐标系变换
# squeeze()/unsqueeze() 降维/升维
# expand()   扩张张量
# narraw()   缩小张量
# resize_()  重设尺寸
# repeat(), unfold() 重复张量
# cat(), stack()     拼接张量

1 тензор.view()

view() используется для изменения формы тензора , но не меняет значения элементов в тензоре .
Использование 1:
Например, вы можете использовать представление для преобразования тензора с формой (2, 3) в тензор с формой (3, 2);

import torch
x = torch.tensor([[1, 2, 3], [4, 5, 6]])
y = x.view(3, 2)    

Вышеописанная операция эквивалентна сначала сглаживанию тензора формы **(2, 3) в (1, 6), а затем в (3, 2).**

Использование 2:
количество элементов в тензоре остается неизменным до и после преобразования. Если размерность определенного измерения в view() равна -1 , это означает, что размерность этого измерения адаптивно корректируется в соответствии с общим количеством элементов и размером других измерений . Обратите внимание, что размер не более одного измерения в view() может быть установлен равным -1 .

z = x.view(-1,2)

изображение.png

Например:
в сверточных нейронных сетях представления часто используются в полностью связном слое для растягивания размеров тензора:
предположим, что входной признак представляет собой 4-мерный тензор B C H*W , где B представляет размер пакета, а C представляет признаки. Количество каналов H и W представляют высоту и ширину объекта. Прежде чем отправить объект на полностью связанный слой, .view будет использоваться для преобразования его в двумерный тензор B*(CH W ) , то есть пакет останется неизменным, но каждый объект преобразуется в одномерный вектор.

2 тензор.reshape()

reshape() используется так же, как и view().
изображение.png

3: tensor.squeeze() и tensor.unsqueeze()

3.1 уменьшение размерности tensor.squeeze()

(1) Если скобки сжимания() пусты, все измерения с размерностью 1 в тензоре будут сжаты , например, уменьшение размерности тензора с 1, 2, 1, 9 до 2, 9 измерений; если есть в измерении нет 1. Если размерность тензора та же, исходная размерность останется неизменной. Например, если 2 3 4-мерный тензор сжать, размерность не изменится после преобразования.
(2) Если используется сжимание(idx) , соответствующее idx-е измерение в тензоре будет сжато. Например, если сжимание(2) выполняется с тензорами 1, 2, 1 и 9, размерность будет равна уменьшено до размеров 1, 2 и 9. Тензор: если размерность idx не равна 1, размерность не изменится после сжатия.
Например:
изображение.png

3.2 tensor.unsqueeze(idx)升维

Обновление измерения выполняется в измерении idx, и тензор обновляется с исходного измерения n до измерения n+1 . Например, размер тензора равен 2 * 3. После unsqueeze(0) он становится тензором с размерами 1, 2 и 3.
изображение.png

4 тензор.пермуте()

Преобразование системы координат, то есть транспонирование матрицы , используется так же, как транспонирование массива numpy . Номера параметров в скобках permute() относятся к значениям индекса каждого измерения. Перестановка — это метод, часто используемый в глубоком обучении. Как правило, тензор признаков BCHW преобразуется в тензор признаков BHWC посредством транспонирования , то есть глубина признака преобразуется в последнее измерение с помощью вызова **tensor.permute(0, 2, 3, 1)**реализовано.
torch.transpose может выполнять транспонирование только 2D-матрицы, тогда как функция permute() может транспонировать любую многомерную матрицу;
простое понимание: permute() эквивалентен одновременной работе с несколькими измерениями тензора, а транспонировать можно только действуют на тензор одновременно двух измерений.

изображение.png

Хотя и перестановка, и просмотр/изменение формы могут преобразовывать тензоры в определенные измерения, их принципы совершенно разные, поэтому обратите внимание на различие. После обработки просмотра и изменения формы порядок элементов в тензоре не изменится, но расположение элементов изменится после перестановки транспонирования, поскольку изменится система координат.

5 torch.cat([a,b],dim)

При выполнении сращивания тензоров в тусклом измерении следует уделять внимание сохранению согласованности размеров .
Предположим, a — двумерный тензор h1 w1, b — двумерный тензор h2 w2, torch.cat(a,b,0) означает сращивание в первом измерении , то есть сращивание в направлении столбца , поэтому w1 и w2 должны быть равны. torch.cat(a,b,1) означает сращивание во втором измерении, то есть сращивание в направлении строки , поэтому h1 и h2 должны быть равны .
Предположим, что a — двумерный тензор c1 h1 w1, а b — двумерный тензор c2 h2 w2. torch.cat(a,b,0) означает сплайсинг в первом измерении, то есть сплайсинг в канале размер объекта. Другие размеры должны оставаться одинаковыми, то есть w1=w2, h1=h2. torch.cat(a,b,1) означает сращивание во втором измерении, то есть сращивание в направлении столбца. Необходимо убедиться, что w1=w2, c1=c2; torch.cat(a,b,2) означает склейка в третьем измерении., то есть при склейке в направлении строки должно быть обеспечено h1=h2, c1=c2;
изображение.png

6 тензор.развернуть()

Разверните тензор , чтобы расширить одно измерение до большего размера посредством копирования значений . Использование функцииexpand() не изменит исходный тензор, и результат необходимо переназначить. Ниже приведены конкретные примеры:
Возьмем в качестве примера двумерный тензор: тензор — это 1-мерный или n 1-мерный тензор. Вызовите tensor.expand(s, n) или tensor.expand(n, s) соответственно в строке направление и направление столбца.Направление расширения.
Заполняемый параметр методаexpand() — это размер.

изображение.png

7 tensor.narrow(тусклый, старт, длина)

Функция узкой() играет роль в фильтрации данных в определенном измерении.

torch.narrow(input, dim, start, length)->Tensor

input — это тензор, который необходимо разрезать, dim — размер среза, start — начальный индекс, а length — длина среза.Фактическое применение выглядит следующим образом:

изображение.png

8 тензор.resize_()

Размер изменяется, усекайте тензор до размеров после resize_.
изображение.png

9 тензор.повторение()

tensor.repeat(a,b) копирует весь тензор: копию в направлении строки и копию b в направлении столбца.

изображение.png

ссылка:

Функции, связанные с изменением размеров тензора в pytorch (постоянно обновляется) — статья weili21 — Zhihu https://zhihu
https://zhuanlan.zhihu.com/p/438099006

[преобразование тензорных измерений pytorch (преобразование тензорных измерений)]
https://blog.csdn.net/x_yan033/article/details/104965077

Je suppose que tu aimes

Origine blog.csdn.net/Alexa_/article/details/134171416
conseillé
Classement