%matplotlib inline
It’s a Python-based scientific computing package targeted at two sets of audiences:
Tensors Tensors are similar to Numpy's ndarrays, with the addtion being that Tensors can also be used on GPU to accelerate computing.
Pytorch ist ein Python-basiertes Produkt, das für Benutzer mit folgenden Zwecken entwickelt wurde: Es ist ein wissenschaftliches Berechnungspaket.
Tensoren
Tensole ähneln Numpys ndarrays, können jedoch auf der GPU berechnet werden.
from __future__ import print_function
import torch
An uninitialized matrix is declared, but does not contain definite known values before it is used. When an uninitialized matrix is created, whatever values were in the allocated memory at the time will appear as the initial values.
Construct a 5x3 matrix, uninitialized: Generieren Sie eine nicht initialisierte 5x3-Matrix
x = torch.empty(5, 3)
print(x)
Construct a randomly initialized matrix:
Generieren Sie eine zufällig initialisierte Matrix
x = torch.rand(5, 3)
print(x)
Construct a matrix filled zeros and of dtype long:
Generieren Sie eine lange Typmatrix, die mit Null initialisiert ist
x = torch.zeros(5, 3, dtype=torch.long)
print(x)
Construct a tensor directly from data:
Matrix aus Daten generieren
x = torch.tensor([5.5, 3])
print(x)
or create a tensor based on an existing tensor. These methods will reuse properties of the input tensor, e.g. dtype, unless new values are provided by user
Alternativ können Sie einen Tensor aus einem vorhandenen Tensor generieren. Diese Methoden verwenden die eingegebenen Tensoreigenschaften erneut, sofern vom Benutzer nicht anders angegeben. Beispiel: Typ
x = x.new_ones(5, 3, dtype=torch.double) # new_* methods take in sizes
print(x)
x = torch.randn_like(x, dtype=torch.float) # override dtype!
print(x) # result has the same size
Get its size:
Holen Sie sich die Größe des Tensors
print(x.size())
``torch.Size`` is in fact a tuple, so it supports all tuple operations.
There are multiple syntaxes for operations. In the following example, we will take a look at the addition operation.
Addition: syntax 1
Es gibt verschiedene Verteilungen in der Operation. Die Grammatik der Addition ist unten gezeigt.
Zusatz 1
y = torch.rand(5, 3)
print(x + y)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-3846198563ac> in <module>
----> 1 y = torch.rand(5, 3)
2 print(x + y)
NameError: name 'torch' is not defined
Addition: syntax 2
Zusatz 2
print(torch.add(x, y))
Addition: providing an output tensor as argument
Ergänzung: Übergeben Sie den Ausgangstensor als Argument
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
Addition: in-place
Ergänzung: Vor Ort
# adds x to y
y.add_(x)
print(y)
Any operation that mutates a tensor in-place is post-fixed with an ``_``. For example: ``x.copy_(y)``, ``x.t_()``, will change ``x``.
You can use standard NumPy-like indexing with all bells and whistles!
Sie können fast jede Numpy-Indizierung verwenden! !!
print(x[:, 1])
Resizing: If you want to resize/reshape tensor, you can use torch.view
:
Größe ändern: Wenn Sie die Form des Tensors ändern möchten, können Sie torch.view
verwenden:
x = torch.randn(4, 4)
y = x.view(16)
z = x.view(-1, 8) # the size -1 is inferred from other dimensions
print(x.size(), y.size(), z.size())
If you have a one element tensor, use .item()
to get the value as a
Python number
Verwenden Sie .item ()
, um Python-Zahlen von einem Tensor mit einem Element abzurufen
x = torch.randn(1)
print(x)
print(x.item())
Read later:
100+ Tensor operations, including transposing, indexing, slicing,
mathematical operations, linear algebra, random numbers, etc.,
are described
here <https://pytorch.org/docs/torch>
_.
** Später lesen **
Für mehr Informationen
https://pytorch.org/docs/torch
Converting a Torch Tensor to a NumPy array and vice versa is a breeze.
The Torch Tensor and NumPy array will share their underlying memory locations (if the Torch Tensor is on CPU), and changing one will change the other.
Converting a Torch Tensor to a NumPy Array ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Einfach zu konvertierender Brennertensor in Numpy Array
Fackeltensor und Numpy-Array teilen sich den Speicher (zeigerartig) Wenn Sie den Tensor ändern, ändert sich auch das Numpy-Array. Und umgekehrt
a = torch.ones(5)
print(a)
b = a.numpy()
print(b)
See how the numpy array changed in value.
Mal sehen, wie sich der Brennertensor ändert.
a.add_(1)
print(a)
print(b)
Converting NumPy Array to Torch Tensor ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ See how changing the np array changed the Torch Tensor automatically
Konvertieren Sie das Numpy-Array in den Brennertensor
import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
np.add(a, 1, out=a)
print(a)
print(b)
All the Tensors on the CPU except a CharTensor support converting to NumPy and back.
Tensors can be moved onto any device using the .to
method.
Alle Tensoren außer CharTensor unterstützen die Konvertierung in ein Numpy-Array.
Tensole können mit .to
auf jedes Gerät verschoben werden.
# let us run this cell only if CUDA is available
# We will use ``torch.device`` objects to move tensors in and out of GPU
if torch.cuda.is_available():
device = torch.device("cuda") # a CUDA device object
y = torch.ones_like(x, device=device) # directly create a tensor on GPU
x = x.to(device) # or just use strings ``.to("cuda")``
z = x + y
print(z)
print(z.to("cpu", torch.double)) # ``.to`` can also change dtype together!
Recommended Posts