Προγραμματισμός

Γνώση Υπολογιστών >> Προγραμματισμός >  >> Python Προγραμματισμός

Πώς να χρησιμοποιήσετε το PyTorch στην Python [Πλήρης Εκμάθηση]

## Ξεκινώντας με το PyTorch

Βήμα 1:Ρύθμιση περιβάλλοντος

* Εγκαταστήστε την Python και δημιουργήστε ένα εικονικό περιβάλλον

- Συνιστάται Python 3.6 ή νεότερη έκδοση.

- Δημιουργήστε ένα εικονικό περιβάλλον χρησιμοποιώντας «python -m venv venv» (ή «virtualenv venv» για παλαιότερες εκδόσεις Python) και ενεργοποιήστε το με «source venv/bin/activate» σε Linux/macOS ή «venv\Scripts\activate» στα Windows .

* Εγκαταστήστε το PyTorch

- Χρησιμοποιήστε το "pip" για να εγκαταστήσετε το PyTorch:"pip install torch torchvision".

- Για υποστήριξη GPU, εγκαταστήστε το "torch" με την επιλογή "-c pytorch".

Βήμα 2:Απλό παράδειγμα - Δημιουργία τανυστή

```python

φακός εισαγωγής

Δημιουργήστε έναν τανυστή από μια λίστα

tensor =torch.tensor([1, 2, 3])

Εκτυπώστε τον τανυστήρα

εκτύπωση (τανυστής)

Εκτυπώστε το σχήμα του τανυστή

εκτύπωση (tensor.shape)

Εκτυπώστε τον τύπο του τανυστή

print(tensor.dtype)

```

Παραγωγή:

```

τανυστής ([1, 2, 3])

φακός.Μέγεθος([3])

πυρσός.int64

```

Βήμα 3:Βασικές μαθηματικές πράξεις

```python

Στοιχεία προσθήκη

tensor =torch.tensor([1, 2, 3])

tensor2 =torch.tensor([4, 5, 6])

αποτέλεσμα =τανυστής + τανυστής2

εκτύπωση (αποτέλεσμα)

Έξοδος:τανυστής ([ 5, 7, 9])

Πολλαπλασιασμός πίνακα

matrix1 =torch.tensor([[1, 2], [3, 4]])

matrix2 =torch.tensor([[5, 6], [7, 8]])

αποτέλεσμα =torch.mm(matrix1, matrix2)

εκτύπωση (αποτέλεσμα)

Έξοδος:τανυστής([[19, 22], [43, 50]])

```

Βήμα 4:Χρήση GPU για ταχύτερους υπολογισμούς

```python

Ελέγξτε εάν το CUDA είναι διαθέσιμο

if torch.cuda.is_available():

# Μετακινήστε τους τανυστές στη GPU

συσκευή =torch.device("cuda")

tensor =tensor.to(συσκευή)

tensor2 =tensor2.to(συσκευή)

# Εκτελέστε λειτουργίες σε GPU

αποτέλεσμα =τανυστής + τανυστής2

# Μετακινήστε το αποτέλεσμα πίσω στην CPU εάν χρειάζεται

result =result.to("cpu")

εκτύπωση (αποτέλεσμα)

```

Εργασία με δεδομένα

Βήμα 1:Σύνολο δεδομένων

Το PyTorch παρέχει έναν βολικό τρόπο εργασίας με σύνολα δεδομένων χρησιμοποιώντας την κλάση «Σύνολο δεδομένων». Εδώ είναι ένα παράδειγμα:

```python

κλάση MyDataset(torch.utils.data.Dataset):

def __init__(self, data, labels):

self.data =δεδομένα

αυτο.ετικέτες =ετικέτες

def __getitem__(self, index):

επιστροφή self.data[index], self.labels[index]

def __len__(self):

επιστροφής φακός (self.data)

Δημιουργήστε μια παρουσία του συνόλου δεδομένων

σύνολο δεδομένων =MyDataset (δεδομένα, ετικέτες)

```

Βήμα 2:DataLoader

