PyTorch
PyTorch: Ein Deep-Learning-Framework, mit dem neuronale Netze berechnet werden können.
Wir haben das Verfahren bis zur Installation zusammengefasst, um die Umgebung von PyTorch zu erstellen. (Ich kann eines Tages eine einfache Verwendung schreiben)
pyenv + anaconda3-5.3.1 on CentOS Linux release 7.7.1908 (Core)
Ich installiere pyenv immer unter Linux und benutze anaconda 3-5.3.1. Wenn Sie sich die Seite der Kopffamilie ansehen, können Sie sie beispielsweise auch mit dem Befehl conda
eingeben
#Stabil auf der ursprünglichen Website(1.5), Linux, Conda, Python, None (Cuda-Optionen)Befehle angezeigt in
#Wenn Sie die neueste Version installieren möchten, sollten Sie den Befehl auf der ursprünglichen Site neu generieren
conda install pytorch torchvision cpuonly -c pytorch
PyTorch kommt herein. Wenn PyTorch jedoch in dieser Prozedur enthalten ist, wird zumindest in meiner Umgebung (CentOS Linux Release 7.7.1908 (Core)) die Umgebung von ipython und jupyter in anaconda zerstört. </ font> Dies ist das Ende der Geschichte. Deshalb habe ich nach einem anderen Weg gesucht.
pyenv + 3.8.2 on CentOS Linux release 7.7.1908 (Core)
Auf der Seite der Kopffamilie heißt es, dass Sie auch "pip" eingeben können. In diesem Fall habe ich beschlossen, eine einfache Python einzufügen und sie von dort mit pip
hinzuzufügen.
Wenn Sie nicht an dem Prozess interessiert sind und ihn nur installieren möchten, lesen Sie die endgültige Zusammenfassung dieses Unterabschnitts.
Setzen Sie pyenv (siehe 'Pyenv-Installation, um eine unendliche Anzahl von Artikeln zu finden, wie man es platziert) und setzen Sie es in Ihren PFAD (geschrieben in der unendlichen Anzahl von Artikeln). Als ich mit pyenv install --list
nachgesehen habe, war 3.8.2 das neueste in meinem pyenv, also habe ich mich entschieden, dies auszuwählen.
pyenv install 3.8.2
Wenn ich versuche, mit ** zu installieren, kann ich nicht installieren. ** Wenn ich den Fehler und die Warnung überprüfe (die Warnung wird auch unterstützt, solange die Kostenleistung dies zulässt, da eine spätere Neuerstellung mühsam ist), scheinen "zlib", "ssl", "bzip2", "realine", "SQlite" ausreichend zu sein. Es scheint keine zu geben. Vorher hätte ich "gcc", "g ++", "gfortran" einfügen sollen, aber möglicherweise waren bereits andere Apps / Bibliotheken enthalten. (Anaconda bezieht sich nicht auf die Systembibliotheken, daher frage ich mich, ob es bisher ein Problem mit der Installation gab. Ich bin mir nicht sicher.) Wenn ich versuche, diese Bibliotheken zu installieren und "yum install zlib" usw. zu versuchen, heißt es, dass es bereits existiert. .. Alles was Sie brauchen ist "zlib-dev". Dies gilt vor allem auch für andere Bibliotheken. Damit
yum install zlib-* #zlib-*Mit zlib-Entwickler einfügen etc.
yum install openssl-*
yum install bzip2-*
yum install readline-*
yum install sqlite-*
Danach, als ich den obigen Python-Installationsbefehl eingegeben habe, wurde er erfolgreich erstellt. Ich habe nur Anaconda verwendet, also dachte ich, ich würde nur eine komprimierte Binärdatei namens pyenv auspacken, aber ich baue sie. Die Tatsache, dass "* -dev" erforderlich ist, kann auch bedeuten, dass die statische Bibliothek zur Erstellungszeit verknüpft ist.
Nun, deshalb
#Stabil auf der ursprünglichen Website(1.5), Linux, Pip, Python, None (Cuda-Optionen)Befehle angezeigt in
#Wenn Sie die neueste Version installieren möchten, sollten Sie den Befehl auf der ursprünglichen Site neu generieren
pip install torch==1.5.0+cpu torchvision==0.6.0+cpu -f https://download.pytorch.org/whl/torch_stable.html
Ich fragte mich, ob PyTorch an einem sonnigen Tag hereinkommen würde, und es war Moos. Anscheinend können ctypes
nicht gut gelesen werden. Sie können versuchen, "ctypes" aus "python3" zu importieren und den Fehler "ModuleNotFoundError: Kein Modul mit dem Namen" _ctypes "" auszulösen. Da ctypes
eine ziemlich einfache Bibliothek ist, ist es möglich, dass sie nicht im Build 3.8.2 enthalten war, sodass etwas grundlegend falsch ist. Als ich verschiedene Fehlermeldungen überprüft habe, scheint es, dass "libffi" fehlt. Und die Geschichte wiederholt sich. libffi
selbst ist bereits installiert und alles was Sie brauchen ist libffi-dev
. damit,
yum install libffi-*
machen. Dies allein löst das Problem nicht. ** Diese Bibliothek muss beim Erstellen von Python verknüpft werden ** (schnell). Nachdem Sie es mit "pyenv uninstall 3.8.2" gelöscht haben, können Sie "ctypes" ordnungsgemäß mit "pyenv install 3.8.2" importieren. Bis zu diesem Punkt wird der oben geschriebene Installationsbefehl mit pip
von PyTorch übergeben.
Wenn Sie danach "jupyter", "matplotlib", "scipy" in "pip" einfügen, können Sie die meisten Funktionen verwenden. numpy
wird wahrscheinlich als Abhängigkeit bei der Installation von PyTorch berücksichtigt.
Ich habe über den Pfad der PyTorch-Installation geschrieben, der entdeckt und gelöst wurde. Aber wenn Sie die Antwort von Anfang an kennen
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
Sie sollten also eine minimale Entwicklungsumgebung mit PyTorch haben. (Wenn Sie gcc g ++ noch nicht installiert haben, müssen Sie möglicherweise auch "yum install" ausführen.)
Wenn Sie nicht mit Anaconda in Kontakt treten möchten, können Sie es in dem Verzeichnis, das PyTorch verwendet, auf "pyenv local 3.8.2" setzen. Wenn Sie in ein anderes Verzeichnis wechseln, wird die als global angegebene Umgebung erstellt.
pyenv + 3.8.2 on Ubuntu 19.10 Es gab verschiedene Missverständnisse, und wenn ich "pyenv 8.3.2" mit nur "sudo apt install libffi-dev" eingefügt habe,
WARNING: The Python bz2 extenWARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?sion was not compiled. Missing the bzip2 lib?
Ich habe einen Fehler wie. Im Fall von Ubuntu entspricht das obige "yum"
sudo apt install libbz2-dev
sudo apt install libreadline-dev
sudo apt install libsqlite3-dev
werden. Dadurch wird Python 3.8.2 installiert. Sie müssen also nur PyTorch, Jupyter, Matplotlib und Scipy mit pip
hinzufügen.
Referenzierte Site: [WARNUNG tritt auf, wenn versucht wird, Python 3.7.0 mit pyenv zu installieren - Automatisiertes Küchenprogramm-Memo-Blog │ CODE-LIFE](https://code-life.hatenablog.com/entry/pyenv- install-3.7.0)
Torch tensor
torch_array.shape
formentorch_array.size
Ein Beispiel für ein Modell mit zwei ausgeblendeten Ebenen. In nn.Linear
ist die Aktivierungsfunktion 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
Die Form des Arguments Fackeltensor ist wahrscheinlich seltsam.
In meinem Fall habe ich es mit numpy ndarray gemacht und es dann mit torch.from_numpy
in Fackeltensor geändert, und die Erklärung zum Zeitpunkt von numpy ndarray war seltsam. Insbesondere wurde mit (Ndim, 1) gemacht, was mit (Ndim,) gemacht werden sollte. Diese Transformation kann mit "x_array = x_array.reshape (Ndim, -1)" durchgeführt werden.
RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #2 'mat1' in call to _th_addmm
Wahrscheinlich ist der Typ des Eingangstensors keine 32-Bit-reelle Zahl, sondern eine 64-Bit-reelle Zahl, aber das Problem ist, dass die Lesefunktion nicht der 64-Bit-reellen Zahl entspricht.
Laut 2. PyTorch Tensol & Datentyp Cheet Sheet: Einführung in PyTorch- @ IT
Es gibt viele Typen, aber grundsätzlich wird nur 32bit torch.float oder torch.int verwendet.
Es scheint, dass. Ich denke, viele Numpys verwenden standardmäßig float64
, daher müssen Sie im Deklarationsteil explizit dtype = float32
hinzufügen oder es mitx_array = np.float32 (x_array)
in eine 32-Bit-reelle Zahl konvertieren. Gibt es.
Recommended Posts