Wir haben die Beziehungen zwischen Python-Paketen, Modulen, Klassen, Methoden, Funktionen und Instanzen zusammengefasst. Zusammenfassend habe ich als Beispiel ein TensorFlow 2.0-Tutorial bereitgestellt.
Die Zielgruppe für diesen Artikel ist: -Ich möchte die Beziehungen zwischen Python-Paketen, Modulen, Klassen, Methoden, Funktionen und Instanzen überprüfen. ・ Ich bin neu in Python und verstehe die Struktur von Bibliotheken wie TensorFlow nicht.
Tens of Flow-Tutorial in diesem Artikel
Importieren Sie zunächst die Bibliothek
Struktur von TensorFlow (allgemeine Bibliothek)
Beispiele für Pakete, Module und Funktionen
Was sind Klassen, Methoden und Instanzen?
Beispiele für Klassen, Methoden und Instanzen
In diesem Artikel verwenden wir das folgende TensorFlow 2.0-Tutorial als Beispiel. TensorFlow Tutorial Der vollständige Code ist unten.
TensorFlow-Tutorial-Code
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
Um eine Bibliothek (wie TensorFlow) zu verwenden, müssen Sie die Bibliothek importieren. Vor dem Importieren der Bibliothek muss diese im Voraus installiert werden (Pip-Installation usw.). Da sich jedoch bereits viele Artikel in diesem Bereich befinden, werde ich sie weglassen. Das Folgende ist der Importteil von TensorFlow, der aus dem Tutorial extrahiert wurde.
Teil importieren
import tensorflow as tf
Dies bedeutet, dass ich den Programmcode zum Importieren (in diesem Fall Tensorflow) in das von mir ausgeführte Programm verwenden möchte (der Code des in Kapitel 1 gezeigten Tutorials). Bereiten Sie sich also vor (führen Sie es im Voraus aus). Es ist ein Bild, das Ihnen sagt, dass Sie es aufnehmen sollen. Obwohl es hier als tf geschrieben ist, ist es schwierig, Tensorflow jedes Mal einzugeben, wenn Sie die Funktion von TensorFlow verwenden. Daher erkläre ich nur, dass es ab dem nächsten Mal als tf abgekürzt wird.
Softwarebibliotheken sind nicht auf TensorFlow beschränkt, sondern bestehen aus den folgenden Elementen. -Paket: Eine Codegruppe, in der mehrere verschiedene "Module" gesammelt werden, wird als "Paket" bezeichnet. -Modul: Eine .py-Datei (Python-Programmcode), die "Klassen" und "Funktionen" enthält. -Klasse: Eine Gruppe von "Methoden" wird als "Klasse" bezeichnet. -Methode: Eine in der "Klasse" definierte Funktion. Der Unterschied zu einer normalen Funktion wird am Ende des Artikels erläutert. -Funktion: Eine Zusammenfassung einiger Verarbeitungen. Zum Beispiel eine Funktion, die 100-mal addiert, oder eine Funktion, die das Volumen aus der Länge von drei Seiten einer Box berechnet. -Instanz: Die Klasse erhält das Ziel, das tatsächlich verarbeitet werden soll. Es wird nachstehend ausführlich erläutert.
Wenn Sie nur das Obige lesen, werden Sie es nicht verstehen. Schauen Sie sich also bitte die folgende Abbildung an. Sie können die folgenden zwei Punkte sehen.
Lassen Sie uns als Beispiel die Funktion load_data von TensorFlow in einer hierarchischen Struktur in der folgenden Abbildung zeigen. Die Abbildungen links und rechts zeigen dasselbe.
Wie Sie aus dem (Beispiel) in der obigen Abbildung sehen können, ist load_data eine Funktion in mnist (Modul) in Datensätzen (Modul) in Keras (Modul) in Tensorflow (Paket). Und im Python-Programmcode wird durch. (Punkt) angezeigt, um zur unteren Hierarchie zu gelangen.
Der folgende Code zum Laden des Datensatzes für maschinelles Lernen stammt aus dem Lernprogramm. Zunächst wird dem Namen mnist ein Modul namens mnist in Datensätzen in Keras im Tensorflow zugewiesen. Mit anderen Worten, wir erstellen einen neuen Namen, mnist, und weisen mnist (Modul) im Tensorflow zu. In der zweiten Zeile wird der in der ersten Zeile erstellte Mnist mit. (Punkt) hinzugefügt und eine Funktion namens load_data () in der unteren Hierarchie verwendet. Übrigens bedeutet (), dass nichts als Argument angegeben wird.
Datenladeteil
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
Der obige Code hat also genau die gleiche Bedeutung wie der folgende Code.
Datenladeteil (wenn die mnist-Deklaration weggelassen wird)
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
Die Struktur der Module und Funktionen im Tensorflow, wie in der obigen Abbildung gezeigt, kann auf der folgenden offiziellen Website leicht untersucht werden. * HP ist Version 2.1. TensorFlow Core v2.1.0 Module: tf.keras.datasets
Wenn Sie die Seite tf.keras.datasets mit dem obigen Link öffnen, erhalten Sie die Informationen wie in der folgenden Abbildung gezeigt. Die Zahlen entsprechen den nachstehenden Abbildungen. ➀ Tensorflow Hierarchische Informationen aller Pakete und Module werden in einer Liste angezeigt. ➁ Die aktuell geöffneten tf.keras.datasets werden als Module angezeigt. ➂ Es zeigt, welche Art von Modulen sich in der Hierarchie eine Ebene unter den aktuell geöffneten tf.keras.datasets befinden.
Klassen, Methoden und Instanzen sind unvermeidliche Elemente für das Verständnis von TensorFlow, wenn Sie sich mit Python vertraut machen. Pakete, Module und Funktionen scheinen ausreichend zu sein, um die Verarbeitung eines Programms auf einfach zu lesende Weise zu verwalten. Es gibt jedoch Klassen, um die Idee der Objektorientierung in Python zu verwirklichen. Es gibt viele Artikel zur Objektorientierung, schauen Sie also bitte dort nach. Hier werde ich nur den Unterschied zwischen der Verwendung von Klassen, Methoden, Instanzen und Funktionen erläutern.
Erstens ist die Rolle einer Methode fast dieselbe wie die einer Funktion, und sie verarbeitet sie gemeinsam. Der einzige wesentliche Unterschied besteht darin, dass die Funktion alleine verwendet wird, während die Methode als Satz mit der Klasse verwendet wird, wie in der folgenden Abbildung gezeigt. Um die Methode verwenden zu können, muss so etwas wie ein Feld von der Klasse zur Instanz erstellt werden, in dem das von der Methode zu verarbeitende Ziel und die Daten nach der Verarbeitung gespeichert werden, wie in der obigen Abbildung gezeigt. Funktionen können andererseits Operationen direkt an gewöhnlichen Variablen ausführen.
Es sieht so aus, wenn es in Code geschrieben ist. Die Klasse ist auf den ersten Blick möglicherweise schwer zu verstehen. Lesen Sie daher bitte den Artikel zur Klassenbeschreibung.
Erstellen Sie eine Instanz aus einer Klasse und führen Sie eine Methode aus
Instance = Class(Klassenargumente) # クラスからインスタンスを作成しています。Klassenargumenteが空()Häufig.
Instance.method(Methodenargumente) #Die Methode wird für die erstellte Instanz verarbeitet.
Um die Methode verwenden zu können, muss daher (im Gegensatz zur Funktion) im Voraus eine Instanz aus der Klasse erstellt werden, sodass der folgende Code zu einem Fehler führt. Dies ist ein großer Unterschied zu einer Funktion. * Es gibt spezielle Methoden, aber ich denke, es ist in Ordnung, wenn Sie sie zuerst nicht kennen.
Führen Sie die Methode aus, ohne eine Instanz zu erstellen
Class.method(Methodenargumente) #Ein Fehler wird auftreten.
Die folgende Abbildung zeigt beispielhaft die Struktur der Sequential-Klasse von TensorFlow und die darunter liegenden Methoden zum Kompilieren, Anpassen und Auswerten. Die Abbildungen links und rechts zeigen dasselbe.
Im Code des folgenden Datenladeteils aus dem Lernprogramm ist Sequential eine Klasse, Kompilieren, Anpassen, Auswerten ist eine Methode und Modell ist Sequential ist eine Instanz. Erstellen Sie zunächst eine Instanz namens model mit einer Klasse namens Sequential und verwenden Sie für diese Instanz die Methoden compile (Definition der Lernmethode), fit (Modelllernen) und evaluieren (Modellbewertung) in der Hierarchie unterhalb der Klasse Sequential. Wir bearbeiten in Ordnung. * Übrigens sind tf.keras.layers.Flatten usw. in der Liste der sequentiellen Argumente Klassen und werden verwendet, um die Struktur des maschinellen Lernmodells zu definieren.
Beispiele für Klassen und Instanzen im TensorFlow-Lernprogramm
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test, verbose=2)
Die Struktur der Tensorflow-Klassen und -Methoden und ihre Argumente können ebenso wie Funktionen auf der folgenden offiziellen Website bestätigt werden. TensorFlow Core v2.1.0 Class Method: tf.keras.model.Sequential
Am Beispiel von TensorFlow habe ich versucht, die Bibliothek sehr grob zu organisieren. Ich hoffe, dieser Artikel hilft Ihnen beim Studium von Python. * Wenn Sie einen Fehler machen, teilen Sie uns dies bitte in den Kommentaren mit.