แแ แกแขแแขแแแจแ แแ แแแขแงแแแ, แแฃ แ แแแแ แฃแแแ แแแแงแแแแ แแแแฅแแแแแแชแแแแแแแแก แแแ แแแ 30 แฌแฃแแจแ, แจแแฅแแแแ แแแ แแฃแแ แฅแกแแแ แแแแแกแแฎแฃแแแแแก แแแแชแแแแแกแแแแก แแ แจแแแแแ แแแแแ แฅแกแแแแก แแแจแแแแ แแ แแคแแแฃแ แแ แแชแแกแแ แแ (GPU).
แแแ แแแ แ แแแจแ, แแแแแ แแแแแกแแแฆแแ แแ แ แ แแ แแก แแแ แแฃแแ แฅแกแแแ.
แฉแแแแก แจแแแแฎแแแแแจแ, แแก แแ แแก แแแแแแแขแแแฃแ แ แแแแแแ, แแกแแแ แ แแแแ แช แแแกแ แแ แแแ แแแฃแแ แแฃ แแแแ แแขแฃแ แแก แแแแกแแฎแแแ แแแ, แ แแแแแแช แแแแแฃแแแ แแแแแแแแฃแ แ แแแ แแฃแแ แฅแกแแแแแแก แแ แแแแแแแแแกแ แแ แคแฃแแฅแชแแแแแ แแแแก แแ แแแชแแแแ - แชแแชแฎแแแ แแ แแแแแแแแก แแแ แแฃแแ แฃแฏแ แแแแแแก แฅแกแแแแแ. แแก แแแแชแแคแชแแ แฌแแ แแแแจแแ แขแแแแจแ แแแแแแแแ แ แแ แแชแแกแแแแก แจแแกแฌแแแแแกแแก แแ แแ แแ แแชแแกแแแแก แแแแแแแ แแแแก แแชแแแแแแแกแแก.
แแแ แแฃแแ แฅแกแแแแแ แแ แแ แแก แแแแ แแแ แแแแแฃแแ แแ แกแแขแงแแแก แฉแแแฃแแแแ แแแ แแแแแแแ, แแกแแแ แแแ แฏแแจแแแแ. แกแฌแแแแแก แฃแแแ แ แแแ แแฃแแ แฅแกแแแแแแก แแ แ-แแ แแ แแแแแแ แ แฃแแแ แแขแแกแแแแ แขแ แแแแชแแฃแ แแแแแ แแแแแแแแ แจแแแแ แแแแ. แขแแฅแแแแฃแ แแ, แกแฌแแแแ แจแแแแแแ แแแแ แแแแแก แจแแ แแก แแแแจแแ แแแแก แแแแคแแชแแแแขแแแแก แแแแแแจแ. แขแ แแแแแแแก แแ แแชแแกแจแ แแแ แแฃแ แฅแกแแแก แจแแฃแซแแแ แแแแแชแแแก แ แแฃแแ แแแแแแแแแแฃแแแแแแ แจแแงแแแแแก แแ แแแแแแแแแแ แแแแแชแแแแแแก แจแแ แแก, แแกแแแ แแแแแฎแแ แชแแแแแก แแแแแแแแแแแ.
แแแแฅแแแฃแ แ แกแฌแแแแแก แแแแแกแแแ แแกแแ, แแแ แแฃแแ แฅแกแแแ แแ แแก แแแแฃแจแแก แแแแชแแแแแก แแแแแแแแแก, แแแกแแ แแแแแแชแแฃแแ แแแแแแแแก, แแแแกแขแแ แฃแแ แแแแแแแแแกแ แแ แกแฎแแ แแแแแแแแแก แแแแกแแแฃแแ แแแฃแแ แจแแแแฎแแแแ.
ะะฑะพััะดะพะฒะฐะฝะธะต
แแแ แแแ แ แแแจแ, แแแแแ แจแแแฎแแแแ แแฆแญแฃแ แแแแแแแก. แฉแแแ แแแญแแ แแแแ แกแแ แแแ แ แแแกแแ แแแงแแแแแฃแแ Linux แแแแ แแชแแฃแแ แกแแกแขแแแแ. แแแแฅแแแแแแชแแแแแแแแก แกแแกแขแแแแแแก แแฃแจแแแแแกแแแแก แกแแญแแ แ แแฆแญแฃแ แแแแแแ แกแแแแแแ แแซแแแแ แ แแ, แจแแแแแแ, แซแแแ แแ. แแแแแแแก, แแแกแแช แฎแแแ แแ แแฅแแก แแแ แแ แแแแฅแแแ, แแแ แฉแแแ แงแฃแ แแแฆแแแ แแแแฅแชแแแ แฆแ แฃแแแแแแแ แแ แแแแแแแ แแแแก แจแแแแแแแแแแแก. แแฅแแแ แจแแแแซแแแแ แแแแฅแแ แแแแ แกแแญแแ แ แกแแ แแแ แ แกแฌแ แแคแแ แแ แแแแแแฎแแแแ แแฎแแแแ แแแแแงแแแแแแก แแ แ.
แแ แแแฅแขแแแจแ, แกแแแแช แแฃแชแแแแแแแแ แแแ แแฃแแ แฅแกแแแแแแก แจแแฅแแแ, แแ แแแงแแแแ แแ แ-แแ แแ แ แฃแกแฃแแ แฆแ แฃแแแแแแแ แแ แแแแแแแ แแก แกแแ แแแ แแแก. แแแแแแแแ แแแแแแแแแ แฅแแ แแแแแแ แฆแ แฃแแแแแแ แกแแ แแแ แแแก แกแแแชแแแแฃแ แแ แแแแฅแแแแแแชแแแแแแแแกแแแแก แซแแแแ แ Tesla V100 แแ แแคแแแฃแแ แแ แแชแแกแแ แแแแ (GPU) NVIDIA-แกแแแ. แแแแแแ: แกแแ แแแ แแก แแแแแงแแแแแ GPU-แแ แจแแแซแแแแ แแงแแก แแแฏแแ แฃแคแ แ แแคแแฅแขแฃแ แ (แกแฌแ แแคแ) แแแแแแแแฃแ แ แฆแแ แแแฃแแแแแก แกแแ แแแ แแแ แจแแแแ แแแแ, แ แแแแแแช แแงแแแแแก CPU-แก (แชแแแแแ แชแแแขแ แแแฃแ แแแแฃแจแแแแแแก แแ แแแฃแแก) แแแแแแแแแแแกแแแแก. แแก แแแแฆแฌแแแ GPU แแ แฅแแขแแฅแขแฃแ แแก แแแฎแแกแแแแแแแแแแก แแแแ, แ แแแแแแช แฃแคแ แ แกแฌแ แแคแแ แฃแแแแแแแแแ แแแแแแแแแแก.
แฅแแแแแ แแฆแฌแแ แแแ แแแแแแแแแแแก แแแแกแแฎแแ แชแแแแแแแแ, แฉแแแ แจแแแแซแแแแ แจแแแแแแ แกแแ แแแ แ แ แแแแแแแแ แแฆแแก แแแแแแแแแแแจแ:
- SSD แแแกแแ 150 GB
- แแแแ แแขแแฃแแ แแแฎแกแแแ แแแ 32 GB
- Tesla V100 16 แแ แแ แแชแแกแแ แ 4 แแแ แแแแ
แฉแแแ แแแแแงแแแแ Ubuntu 18.04 แฉแแแแก แแแแ แแขแแ.
แแแ แแแแก แแแงแแแแแ
แแฎแแ แแแแแ แแแแแแแกแขแแแแ แแ แงแแแแแคแแ แ, แ แแช แกแแญแแ แแ แกแแ แแแ แแ แแฃแจแแแแแกแแแแก. แแแแแแแแ แฉแแแแ แกแขแแขแแ แซแแ แแแแแแ แแแแฌแงแแแแแแแแกแแ, แแ แแแกแแฃแแ แแ แ แแแแแแแแ แแฃแแฅแขแแ, แ แแแแแแช แแแแแแแก แกแแกแแ แแแแแ แแฅแแแแ.
แแแ แแแแก แแแงแแแแแแกแแก แแแแ แ แกแแแฃแจแแ แแแแแแแ แแ แซแแแแแแก แฎแแแแก แแแจแแแแแแ. แแแแฎแแแ แแแแแแ แฃแแแขแแกแแแ แแงแแแแแก Windows-แก, แ แแแแ แช แกแแแฃแจแแ OS. แกแขแแแแแ แขแฃแแ แแแแกแแแ แแ OS-แจแ แกแแกแฃแ แแแแก แขแแแแแก. แแแแขแแ, แฉแแแ แแแแแแแงแแแแแ แแแกแแฎแแ แฎแแแแ แฎแแแกแแฌแงแแก
ssh root@server-ip-or-hostname
แกแแ แแแ แแก-ip-แแ-แฐแแกแขแแก แกแแฎแแแแก แแแชแแแแ, แแแฃแแแแแ แแฅแแแแ แกแแ แแแ แแก IP แแแกแแแแ แแ แแ DNS แกแแฎแแแ. แจแแแแแแ, แจแแแงแแแแแ แแแ แแแ แแ แแฃ แแแแจแแ แ แฌแแ แแแขแแแฃแแแ, แฉแแแ แฃแแแ แแแแแฆแแ แแกแแแแกแ แจแแขแงแแแแแแแ.
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-74-generic x86_64)
ML แแแแแแแแแก แจแแแฃแจแแแแแแก แแแแแแ แ แแแ แแ แแก Python. แแ Linux-แแ แแแกแ แแแแแงแแแแแแก แงแแแแแแ แแแแฃแแแ แฃแแ แแแแขแคแแ แแแ
แแแแแ แแแแแแกแขแแแแ แแ แแก แฉแแแแก แกแแ แแแ แแ.
แฉแแแ แแแฌแงแแแ แแแแแแแแ แแแ แแแแแขแแก แแแแแฏแแ แแก แแแแแฎแแแแแ:
sudo apt-get update
แแแแแแกแขแแแแ แแ curl (แแ แซแแแแแแก แฎแแแแก แแ แแแ แแแ):
sudo apt-get install curl
แฉแแแแขแแแ แแแ Anaconda Distribution-แแก แฃแแฎแแแกแ แแแ แกแแ:
cd /tmp
curl โO https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh
แแแแแฌแงแแ แแแกแขแแแแชแแ:
bash Anaconda3-2019.10-Linux-x86_64.sh
แแแกแขแแแแชแแแก แแ แแชแแกแจแ แแฅแแแ แแแแแแฎแแแแแแ แแแแแแกแขแฃแ แแ แกแแแแชแแแแแ แฎแแแจแแแ แฃแแแแ. แฌแแ แแแขแแแฃแแ แแแกแขแแแแชแแแก แจแแแแแ แแฅแแแ แฃแแแ แแแฎแแ แแก:
Thank you for installing Anaconda3!
แแฎแแ แจแแแฅแแแ แแ แแแแแ แฉแแ แฉแ ML แแแแแแแแแก แแแแแแแแ แแแแกแแแแก; แฉแแแ แแแฃแจแแแแ แงแแแแแแ แแแแฃแแแ แฃแแแแแแ:
แฉแแ แฉแแก แแแแแงแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแแ แแแ แแแแแแแแ แแแแก แกแแฉแฅแแ แ แแ แแแแแแงแแแแ แแแ แแแกแขแ แฃแแแแขแแแ แกแขแแแแแ แขแฃแแ แแแแชแแแแแแกแแแแก.
แแ แแแแแแแแจแ แฉแแแ แแแแฃแจแแแแแ PyTorch-แแแ. แแแแแ แแแแแแกแขแแแแ แแ:
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch
แแฎแแ แฉแแแ แฃแแแ แแแแฃแจแแแ Jupyter Notebook, แแแแฃแแแ แฃแแ แแแแแแแแ แแแแก แแแกแขแ แฃแแแแขแ ML แกแแแชแแแแแกแขแแแแกแแแแก. แแก แกแแจแฃแแแแแแก แแแซแแแแ แแแฌแแ แแ แแแแ แแ แแแฃแงแแแแแแแแ แแแฎแแ แแแกแ แจแแกแ แฃแแแแแก แจแแแแแแแ. Jupyter Notebook แแแงแแแแ Anaconda-แก แแ แฃแแแ แแแแแกแขแแแแ แแแฃแแแ แฉแแแแก แกแแ แแแ แแ. แแฅแแแ แฃแแแ แแแฃแแแแจแแ แแแ แแแก แฉแแแแ แแแกแแขแแแแก แกแแกแขแแแแแแ.
แแแแกแแแแแก แฉแแแ แฏแแ แแแแฃแจแแแ Jupyter แกแแ แแแ แแ, แ แแแแแแช แแแฃแกแขแแแก แแแ แขแก 8080:
jupyter notebook --no-browser --port=8080 --allow-root
แจแแแแแ, แฉแแแแก Cmder แแแแกแแแจแ แแแแแ แแ แแ แฉแแแแ แแแก แแแฎแกแแแ (แแแแ แแแแแฃ - แแฎแแแ แแแแกแแแแก แแแแแแแ) แฉแแแ แแแแฃแแแแจแแ แแแแแ 8080 แแแ แขแแก แแแจแแแแแแ แกแแ แแแ แก SSH-แแก แกแแจแฃแแแแแแ:
ssh -L 8080:localhost:8080 root@server-ip-or-hostname
แ แแแแกแแช แจแแแแงแแแแ แแแ แแแ แแ แซแแแแแแก, แจแแแแแแแแแแแแแแ แแแฃแแแแก แฉแแแแก แแ แแฃแแแ แจแ Jupyter-แแก แแแกแแฎแกแแแแแ:
To access the notebook, open this file in a browser:
file:///root/.local/share/jupyter/runtime/nbserver-18788-open.html
Or copy and paste one of these URLs:
http://localhost:8080/?token=cca0bd0b30857821194b9018a5394a4ed2322236f116d311
or http://127.0.0.1:8080/?token=cca0bd0b30857821194b9018a5394a4ed2322236f116d311
แแแแแ แแแแแแแงแแแแ แแแฃแแ localhost-แแกแแแแก:8080. แแแแแแแแ แแ แกแ แฃแแ แแแ แแ แฉแแกแแแ แแฅแแแแ แแแแแแฃแขแแ แแก แแแแแแฃแ แ แแ แแฃแแแ แแก แแแกแแแแ แแแก แแแแจแ. Jupyter Notebook แแแแฎแกแแแแ.
แแแแแ แจแแแฅแแแแ แแฎแแแ แ แแแฃแแ: New - Notebook - Python 3.
แแแแแ แจแแแแแแฌแแแ แงแแแแ แแ แแแแแแแแแขแแก แกแฌแแ แ แแแฅแแแแแแ, แ แแแแแแช แฉแแแ แแแแแแแกแขแแแแ แแ. แแแแแ แจแแแแขแแแแ PyTorch แแแแแก แแแแแแแแ Jupyter-แจแ แแ แแแแฃแจแแแ แจแแกแ แฃแแแแ (แแแจแแแแแก แฆแแแแแ):
from __future__ import print_function
import torch
x = torch.rand(5, 3)
print(x)
แจแแแแแ แฃแแแ แแงแแก แแแแฎแแแแแแ แแกแแแ:
แแฃ แแฅแแแ แแแฅแแ แแกแแแแกแ แจแแแแแ, แแแจแแ แฉแแแ แงแแแแแคแแ แ แกแฌแแ แแ แแแแแแแแคแแแฃแ แแ แแ แแ แจแแแแแซแแแ แแแแแฌแงแแ แแแ แแฃแแ แฅแกแแแแก แแแแแแแแ แแแ!
แแแ แแฃแแ แฅแกแแแแก แจแแฅแแแ
แฉแแแ แจแแแฅแแแแ แแแ แแฃแ แฅแกแแแก แแแแแกแแฎแฃแแแแแก แแแแชแแแแแกแแแแก. แแแแฆแแ แแก แกแแคแฃแซแแแแ
แฉแแแ แแแแแแแงแแแแแ แกแแฏแแ แแ แฎแแแแแกแแฌแแแแ CIFAR10 แแแแแชแแแแ แแแแแก แฅแกแแแแก แแแกแแแแแแแแแแ. แแแก แแฅแแก แแแแกแแแ: "แแแแแแคแ แแแแแ", "แแแแฅแแแ", "แฉแแขแ", "แแแขแ", "แแ แแแ", "แซแแฆแแ", "แแแงแแงแ", "แชแฎแแแ", "แแแแ", "แกแแขแแแ แแ แแแแฅแแแ". CIFAR10-แจแ แกแฃแ แแแแแ แแ แแก 3x32x32, แแแฃ 3-แแ แฎแแแแ แคแแ แแแ แกแฃแ แแแแแ 32x32 แแแฅแกแแแแ.
แกแแแฃแจแแแ แแแแแแแงแแแแแ PyTorch-แแก แแแแ แจแแฅแแแแ แแแแแขแก แกแฃแ แแแแแแแ แแฃแจแแแแแกแแแแก - แฉแแ แแฆแแแแก แฎแแแแ.
แฉแแแ แแแแแแแแแแ แจแแแแแ แแแแแฏแแแก แแแแแแแแแแ แแแแ:
- แขแ แแแแแแแก แแ แขแแกแขแแ แแแแก แแแแแชแแแแ แแแแ แแแแก แฉแแขแแแ แแแ แแ แแแ แแแแแแแแ
- แแแ แแฃแแ แฅแกแแแแก แแแแแแ แขแแแ
- แฅแกแแแฃแ แ แขแ แแแแแแ แขแ แแแแแแแก แแแแแชแแแแแแ
- แฅแกแแแแก แขแแกแขแแ แแแ แขแแกแขแแก แแแแแชแแแแแแ
- แแแแแแแแ แแ แขแ แแแแแแ แแ แขแแกแขแแ แแแ GPU-แก แแแแแงแแแแแแ
แฉแแแ แจแแแแกแ แฃแแแแ แฅแแแแแ แแแชแแแฃแ แงแแแแ แแแแก Jupyter Notebook-แจแ.
CIFAR10 แฉแแขแแแ แแแ แแ แแแ แแแแแแแแ
แแแแแแแแ แแ แแ แแแฃแจแแแ แจแแแแแแ แแแแ Jupyter-แจแ:
import torch
import torchvision
import torchvision.transforms as transforms
transform = transforms.Compose(
[transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
shuffle=True, num_workers=2)
testset = torchvision.datasets.CIFAR10(root='./data', train=False,
download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=4,
shuffle=False, num_workers=2)
classes = ('plane', 'car', 'bird', 'cat',
'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
แแแกแฃแฎแ แฃแแแ แแงแแก:
Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz
Extracting ./data/cifar-10-python.tar.gz to ./data
Files already downloaded and verified
แแแแแ แแแแแแแแแแแแ แ แแแแแแแแ แกแแกแฌแแแแ แกแฃแ แแแ แขแแกแขแแ แแแแกแแแแก:
import matplotlib.pyplot as plt
import numpy as np
# functions to show an image
def imshow(img):
img = img / 2 + 0.5 # unnormalize
npimg = img.numpy()
plt.imshow(np.transpose(npimg, (1, 2, 0)))
plt.show()
# get some random training images
dataiter = iter(trainloader)
images, labels = dataiter.next()
# show images
imshow(torchvision.utils.make_grid(images))
# print labels
print(' '.join('%5s' % classes[labels[j]] for j in range(4)))
แแแ แแฃแแ แฅแกแแแแก แแแแแแ แขแแแ
แฏแแ แแแแแแฎแแแแ, แ แแแแ แแฃแจแแแแก แกแฃแ แแแแก แแแแชแแแแแก แแแ แแฃแแ แฅแกแแแ. แแก แแ แแก แแแ แขแแแ แฌแแ แขแแแแแแ แฌแแ แขแแแแแแ แฅแกแแแ. แแก แแฆแแแก แจแแงแแแแแก แแแแแชแแแแแก, แแแแแก แ แแแแแแแแ แคแแแแจแ แกแแแแแแแ แแ แจแแแแแ แกแแแแแแแ แแฌแแ แแแแแก แแแแแแแแแ แแแแแชแแแแแก.
แจแแแฅแแแแ แแกแแแแกแ แฅแกแแแ แฉแแแแก แแแ แแแแจแ:
import torch.nn as nn
import torch.nn.functional as F
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.conv1 = nn.Conv2d(3, 6, 5)
self.pool = nn.MaxPool2d(2, 2)
self.conv2 = nn.Conv2d(6, 16, 5)
self.fc1 = nn.Linear(16 * 5 * 5, 120)
self.fc2 = nn.Linear(120, 84)
self.fc3 = nn.Linear(84, 10)
def forward(self, x):
x = self.pool(F.relu(self.conv1(x)))
x = self.pool(F.relu(self.conv2(x)))
x = x.view(-1, 16 * 5 * 5)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = self.fc3(x)
return x
net = Net()
แฉแแแ แแกแแแ แแแแแกแแแฆแแ แแแ แแแแแ แแแแก แคแฃแแฅแชแแแก แแ แแแขแแแแแแขแแ แก
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
แฅแกแแแฃแ แ แขแ แแแแแแ แขแ แแแแแแแก แแแแแชแแแแแแ
แแแแแฌแงแแ แฉแแแแ แแแ แแฃแแ แฅแกแแแแก แแแ แฏแแจแ. แแแฎแแแ, แแแแแแแแแกแฌแแแแ, แ แแ แแ แแแแแก แแแจแแแแแก แจแแแแแ, แแแแญแแ แแแแแ แแแ แแแแฃแแ แแ แแแก แแแแแแ แกแแแฃแจแแแก แแแกแ แฃแแแแแแแ. 5 แฌแฃแแ แแแแญแแ แแ. แฅแกแแแแก แแแแแแแแแแก แแ แ แกแญแแ แแแแ.
for epoch in range(2): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
แฉแแแ แแแฆแแแ แจแแแแแ แจแแแแแก:
แฉแแแ แแแแแฎแแแ แฉแแแแก แแแฌแแ แแแแ แแแแแแก:
PATH = './cifar_net.pth'
torch.save(net.state_dict(), PATH)
แฅแกแแแแก แขแแกแขแแ แแแ แขแแกแขแแก แแแแแชแแแแแแ
แฉแแแ แแแแแ แฏแแจแแ แฅแกแแแ แขแ แแแแแแแก แแแแแชแแแแ แแแแ แแแแก แแแแแงแแแแแแ. แแแแ แแ แฉแแแ แฃแแแ แจแแแแแแฌแแแ, แแกแฌแแแแ แแฃ แแ แ แฅแกแแแแ แกแแแ แแแ แ แแแ.
แฉแแแ แแแแก แจแแแแแแฌแแแแ แแแแกแแก แแขแแแแขแแก แแ แแแแแแแ แแแแ, แ แแแแแกแแช แแแแแกแชแแแก แแแ แแฃแแ แฅแกแแแ แแ แจแแแแแแฌแแแแ, แแฃ แ แแแแแแแ แจแแแกแแแแแแแ แแก แกแแแแ แแแแก. แแฃ แแ แแแแแแ แกแฌแแ แแ, แฉแแแ แแแแแขแแแ แแแแฃแจแก แกแฌแแ แ แแ แแแแแแแแแก แกแแแจแ.
แแแแแ แแแฉแแแแแ แกแฃแ แแแ แขแแกแขแแก แแแแ แแแแแแ:
dataiter = iter(testloader)
images, labels = dataiter.next()
# print images
imshow(torchvision.utils.make_grid(images))
print('GroundTruth: ', ' '.join('%5s' % classes[labels[j]] for j in range(4)))
แแฎแแ แแแฎแแแแ แแแ แแฃแ แฅแกแแแก แแแแแฎแ แแก แ แ แแ แแก แแ แกแฃแ แแแแแจแ:
net = Net()
net.load_state_dict(torch.load(PATH))
outputs = net(images)
_, predicted = torch.max(outputs, 1)
print('Predicted: ', ' '.join('%5s' % classes[predicted[j]]
for j in range(4)))
แจแแแแแแแ แกแแแแแแ แแแ แแ แฉแแแก: แฅแกแแแแ แกแฌแแ แแ แแแแแชแแ แแแฎแ แกแฃแ แแแแแแ แกแแแ.
แแแแฎแแ, แ แแแแ แแฃแจแแแแก แฅแกแแแ แแแแ แแแแแชแแแแ แแแแแจแ.
correct = 0
total = 0
with torch.no_grad():
for data in testloader:
images, labels = data
outputs = net(images)
_, predicted = torch.max(outputs.data, 1)
total += labels.size(0)
correct += (predicted == labels).sum().item()
print('Accuracy of the network on the 10000 test images: %d %%' % (
100 * correct / total))
แ แแแแ แช แฉแแแก, แฅแกแแแแ แ แแฆแแช แแชแแก แแ แแฃแจแแแแก. แแฃ แแแ แจแแแแฎแแแแแ แแแแกแแแฆแแ แ แแแแกแแแ, แกแแแฃแกแขแ แแฅแแแแ 10%.
แแฎแแ แแแแฎแแ, แ แแแแ แแแแกแแแก แฃแแแ แแแแแขแแคแแชแแ แแแก แฅแกแแแ:
class_correct = list(0. for i in range(10))
class_total = list(0. for i in range(10))
with torch.no_grad():
for data in testloader:
images, labels = data
outputs = net(images)
_, predicted = torch.max(outputs, 1)
c = (predicted == labels).squeeze()
for i in range(4):
label = labels[i]
class_correct[label] += c[i].item()
class_total[label] += 1
for i in range(10):
print('Accuracy of %5s : %2d %%' % (
classes[i], 100 * class_correct[i] / class_total[i]))
แ แแแแ แช แฉแแแก, แฅแกแแแ แกแแฃแแแแแกแแ แแแแฅแแแแแแกแ แแ แแแแแแแก แแแแแขแแคแแชแแ แแแแกแแแแก: 71% แกแแแฃแกแขแ.
แแกแ แ แแ, แฅแกแแแ แแฃแจแแแแก. แแฎแแ แแชแแแแ แแแกแ แแแแฃแจแแแแ แ แแ แแคแแแฃแ แแ แแชแแกแแ แแ (GPU) แแแแแแแขแแแแ แแ แแแแฎแแ แ แ แจแแแชแแแแแ.
แแแ แแฃแแ แฅแกแแแแก แกแฌแแแแแแ GPU-แแ
แแแ แแแ แ แแแจแ, แแแแแแ แแแแฎแกแแแ แ แ แแ แแก CUDA. CUDA (Compute Unified Device Architecture) แแ แแก แแแ แแแแแฃแ แ แแแแแแแแแแ แแแแขแคแแ แแ, แ แแแแแแช แจแแแฃแจแแแแแฃแแแ NVIDIA-แก แแแแ แแ แแคแแแฃแแ แแแแฃแจแแแแแแก แแ แแแฃแแแแแ (GPU) แแแแแแ แแแแแแแแแแแกแแแแก. CUDA-แก แกแแจแฃแแแแแแ แแแแแแแแแ แแแก แจแแฃแซแแแแ แแแแแแ แแ แแแแฉแฅแแ แแ แแแแแแแแแแ แแแแแแแชแแแแ GPU-แแแแก แกแแแซแแแแ แแก แแแแแงแแแแแแ. แแก แแแแขแคแแ แแ แฃแแแ แแแแแกแขแแแแ แแแฃแแแ แฉแแแแก แแแแ แจแแซแแแแ แกแแ แแแ แแ.
แแแแแ แฏแแ แแแแแกแแแฆแแ แแ แฉแแแแ GPU, แ แแแแ แช แแแ แแแแ แฎแแแฃแแ cuda แแแฌแงแแแแแแแ.
device = torch . device ( "cuda:0" if torch . cuda . is_available () else "cpu" )
# Assuming that we are on a CUDA machine, this should print a CUDA device:
print ( device )
แฅแกแแแแก แแแแแแแแ GPU-แแ:
net.to(device)
แฉแแแ แแกแแแ แแแแแแฌแแแก แจแแงแแแแแก แแ แแแแแแแแก แแแแแแแแ แแแแแแฃแ แกแแคแแฎแฃแ แแ GPU-แแ:
inputs, labels = data[0].to(device), data[1].to(device)
แแแแแ แฎแแแแฎแแ แแแแแ แฏแแจแแ แฅแกแแแ GPU-แแ:
import torch.optim as optim
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)
for epoch in range(2): # loop over the dataset multiple times
running_loss = 0.0
for i, data in enumerate(trainloader, 0):
# get the inputs; data is a list of [inputs, labels]
inputs, labels = data[0].to(device), data[1].to(device)
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 2000 == 1999: # print every 2000 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 2000))
running_loss = 0.0
print('Finished Training')
แแแฏแแ แแ แฅแกแแแฃแ แ แขแ แแแแแแ แแแแฎแแแแแแ 3 แฌแฃแแ แแแแ แซแแแแ. แจแแแแฎแกแแแแแ, แ แแ แฉแแแฃแแแแ แแแ แแ แแชแแกแแ แแ แแแแแ แแขแแแ 5 แฌแฃแแก แแแแ แซแแแแ. แแแแกแฎแแแแแแ แแ แแ แแก แแแแจแแแแแแแแแ, แแก แแแแขแแ แฎแแแแ, แ แแ แฉแแแแ แฅแกแแแ แแ แช แแฃ แแกแ แแแแแ. แแแ แฏแแจแแกแแแแก แแแแ แแแกแแแแแแก แแแแแงแแแแแแกแแก แแแแแ แแแแ แกแฎแแแแแ GPU-แกแ แแ แขแ แแแแชแแฃแ แแ แแชแแกแแ แก แจแแ แแก.
แ แแแแ แช แฉแแแก, แแก แงแแแแแคแแ แแ. แ แแช แฉแแแ แแแแแฎแแ แฎแแ:
- แฉแแแ แจแแแฎแแแแ แ แ แแ แแก GPU แแ แจแแแแ แฉแแแ แกแแ แแแ แ, แ แแแแแแแช แแก แแ แแก แแแแแกแขแแแแ แแแฃแแ;
- แฉแแแ แจแแแฅแแแแแ แแ แแแ แแแฃแแ แแแ แแแ แแแ แแฃแแ แฅแกแแแแก แจแแกแแฅแแแแแแ;
- แฉแแแ แจแแแฅแแแแแ แกแฃแ แแแแก แแแแชแแแแแก แแแ แแฃแแ แฅแกแแแ แแ แแแแแ แฏแแจแแ แแแ;
- แฉแแแ แแแแแแแแ แแ แฅแกแแแแก แขแ แแแแแแ GPU-แก แแแแแงแแแแแแ แแ แแแแแฆแแ แกแแฉแฅแแ แแก แแ แแ.
แกแแแแแแแแแแ แแฃแแแกแฃแฎแแ แแแแฎแแแแก แแแแแแขแแ แแแจแ.
แฌแงแแ แ: www.habr.com