PyTorch
PyTorch: Un cadre d'apprentissage en profondeur qui peut calculer les réseaux de neurones.
Nous avons résumé la procédure jusqu'à l'installation pour construire l'environnement de PyTorch. (Je peux écrire un usage simple un jour)
pyenv + anaconda3-5.3.1 on CentOS Linux release 7.7.1908 (Core)
J'installe toujours pyenv sur Linux et j'utilise anaconda 3-5.3.1. En regardant la page de la famille principale, il semble que vous pouvez également entrer en utilisant la commande conda
, par exemple
#Stable sur le site d'origine(1.5), Linux, Conda, Python, None (options de cuda)Commandes affichées dans
#Si vous souhaitez installer la dernière version, vous devez régénérer la commande sur le site d'origine
conda install pytorch torchvision cpuonly -c pytorch
PyTorch entre. Cependant, si PyTorch est inclus dans cette procédure, au moins dans mon environnement (CentOS Linux version 7.7.1908 (Core)), l'environnement d'ipython et de jupyter dans anaconda sera détruit. </ font> C'est la fin de l'histoire. Par conséquent, j'ai cherché un autre moyen.
pyenv + 3.8.2 on CentOS Linux release 7.7.1908 (Core)
En regardant la page de la famille principale, il est dit que vous pouvez également entrer pip
. Dans ce cas, j'ai décidé de mettre un simple python et de l'ajouter avec pip
à partir de là.
Si vous n'êtes pas intéressé par le processus et que vous souhaitez simplement l'installer, accédez au résumé final de cette sous-section.
Mettez pyenv (voir'pyenv installation 'pour trouver un nombre infini d'articles pour savoir comment le mettre) et mettez-le dans votre PATH (écrit dans le nombre infini d'articles). Quand j'ai vérifié avec pyenv install --list
, la version 3.8.2 était la dernière de mon pyenv, j'ai donc décidé de la sélectionner.
pyenv install 3.8.2
Lorsque j'essaye d'installer avec **, je ne peux pas installer. ** Si vous vérifiez l'erreur et l'avertissement (il est trop paresseux pour reconstruire plus tard, donc l'avertissement sera pris en charge tant que les performances de coût le permettent), il semble que zlib
, ssl
, bzip2
, realine
, SQlite
soient suffisants. Il semble y avoir non. Avant cela, j'aurais dû inclure gcc
,g ++
, gfortran
, mais il se peut que d'autres applications / bibliothèques aient déjà été incluses. (Anaconda ne fait pas référence aux bibliothèques système, donc je me demande s'il y a eu un problème avec l'installation jusqu'à présent. Je ne suis pas sûr.) Quand j'essaye d'installer ces bibliothèques et d'essayer yum install zlib
etc., il dit qu'il existe déjà. .. Donc, tout ce dont vous avez besoin est zlib-dev
. Cela est également vrai pour les autres bibliothèques. Alors
yum install zlib-* #zlib-*Avec zlib-Insérer dev etc.
yum install openssl-*
yum install bzip2-*
yum install readline-*
yum install sqlite-*
Après cela, lorsque j'ai mis la commande d'installation python ci-dessus, elle a été construite avec succès. Je n'ai utilisé que anaconda, alors j'ai pensé que je déballais juste un binaire compressé appelé pyenv, mais je le construis. De plus, le fait que «* -dev» soit requis peut signifier que la bibliothèque statique est liée au moment de la construction.
Eh bien, c'est pourquoi
#Stable sur le site d'origine(1.5), Linux, Pip, Python, None (options de cuda)Commandes affichées dans
#Si vous souhaitez installer la dernière version, vous devez régénérer la commande sur le site d'origine
pip install torch==1.5.0+cpu torchvision==0.6.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
Je me suis demandé si PyTorch entrerait par une journée ensoleillée, et c'était de la mousse. Apparemment, «ctypes» ne peut pas être lu correctement. En tant que test, vous pouvez lancer ʻimport ctypes depuis
python3avec l'erreur
ModuleNotFoundError: No module named'_ctypes'. Puisque
ctypesest une bibliothèque assez basique, il est possible qu'elle n'ait pas été incluse dans la version 3.8.2, donc quelque chose ne va pas du tout. Lorsque j'ai vérifié divers messages d'erreur, il semble que
libffimanque. Et l'histoire se répète.
libffi lui-même est déjà installé et tout ce dont vous avez besoin est
libffi-dev`. alors,
yum install libffi-*
faire. En fait, cela seul ne résout pas le problème, ** cette bibliothèque doit être liée lors de la construction de python ** (rapidement). Ainsi, après l'avoir supprimé avec pyenv uninstall 3.8.2
, vous pouvez importer ctypes
correctement avec pyenv install 3.8.2
. Jusqu'à ce point, la commande d'installation avec pip
de PyTorch écrite ci-dessus passera.
Après cela, si vous mettez jupyter
, matplotlib
, scipy
dans pip
, vous pouvez utiliser la plupart des fonctions. numpy
est probablement inclus en tant que dépendance lors de l'installation de PyTorch.
J'ai écrit sur le chemin d'installation de PyTorch qui a été découvert et résolu. Mais si tu connais la réponse depuis le début
yum install zlib-* openssl-* bzip2-* readline-* sqlite-* libffi-*
pip install torch==1.5.0+cpu torchvision==0.6.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
pip install jupyter
pip install matplotlib
pip install scipy
Donc, vous devriez avoir un environnement de développement minimum avec PyTorch. (Pour gcc g ++, si vous ne l'avez pas encore installé, vous devrez peut-être également yum install
.)
Si vous n'aimez pas entrer en contact avec Anaconda, vous pouvez le définir sur pyenv local 3.8.2
dans le répertoire qui utilise PyTorch. Si vous passez à un autre répertoire, l'environnement spécifié comme global sera créé.
pyenv + 3.8.2 on Ubuntu 19.10
Il y a eu divers malentendus, et si je faisais pyenv 8.3.2
avec seulement sudo apt install libffi-dev
inséré,
WARNING: The Python bz2 extenWARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?sion was not compiled. Missing the bzip2 lib?
J'ai eu une erreur comme ça. Dans le cas d'Ubuntu, le «yum» ci-dessus correspond à
sudo apt install libbz2-dev
sudo apt install libreadline-dev
sudo apt install libsqlite3-dev
devenir. Cela installera python 3.8.2, donc tout ce que vous avez à faire est d'ajouter PyTorch, jupyter, matplotlib et scipy dans pip
.
Site référencé: [AVERTISSEMENT se produit lors de la tentative d'installation de Python 3.7.0 avec pyenv - Blog mémo de programmation de cuisine automatisée │ CODE-LIFE](https://code-life.hatenablog.com/entry/pyenv- install-3.7.0)
Torch tensor
--Get forme avec torch_array.shape
torch_array.size
Un exemple de modèle avec deux couches cachées. Dans nn.Linear
, la fonction d'activation est ReLU.
import torch
import torch.nn as nn
import torch.nn.functional as F
class Model_2L(nn.Module):
def __init__(self, input_size, output_size, ndim1 = 10, ndim2=10):
super(Model_2L,self).__init__()
self.n1 = ndim1
self.n2 = ndim1
self.fc1 = nn.Linear(input_size, self.n1)
self.fc2 = nn.Linear(self.n1, self.n2)
self.fc3 = nn.Linear(self.n2, output_size)
def forward(self, x):
x = self.fc1(x)
x = self.fc2(F.relu(x))
x = self.fc3(F.relu(x))
return x
model = Model_3L(input_size, output_size)
RuntimeError: size mismatch, m1: [1 x 15], m2: [1 x 1] at /pytorch/aten/src/TH/generic/THTensorMath.cpp:41
La forme de l'argument torche tensory est probablement étrange.
Dans mon cas, je l'ai fait avec numpy ndarray, puis je l'ai changé en torch tensor avec torch.from_numpy
, et la déclaration au moment de numpy ndarray était étrange. Plus précisément, ce qui devrait être fait avec (Ndim, 1) a été fait avec (Ndim,). Cette transformation peut être effectuée avec x_array = x_array.reshape (Ndim, -1)
.
RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #2 'mat1' in call to _th_addmm
Probablement, le type du tenseur d'entrée n'est pas un nombre réel de 32 bits, c'est un nombre réel de 64 bits, mais le problème est que la fonction de lecture ne correspond pas au nombre réel de 64 bits.
Selon 2nd PyTorch Tensol & Data Type Cheet Sheet: Introduction to PyTorch- @ IT
Il existe de nombreux types, mais en gros, seuls 32 bits torch.float ou torch.int sont utilisés.
Il paraît que. Je pense que de nombreux numpys utilisent float64
par défaut, vous devez donc ajouter explicitement dtype = float32
dans la partie déclaration ou le convertir en un nombre réel 32 bits avecx_array = np.float32 (x_array)
. y a-t-il.
Recommended Posts