Fonction torch.zeros de PyTorch
Manuel de référence Pytorch torch
torch.zerosIl s'agit d'une fonction de PyTorch utilisée pour créer des tenseurs entièrement nuls. Elle crée un tenseur de la forme spécifiée, avec tous les éléments initialisés à 0.
C'est l'une des méthodes les plus courantes pour initialiser des tenseurs en apprentissage profond, souvent utilisée pour créer des vecteurs de biais, des espaces réservés ou initialiser les paramètres d'un modèle.
Définition de fonction
torch.zeros(*size, dtype=None, device=None, requires_grad=False, pin_memory=False)
Parameters:
*size(int) : La forme du tenseur, par ex.3、(3, 4)、(2, 3, 4)etc.dtype(torch.dtype, facultatif) : Spécifie le type de données du tenseur, par défauttorch.float32。device(torch.device, facultatif) : Spécifie le périphérique où le tenseur est stocké.requires_grad(bool, optionnel) : Indique s'il faut calculer les gradients.pin_memory(bool, facultatif) : Indique s'il faut utiliser la mémoire épinglée.
Valeur de retour:
torch.Tensor: Renvoie un tenseur rempli de zéros.
Exemples d'utilisation
Voici quelquestorch.zerosexemples d'utilisation de la fonction.
Exemple 1 : Création d'un tenseur 1D rempli de zéros
Exemple
# Créer un tenseur rempli de zéros contenant 5 éléments
x = torch.zeros(5)
print(x)
Le résultat de sortie est:
tensor([0., 0., 0., 0., 0.])
Dans cet exemple, nous avons créé un tenseur 1D rempli de zéros contenant 5 éléments.
Exemple 2 : Création d'un tenseur 2D rempli de zéros
Exemple
# Créer un tenseur 3x4 rempli de zéros (matrice)
x = torch.zeros(3, 4)
print(x)
print(x.shape)
Le résultat de sortie est:
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
torch.Size([3, 4])
Dans cet exemple, nous avons créé un tenseur 2D rempli de zéros avec 3 lignes et 4 colonnes.
Exemple 3 : Création d'un tenseur rempli de zéros de type entier
Exemple
# Créer un tenseur rempli de zéros de type entier
x = torch.zeros(3, 3, dtype=torch.int32)
print(x)
print(x.dtype)
Le résultat de sortie est:
tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0]], dtype=torch.int32)
</p>
<p>在这个示例中,我们创建了整数类型的全零张量,默认的 <code>float32</code> 被覆盖为 <code>int32</code>。</p>
<h3>示例 4: 创建需要梯度的全零张量</h3>
<div class="example">
<h2 class="example">实例</h2>
<div class="example_code">
<span style="color: Green;font-weight:bold;">import</span> torch<br />
<br />
<span style="color: #a50"># 创建需要梯度的全零张量</span><br />
x <span style="color: Gray;">=</span> torch.<span style="color: #05a;">zeros</span><span style="color: Olive;">(</span><span style="color: Maroon;">3</span><span style="color: Gray;">,</span> requires_grad<span style="color: Gray;">=</span><span style="color: Teal;">True</span><span style="color: Olive;">)</span><br />
<br />
<span style="color: Green;font-weight:bold;">print</span><span style="color: Olive;">(</span>x.<span style="color: #05a;">requires_grad</span><span style="color: Olive;">)</span><br />
</div>
</div>
<p>输出结果为:</p>
<pre>
True
Dans cet exemple, nous avons créé un tenseur rempli de zéros qui nécessite le calcul du gradient, utilisé pour les paramètres apprenables lors de l'entraînement de réseaux de neurones.
Exemple 5 : Création d'un tenseur rempli de zéros sur un appareil CUDA
Exemple
# Vérifier si CUDA est disponible
if torch.cuda.is_available():
# Créer un tenseur rempli de zéros sur un appareil CUDA
x = torch.zeros(3, 4, device='cuda')
print(x.device)
else:
print("CUDA n'est pas disponible")
Le résultat de sortie est:
cuda:0
Dans cet exemple, nous vérifions si CUDA est disponible, puis créons un tenseur rempli de zéros sur le GPU.
Différence entre torch.zeros et torch.zeros_like
torch.zeros(*size): Crée un tenseur rempli de zéros selon la taille spécifiée.torch.zeros_like(input): Crée un tenseur rempli de zéros en fonction de la forme du tenseur d'entrée, en conservant le dtype et le device du tenseur d'entrée.
Cas d'utilisation
torch.zerosLa fonction est couramment utilisée dans les scénarios suivants :
- Initialisation des vecteurs de biais: Dans les réseaux de neurones, les biais sont généralement initialisés à zéro.
- Création d'espaces réservés: En tant qu'espaces réservés d'entrée dans des graphes de calcul dynamiques.
- Remplissage de tableaux: Créer un tableau initialement rempli de zéros, puis y insérer des données plus tard.
- Opérations mathématiques: Dans les opérations d'accumulation où zéro est nécessaire comme valeur de départ.
Notes
- Par défaut,
torch.zeroscela crée unfloat32tenseur de type. - Si vous devez créer un tenseur entièrement nul ayant la même forme qu'un autre tenseur, vous pouvez utiliser
torch.zeros_like()。 - Les tenseurs entièrement nuls sont couramment utilisés pour l'initialisation en apprentissage profond, mais dans certains cas, ils peuvent conduire au problème du gradient évanescent.
Autres extensions