[PYTHON] Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.

Einführung

Hallo! Ich bin ein super Anfänger, der mit O'Reillys Buch "Deep Learning from Grund" lernt. Da es eine große Sache ist, wollte ich aufzeichnen, was ich gelernt habe, also schreibe ich einen Artikel, der auch als Ausgabepraxis dient. Es tut mir leid, wenn es Fehler gibt. Es wäre sehr hilfreich, wenn Sie darauf hinweisen könnten.

Umgebung

Windows10 Python3.7.3 Jupyter Notebook

Was ist Perceptron?

Ein Algorithmus, der mehrere Signale empfängt und ein Signal ausgibt. Dieses Mal werden wir dieses Perceptron auf einfache Weise implementieren.

Implementierung eines UND-Gatters unter Verwendung der Schwelle & thgr;

Das UND-Gatter ist in der folgenden Tabelle dargestellt. Das von x1 und x2 empfangene Signal und das von y ausgegebene Signal. Wenn sowohl x1 als auch x2 1 sind, wird 1 ausgegeben.

x1 x2 y
0 0 0
1 0 0
0 1 0
1 1 1

Der Code. Das steht im Buch. w1 und w2 sind Gewichte. Setzen Sie den Wert, der durch Multiplizieren der Eingabe x1 und x2 mit den Gewichten w1 und w2 in tmp erhalten wird. Theta (θ) ist der Schwellenwert, der 1 zurückgibt, wenn tmp den Schwellenwert überschreitet, und 0, wenn dies nicht der Fall ist.

def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1

Die Ausgabe.

AND(0,0) #0 wird ausgegeben
AND(1,0) #0 wird ausgegeben
AND(0,1) #0 wird ausgegeben
AND(1,1) #1 wird ausgegeben

Ich habe die erwarteten Ergebnisse erzielt!

Implementierung eines NAND-Gatters unter Verwendung der Schwelle θ

Die NAND-Gatter sind in der folgenden Tabelle aufgeführt. Das von x1 und x2 empfangene Signal und das von y ausgegebene Signal. Wenn sowohl x1 als auch x2 1 sind, wird 0 ausgegeben.

x1 x2 y
0 0 1
1 0 1
0 1 1
1 1 0

Der Code. Gleich wie UND-Gatter, außer dass w1, w2 und Theta negativ sind.

def NAND(x1, x2):
    w1, w2, theta = -0.5, -0.5, -0.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1

Die Ausgabe.

NAND(0,0) #1 wird ausgegeben
NAND(1,0) #1 wird ausgegeben
NAND(0,1) #1 wird ausgegeben
NAND(1,1) #0 wird ausgegeben

Ich habe das erwartete Ergebnis!

Implementierung eines ODER-Gatters unter Verwendung der Schwelle θ

Das ODER-Gatter ist in der folgenden Tabelle dargestellt. Das von x1 und x2 empfangene Signal und das von y ausgegebene Signal. Wenn sowohl x1 als auch x2 0 sind, wird 0 ausgegeben.

x1 x2 y
0 0 0
1 0 1
0 1 1
1 1 1

Ich habe bei der Durchführung der Parameteradressierungsstrategie darüber nachgedacht. Der endgültige Code. Die Grundlagen sind dieselben wie bei AND- und NAND-Gattern, die Parameter werden jedoch erneut geändert.

