Deep Learning-Modell erstellen

Unser neuronales Netzwerkmodell wird aus einem linearen Stapel von Schichten bestehen. Um ein solches Modell zu definieren, nennen wir dasSequential Funktion -

model = Sequential()

Eingabeebene

Wir definieren die Eingabeebene, die die erste Ebene in unserem Netzwerk ist, mithilfe der folgenden Programmanweisung:

model.add(Dense(512, input_shape=(784,)))

Dadurch wird eine Ebene mit 512 Knoten (Neuronen) mit 784 Eingangsknoten erstellt. Dies ist in der folgenden Abbildung dargestellt -

Beachten Sie, dass alle Eingangsknoten vollständig mit der Schicht 1 verbunden sind, dh jeder Eingangsknoten ist mit allen 512 Knoten der Schicht 1 verbunden.

Als nächstes müssen wir die Aktivierungsfunktion für die Ausgabe von Schicht 1 hinzufügen. Wir werden ReLU als unsere Aktivierung verwenden. Die Aktivierungsfunktion wird mit der folgenden Programmanweisung hinzugefügt:

model.add(Activation('relu'))

Als nächstes fügen wir mit der folgenden Anweisung einen Ausfall von 20% hinzu. Dropout ist eine Technik, mit der verhindert wird, dass das Modell überpasst.

model.add(Dropout(0.2))

Zu diesem Zeitpunkt ist unsere Eingabeebene vollständig definiert. Als nächstes werden wir eine versteckte Ebene hinzufügen.

Versteckte Ebene

Unsere verborgene Schicht wird aus 512 Knoten bestehen. Die Eingabe in die verborgene Ebene stammt von unserer zuvor definierten Eingabeebene. Alle Knoten sind wie im vorherigen Fall vollständig verbunden. Die Ausgabe der verborgenen Ebene geht an die nächste Ebene im Netzwerk, die unsere letzte und Ausgabeebene sein wird. Wir werden die gleiche ReLU-Aktivierung wie für die vorherige Schicht und einen Ausfall von 20% verwenden. Der Code zum Hinzufügen dieser Ebene ist hier angegeben -

model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))

Das Netzwerk in dieser Phase kann wie folgt visualisiert werden:

Als nächstes fügen wir die letzte Schicht zu unserem Netzwerk hinzu, die die Ausgabeschicht ist. Beachten Sie, dass Sie mit dem Code, der dem hier verwendeten ähnlich ist, beliebig viele versteckte Ebenen hinzufügen können. Das Hinzufügen weiterer Schichten würde das Netzwerk für das Training komplex machen. In vielen Fällen, wenn auch nicht in allen Fällen, wird ein deutlicher Vorteil aus besseren Ergebnissen erzielt.

Ausgabeschicht

Die Ausgabeebene besteht aus nur 10 Knoten, da wir die angegebenen Bilder in 10 verschiedene Ziffern klassifizieren möchten. Wir fügen diese Ebene mit der folgenden Anweisung hinzu:

model.add(Dense(10))

Da wir die Ausgabe in 10 verschiedene Einheiten klassifizieren möchten, verwenden wir die Softmax-Aktivierung. Bei ReLU ist die Ausgabe binär. Wir fügen die Aktivierung mit der folgenden Anweisung hinzu:

model.add(Activation('softmax'))

Zu diesem Zeitpunkt kann unser Netzwerk wie in der folgenden Abbildung dargestellt visualisiert werden.

Zu diesem Zeitpunkt ist unser Netzwerkmodell vollständig in der Software definiert. Führen Sie die Codezelle aus. Wenn keine Fehler vorliegen, wird auf dem Bildschirm eine Bestätigungsmeldung angezeigt (siehe Abbildung unten).

Als nächstes müssen wir das Modell kompilieren.