Функция PyTorch torch.expand_as


Pytorch torch 参考手册Справочное руководство PyTorch torch

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

Определение функции

torch.expand_as(other)

Parameters:

  • other(Tensor): эталонный тензор; текущий тензор будет расширен до тех же размеров, что и этот тензор.

Возвращаемое значение:

  • torch.Tensor: Возвращает представление расширенного тензора.

Примеры использования

Пример

import torch

# Создать вектор
x = torch.tensor([1, 2, 3, 4])

# Создать целевую матрицу
other = torch.randn(3, 4)

# Расширить x до той же формы, что и other
y = x.expand_as(other)

print("Исходная форма вектора:", x.shape)
print("Форма эталонного тензора:", other.shape)
print("Расширенная форма:", y.shape)
print("nРасширенный тензор:")
print(y)

Вывод:

原始向量形状: torch.Size([4])
参考张量形状: torch.Size([3, 4])
扩展后形状: torch.Size([3, 4])

扩展后的张量:
tensor([[1, 2, 3, 4],
        [1, 2, 3, 4],
        [1, 2, 3, 4]])

Пример

import torch

# Создать вектор-столбец
x = torch.tensor([[1], [2], [3]])

# Создать целевой 3D-тензор
other = torch.randn(3, 4, 5)

# Расширить x до той же формы, что и other
y = x.expand_as(other)

print("Форма исходного вектора-столбца:", x.shape)
print("Форма эталонного тензора:", other.shape)
print("Расширенная форма:", y.shape)

Вывод:

原始列向量形状: torch.Size([3, 1])
参考张量形状: torch.Size([3, 4, 5])
扩展后形状: torch.Size([3, 4, 5])

Пример

import torch

# Пример применения в нейронных сетях
# Предположим, есть вектор смещения, который нужно транслировать в карту признаков
bias = torch.tensor([0.1, 0.2, 0.3])  # Смещение для 3 каналов

# Смоделировать выход карты признаков свёртки (batch, channel, height, width)
feature_map = torch.randn(8, 3, 32, 32)

# Расширить смещение до той же формы, что и карта признаков
bias_expanded = bias.expand_as(feature_map)

print("Форма смещения:", bias.shape)
print("Форма карты признаков:", feature_map.shape)
print("Форма расширенного смещения:", bias_expanded.shape)

# Добавить смещение
output = feature_map + bias_expanded
print("Форма nOutput после добавления смещения:", output.shape)

Вывод:

偏置形状: torch.Size([3])
特征图形状: torch.Size([8, 3, 32, 32])
扩展后偏置形状: torch.Size([8, 3, 32, 32])

加上偏置后的输出形状: torch.Size([8, 3, 32, 32])

Примечание:torch.expand_asТолько измерения размера 1 можно расширить до больших размеров.otherРазмер тензора должен быть совместим с расширенным размером (т.е. текущие размеры тензора могут быть расширены до целевого размера с помощью broadcasting). Возвращается представление, а не копия.


Pytorch torch 参考手册Справочное руководство PyTorch torch

Другие расширения