Fonction torch.expand_as de PyTorch


Pytorch torch 参考手册Manuel de référence PyTorch torch

torch.expand_asest une fonction dans PyTorch utilisée pour étendre un tenseur aux mêmes dimensions qu'un autre tenseur. Elle esttorch.expandune version pratique qui utilise automatiquement les dimensions du tenseur de référence pour l’expansion.

Définition de fonction

torch.expand_as(other)

Parameters:

  • other(Tensor) : Le tenseur de référence ; le tenseur actuel sera étendu aux mêmes dimensions que ce tenseur.

Valeur de retour:

  • torch.Tensor: Renvoie la vue du tenseur étendu.

Exemples d'utilisation

Exemple

import torch

# Créer un vecteur
x = torch.tensor([1, 2, 3, 4])

# Créer une matrice cible
other = torch.randn(3, 4)

# Étendre x à la même forme que other
y = x.expand_as(other)

print("Forme du vecteur d'origine :", x.shape)
print("Forme du tenseur de référence :", other.shape)
print("Forme étendue :", y.shape)
print("nTenseur étendu :")
print(y)

La sortie est :

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

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

Exemple

import torch

# Créer un vecteur colonne
x = torch.tensor([[1], [2], [3]])

# Créer un tenseur 3D cible
other = torch.randn(3, 4, 5)

# Étendre x à la même forme que other
y = x.expand_as(other)

print("Forme du vecteur colonne d'origine :", x.shape)
print("Forme du tenseur de référence :", other.shape)
print("Forme étendue :", y.shape)

La sortie est :

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

Exemple

import torch

# Exemple d'application dans les réseaux de neurones
# Supposons qu'il existe un vecteur de biais à diffuser vers la carte de caractéristiques
bias = torch.tensor([0.1, 0.2, 0.3])  # Biais pour 3 canaux

# Simuler la sortie de la carte de caractéristiques de la convolution (batch, canal, hauteur, largeur)
feature_map = torch.randn(8, 3, 32, 32)

# Étendre le biais à la même forme que la carte de caractéristiques
bias_expanded = bias.expand_as(feature_map)

print("Forme du biais :", bias.shape)
print("Forme de la carte de caractéristiques :", feature_map.shape)
print("Forme du biais étendu :", bias_expanded.shape)

# Ajouter le biais
output = feature_map + bias_expanded
print("Forme de nOutput après ajout du biais :", output.shape)

La sortie est :

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

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

Remarque :torch.expand_asSeules les dimensions de taille 1 peuvent être étendues à des tailles plus grandes.otherLa taille du tenseur doit être compatible avec la taille étendue (c.-à-d., les dimensions du tenseur actuel peuvent être étendues à la taille cible via broadcasting). Il renvoie une vue, pas une copie.


Pytorch torch 参考手册Manuel de référence PyTorch torch

Autres extensions