def OR(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.4
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1

Die Ausgabe.

OR(0,0) #0 wird ausgegeben
OR(1,0) #1 wird ausgegeben
OR(0,1) #1 wird ausgegeben
OR(1,1) #1 wird ausgegeben

Ich habe die erwarteten Ergebnisse erzielt!

Das sind übrigens die toten Parameter. Bitte beziehen Sie sich nicht darauf. "w1, w2, Theta = 0,5, 0,5, -0,7" Alle wurden 1. "w1, w2, Theta = 0,5, 0,5, 0,5" Es war ein UND-Gatter lol

abschließend

Ich kann mir diesen Bereich immer noch leisten. (Es lebt nicht, danach wird es sehr schwierig ...)

Dieses Mal dachten die Leute über w1, w2 und Theta (θ) nach, aber beim maschinellen Lernen wie dem Tiefenlernen führt der Computer automatisch die Arbeit zur Bestimmung dieser Werte durch. In diesem Sinne möchte ich das nächste Mal Gewichte und Vorurteile einführen und das, was ich diesmal geschrieben habe, neu schreiben.

Danke fürs Lesen!

2020/6/8 Ich habe eine Titeländerung und einen Kommentar hinzugefügt.

Recommended Posts

Ich habe versucht, Perceptron Teil 1 [Deep Learning von Grund auf neu] zu implementieren.
Ich habe versucht, Dropout zu erklären
[Deep Learning von Grund auf neu] Ich habe versucht, Sigmoid Layer und Relu Layer zu implementieren
Ich habe versucht, Deep VQE zu implementieren
"Deep Learning from Grund" Memo zum Selbststudium (Teil 12) Deep Learning
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 16) Ich habe versucht, SimpleConvNet mit Keras zu erstellen
"Deep Learning from Grund" Memo zum Selbststudium (Nr. 17) Ich habe versucht, DeepConvNet mit Keras zu erstellen
Deep Learning von Grund auf neu
Ich habe versucht, tief zu lernen
[Deep Learning von Grund auf neu] Ich habe versucht, die Gradientenbestätigung auf leicht verständliche Weise zu erklären.
Deep Learning von Grund auf neu ① Kapitel 6 "Lerntechniken"
Deep Learning von Grund auf neu Kapitel 2 Perceptron (Memo lesen)
Ich habe versucht, Deep Learning zu implementieren, das nicht nur mit NumPy tiefgreifend ist
Deep Learning von Grund auf 1-3 Kapitel
Ich habe versucht, PCANet zu implementieren
Ich habe versucht, StarGAN (1) zu implementieren.
[Deep Learning von Grund auf neu] Ich habe die Affine-Ebene implementiert
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
[Python] [Verarbeitung natürlicher Sprache] Ich habe Deep Learning ausprobiert (auf Japanisch von Grund auf neu erstellt)
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
Ich habe versucht, die Strichzeichnung mit Deep Learning aus dem Bild zu extrahieren
Ich habe versucht, Cifar10 mit der SONY Deep Learning Library NNabla [Nippon Hurra] zu implementieren.
Ich habe versucht, Hanana Oba und Emiri Otani durch tiefes Lernen zu klassifizieren (Teil 2)
[Teil 4] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Teil 1] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
[Teil 3] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Ich habe versucht, die Erkennung von Anomalien durch spärliches Strukturlernen zu implementieren
Ich habe versucht, Pferderennen vorherzusagen, indem ich alles von der Datenerfassung bis zum tiefen Lernen getan habe
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Ich habe versucht, eine kontroverse Validierung zu implementieren
[Teil 2] Verwenden Sie Deep Learning, um das Wetter anhand von Wetterbildern vorherzusagen
Ich habe versucht, mit Theano tief zu lernen
Deep Learning Memo von Grund auf neu gemacht
Ich habe versucht, Realness GAN zu implementieren
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
"Deep Learning from Grund" Memo zum Selbststudium (Teil 8) Ich habe die Grafik in Kapitel 6 mit matplotlib gezeichnet
Ich habe versucht, Deep Learning mit Spark × Keras × Docker skalierbar zu machen
Lua-Version Deep Learning von Grund auf neu Teil 6 [Inferenzverarbeitung für neuronale Netze]
Ich habe versucht, Kanas handschriftliche Zeichenerkennung Teil 1/3 zuerst von MNIST zu machen
Ich habe versucht, PLSA in Python zu implementieren
Verbessertes Lernen, um von null bis tief zu lernen
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, Permutation in Python zu implementieren
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 7]
Tiefes Lernen von Grund auf neu (Vorwärtsausbreitung)
Tiefes Lernen / Tiefes Lernen von Grund auf 2-Versuchen Sie, GRU zu bewegen
Deep Learning / Deep Learning von Grund auf neu Kapitel 6 Memo
Ich habe versucht, PLSA in Python 2 zu implementieren
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 5]
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 6]
Ich habe versucht, ADALINE in Python zu implementieren
Bildausrichtung: von SIFT bis Deep Learning
Ich habe versucht, PPO in Python zu implementieren
Ich habe versucht, CVAE mit PyTorch zu implementieren
"Deep Learning von Grund auf neu" mit Haskell (unvollendet)
Deep Learning / Deep Learning von Grund auf neu Kapitel 7 Memo
[Windows 10] Aufbau einer "Deep Learning from Scratch" -Umgebung
[Deep Learning von Grund auf neu] Über die Optimierung von Hyperparametern
[Lernnotiz] Deep Learning von Grund auf neu gemacht [~ Kapitel 4]