Χρησιμοποιήστε το «DataLoader» για αποτελεσματική φόρτωση δεδομένων σε παρτίδες κατά τη διάρκεια της εκπαίδευσης.

```python

Ορίστε το μέγεθος παρτίδας

batch_size =32

Δημιουργήστε ένα πρόγραμμα φόρτωσης δεδομένων

data_loader =torch.utils.data.DataLoader(σύνολο δεδομένων, batch_size=batch_size)

Επανάληψη στις παρτίδες

για παρτίδα στο data_loader:

# Εδώ, η παρτίδα θα είναι μια πλειάδα από «(δεδομένα, ετικέτες)».

```

Δημιουργία νευρωνικού δικτύου

Βήμα 1:Αρχικοποιήστε το δίκτυό σας

```python

εισαγωγή φακός.nn ως nn

Ορίστε ένα απλό νευρωνικό δίκτυο με 3 επίπεδα

κλάση MyNeuralNetwork(nn.Module):

def __init__(self):

super(MyNeuralNetwork, self).__init__()

self.layer1 =nn.Linear(784, 256) # Επίπεδο εισόδου

self.layer2 =nn.Linear(256, 128) # Hidden layer

self.layer3 =nn.Linear(128, 10) # Επίπεδο εξόδου

def forward(self, x):

x =x.view(x.shape[0], -1) # Ισοπεδώστε την είσοδο

x =F.relu(self.layer1(x)) # Συνάρτηση ενεργοποίησης (ReLU)

x =F.relu(self.layer2(x)) # Συνάρτηση ενεργοποίησης (ReLU)

x =F.log_softmax(self.layer3(x)) # Επίπεδο εξόδου με softmax

επιστροφή x

Εκκινήστε το δίκτυο

δίκτυο =MyNeuralNetwork()

```

Βήμα 2:Ορισμός λειτουργίας απώλειας και βελτιστοποίησης

```python

εισαγωγή φακός.optim ως optim

Ορίστε τη συνάρτηση απώλειας (εδώ χρησιμοποιούμε απώλεια διασταυρούμενης εντροπίας)

loss_fn =nn.CrossEntropyLoss()

Ορισμός βελτιστοποίησης (εδώ χρησιμοποιούμε στοχαστική κλίση κάθοδος)

optimizer =optim.SGD(network.parameters(), lr=0,001)

```

Βήμα 3:Εκπαιδεύστε το Δίκτυο

```python

Εκπαιδεύστε το δίκτυο για 10 εποχές

για την εποχή στο εύρος (10):

για παρτίδα στο data_loader:

# Λάβετε εισόδους και ετικέτες

εισροές, ετικέτες =παρτίδα

# Καθαρίστε τις κλίσεις

optimizer.zero_grad()

# Πάσα προς τα εμπρός

έξοδοι =δίκτυο(εισόδους)

# Υπολογίστε την απώλεια

απώλεια =loss_fn (εξόδους, ετικέτες)

# Πάσο προς τα πίσω και ενημέρωση βαρών

loss.backward()

optimizer.step()

print(f"Epoch {epoch + 1}:Loss:{loss.item()}")

```

Βήμα 4:Αξιολογήστε το Δίκτυο

```python

Αξιολογήστε την ακρίβεια δικτύου στο δοκιμαστικό σύνολο δεδομένων

με torch.no_grad():

σωστό =0

σύνολο =0

για παρτίδα στο test_data_loader:

εισροές, ετικέτες =παρτίδα

# Πάσα προς τα εμπρός

έξοδοι =δίκτυο(εισόδους)

# Λάβετε προβλέψεις

_, προβλεπόμενο =torch.max(outputs.data, 1)

# Αριθμός ακρίβειας ενημέρωσης

total +=labels.size(0)

σωστό +=(προβλεπόμενο ==ετικέτες).sum().item()

# Υπολογίστε την ακρίβεια

ακρίβεια =σωστό / σύνολο

print(f"Ακρίβεια στα δεδομένα δοκιμής:{accuracy * 100}%")

```

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα