PyTorch torch.zeros Funktion
PyTorch torch Referenzhandbuch
torch.zerosEs ist eine Funktion in PyTorch, mit der Tensoren mit lauter Nullen erstellt werden. Sie erstellt einen Tensor der spezifizierten Form, bei dem alle Elemente auf 0 initialisiert werden.
Dies ist eine der gebräuchlichsten Möglichkeiten, Tensoren im Deep Learning zu initialisieren; sie wird häufig verwendet, um Bias-Vektoren, Platzhalter zu erstellen oder Modellparameter zu initialisieren.
Funktionsdefinition
torch.zeros(*size, dtype=None, device=None, requires_grad=False, pin_memory=False)
Parameters:
*size(int): Die Form des Tensors, z. B.3、(3, 4)、(2, 3, 4)usw.dtype(torch.dtype, optional): Gibt den Datentyp des Tensors an, Standard isttorch.float32。device(torch.device, optional): Gibt das Gerät an, auf dem der Tensor gespeichert wird.requires_grad(bool, optional): Gibt an, ob Gradienten berechnet werden sollen.pin_memory(bool, optional): Ob Pinned Memory verwendet werden soll.
Rückgabewert:
torch.Tensor: Gibt einen Null-Tensor zurück.
Anwendungsbeispiele
Im Folgenden finden Sie einigetorch.zerosBeispiele für die Verwendung der Funktion.
Beispiel 1: Erstellen eines 1D-Null-Tensors
Beispiel
# Erstelle einen Null-Tensor mit 5 Elementen
x = torch.zeros(5)
print(x)
Das Ausgabeergebnis ist:
tensor([0., 0., 0., 0., 0.])
In diesem Beispiel haben wir einen 1D-Null-Tensor mit 5 Elementen erstellt.
Beispiel 2: Erstellen eines 2D-Null-Tensors
Beispiel
# Erstelle einen 3x4-Null-Tensor (Matrix)
x = torch.zeros(3, 4)
print(x)
print(x.shape)
Das Ausgabeergebnis ist:
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
torch.Size([3, 4])
In diesem Beispiel haben wir einen 2D-Null-Tensor mit 3 Zeilen und 4 Spalten erstellt.
Beispiel 3: Erstellen eines Null-Tensors vom Integer-Typ
Beispiel
# Erstelle einen Null-Tensor vom Integer-Typ
x = torch.zeros(3, 3, dtype=torch.int32)
print(x)
print(x.dtype)
Das Ausgabeergebnis ist:
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
In diesem Beispiel haben wir einen Nulltensor erstellt, der die Gradientenberechnung erfordert und für lernbare Parameter beim Training neuronaler Netze verwendet wird.
Beispiel 5: Erstellen eines Nulltensors auf einem CUDA-Gerät
Beispiel
# Prüfen, ob CUDA verfügbar ist
if torch.cuda.is_available():
# Erstellen eines Nulltensors auf einem CUDA-Gerät
x = torch.zeros(3, 4, device='cuda')
print(x.device)
else:
print("CUDA ist nicht verfügbar")
Das Ausgabeergebnis ist:
cuda:0
In diesem Beispiel prüfen wir, ob CUDA verfügbar ist, und erstellen dann einen Nulltensor auf der GPU.
Unterschied zwischen torch.zeros und torch.zeros_like
torch.zeros(*size): Erstellt einen Nulltensor gemäß der angegebenen Größe.torch.zeros_like(input): Erstellt einen Nulltensor basierend auf der Form des Eingabetensors und behält dtype und device des Eingabetensors bei.
Anwendungsfälle
torch.zerosDie Funktion wird üblicherweise in den folgenden Szenarien verwendet:
- Initialisieren von Biasvektoren: In neuronalen Netzen werden Bias-Werte üblicherweise auf null initialisiert.
- Erstellen von Platzhaltern: Als Eingabe-Platzhalter in dynamischen Berechnungsgraphen.
- Arrays füllen: Erstellen Sie ein Array, das anfangs null ist, und füllen Sie später Daten ein.
- Mathematische Operationen: Bei Akkumulationsoperationen, bei denen null als Startwert benötigt wird.
Hinweise
- Standardmäßig,
torch.zeroses erzeugt einenfloat32Tensor vom Typ. - Wenn Sie einen Null-Tensor mit derselben Form wie ein anderer Tensor erstellen müssen, können Sie
torch.zeros_like()。 - Null-Tensoren werden häufig zur Initialisierung im Deep Learning verwendet, aber in einigen Fällen können sie zum Problem des verschwindenden Gradienten führen.
Andere Erweiterungen