158 lines
5.4 KiB
Plaintext
158 lines
5.4 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "b8eca612",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"## PyTorch - szybkie wprowadzenie"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "cb893bc6",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"### 1. Instalacja PyTorch\n",
|
||
|
"\n",
|
||
|
"Przed zainstalowaniem PyTorch, musimy najpierw zainstalować środowisko programistyczne języka Python:\n",
|
||
|
"\n",
|
||
|
"1. Aby zainstalować Pythona wygodnie jest to zrobić przez platformę <a href=\"anaconda.com/distribution/\">anaconda.com/distribution/</a> - instalatora zainstaluje Pythona, ale również inne ważne biblioteki, m.in. specyficzne dla głębokiego uczenia:\n",
|
||
|
"\n",
|
||
|
"<img width=600 src=\"images/im1.png\"/>\n",
|
||
|
"\n",
|
||
|
"2. Zainstaluj program przy użyciu pobranego instalatora: Wybierz opcję Add Anaconda to my PATH environment variable podczas instalacji, ponieważ ułatwi to wywoływanie Pythona, gdy wpiszemy python w wierszu poleceń/terminalu.\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"<img src=\"images/im2.png\"/>\n",
|
||
|
"\n",
|
||
|
"Następnie instalujemy środowisko *PyTorch*, co jest równie proste:\n",
|
||
|
"\n",
|
||
|
"3. Jeżeli nie posiadamy odpowiedniej dla CUDA karty graficznej instalujemy wersję na CPU\n",
|
||
|
"\n",
|
||
|
" *conda install pytorch::pytorch*\n",
|
||
|
"\n",
|
||
|
" W przeciwnym przypadku instalujemy pytorch dla CUDA (pytorch 2.2, cuda 11.8, cuda-toolkit 12.1)\n",
|
||
|
"\n",
|
||
|
" conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"4. Aby sprawdzić, czy PyTorch jest rzeczywiście zainstalowany w środowisku Python wydajemy polecenie\n",
|
||
|
"\n",
|
||
|
" *import torch*\n",
|
||
|
"\n",
|
||
|
" *print(torch.__version__)*\n",
|
||
|
"\n",
|
||
|
"\n",
|
||
|
"5. Aby sprawdzić czy pytorch jest zainstalowany w wersji z CUDA w środowisku Python wydajemy polecenie\n",
|
||
|
"\n",
|
||
|
" *import torch*\n",
|
||
|
" \n",
|
||
|
" *torch.cuda.is_available()*\n",
|
||
|
" "
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "c7d6b489",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"### 2. Colab\n",
|
||
|
"\n",
|
||
|
"Wszystkie przykłady (notatniki Jupyter) w tym kursie można wykonać w w zdalnym środowisku Colab (https://colab.research.google.com/), udostępniającym automatycznie dostęp do GPU.\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "aa2f0d1e",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"### 3. Podstawy programowania w PyTorch"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "markdown",
|
||
|
"id": "7b7d389f",
|
||
|
"metadata": {},
|
||
|
"source": [
|
||
|
"#### 3.1. Tensory\n",
|
||
|
"\n",
|
||
|
"Tensory są podstawowymi typami danych PyTorch. Tensor jest wielowymiarową macierzą\n",
|
||
|
"macierz podobna do tablic NumPy:\n",
|
||
|
"\n",
|
||
|
"- *Skalar* może być reprezentowany jako zerowymiarowy tensor.\n",
|
||
|
"- *Wektor* może być reprezentowany jako jednowymiarowy tensor.\n",
|
||
|
"- *Dwuwymiarowa macierz* może być reprezentowana jako dwuwymiarowy tensor.\n",
|
||
|
"- *Macierz wielowymiarowa* może być reprezentowana jako wielowymiarowy tensor.\n",
|
||
|
"\n",
|
||
|
"Obrazowo tensory wyglądają następująco:\n",
|
||
|
"\n",
|
||
|
"<img width=500 src=\"images/im4.png\"/>\n",
|
||
|
"\n",
|
||
|
"Na przykład, możemy uznać kolorowy obraz RGB za trójwymiarowy tensor wartości pikseli, ponieważ kolorowy obraz składa się z *wysokości x szerokości x 3 pikseli* - gdzie 'trzy' odpowiada kanałom RGB. Podobnie, obraz w skali szarości może być\n",
|
||
|
"można uznać za dwuwymiarowy tensor, ponieważ składa się on z pikseli *wysokości x szerokości*.\n",
|
||
|
"\n",
|
||
|
"Pod koniec tej sekcji dowiemy się, dlaczego tensory są przydatne i jak je inicjować, a także jak wykonywać różne operacje na tensorach, a także wykonywać różne operacje na tensorach. Będzie to służyć jako\n",
|
||
|
"jako podstawa, gdy będziemy badać wykorzystanie tensorów do budowy modelu sieci neuronowej w następnej sekcji.\n",
|
||
|
"\n",
|
||
|
"##### 3.1.1. Inicjalizacja tensora\n",
|
||
|
"\n",
|
||
|
"Tensory są przydatne na wiele sposobów. Oprócz używania ich jako podstawowych struktur danych\n",
|
||
|
"dla obrazów, jednym z bardziej znaczących zastosowań jest wykorzystanie tensorów do\n",
|
||
|
"do inicjalizacji wag łączących różne warstwy sieci neuronowej.\n",
|
||
|
"\n",
|
||
|
"W tej sekcji przećwiczymy różne sposoby inicjalizacji obiektu tensora. W tym celu uruchom notatnik\n",
|
||
|
"\n",
|
||
|
"<a href=\"Initializing_a_tensor.ipynb\">Initializing_a_tensor.ipynb</a> \n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"id": "d25a7541",
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": []
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "Python 3 (ipykernel)",
|
||
|
"language": "python",
|
||
|
"name": "python3"
|
||
|
},
|
||
|
"language_info": {
|
||
|
"codemirror_mode": {
|
||
|
"name": "ipython",
|
||
|
"version": 3
|
||
|
},
|
||
|
"file_extension": ".py",
|
||
|
"mimetype": "text/x-python",
|
||
|
"name": "python",
|
||
|
"nbconvert_exporter": "python",
|
||
|
"pygments_lexer": "ipython3",
|
||
|
"version": "3.9.13"
|
||
|
},
|
||
|
"latex_envs": {
|
||
|
"LaTeX_envs_menu_present": true,
|
||
|
"autoclose": false,
|
||
|
"autocomplete": true,
|
||
|
"bibliofile": "biblio.bib",
|
||
|
"cite_by": "apalike",
|
||
|
"current_citInitial": 1,
|
||
|
"eqLabelWithNumbers": true,
|
||
|
"eqNumInitial": 1,
|
||
|
"hotkeys": {
|
||
|
"equation": "Ctrl-E",
|
||
|
"itemize": "Ctrl-I"
|
||
|
},
|
||
|
"labels_anchors": false,
|
||
|
"latex_user_defs": false,
|
||
|
"report_style_numbering": false,
|
||
|
"user_envs_cfg": false
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 5
|
||
|
}
|