Deep Learning Java à partir de zéro Chapitre 2 Perceptron

table des matières

2.3 Implémentation de Perceptron

2.3.1 Mise en œuvre facile

Perceptron peut être implémenté en tant que fonction (méthode statique).

public static int AND(int x1, int x2) {
    double w1 = 0.5, w2 = 0.5, theta = 0.7;
    double tmp = x1 * w1 + x2 * w2;
    if (tmp <= theta)
        return 0;
    else
        return 1;
}
assertEquals(0, AND(0, 0));
assertEquals(0, AND(1, 0));
assertEquals(0, AND(0, 1));
assertEquals(1, AND(1, 1));

2.3.2 Introduction de pondérations et de biais

En utilisant ND4J, cela devient comme suit.

INDArray x = Nd4j.create(new double[] {0, 1});
INDArray w = Nd4j.create(new double[] {0.5, 0.5});
double b = -0.7;
assertEquals("[0.00,0.50]", Util.string(w.mul(x)));
assertEquals(0.5, w.mul(x).sumNumber().doubleValue(), 0.000005);
assertEquals(-0.19999999999999996, w.mul(x).sumNumber().doubleValue() + b, 0.000005);

2.3.3 Mise en œuvre par poids et biais

En utilisant la "méthode de pondération et de biais", les portes ET, NDND et OU peuvent être mises en œuvre comme suit.

public static int AND2(int x1, int x2) {
    INDArray x = Nd4j.create(new double[] {x1, x2});
    INDArray w = Nd4j.create(new double[] {0.5, 0.5});
    double b = -0.7;
    double tmp = w.mul(x).sumNumber().doubleValue() + b;
    return tmp <= 0 ? 0 : 1;
}

public static int NAND(int x1, int x2) {
    INDArray x = Nd4j.create(new double[] {x1, x2});
    INDArray w = Nd4j.create(new double[] {-0.5, -0.5});
    double b = 0.7;
    double tmp = w.mul(x).sumNumber().doubleValue() + b;
    return tmp <= 0 ? 0 : 1;
}

public static int OR(int x1, int x2) {
    INDArray x = Nd4j.create(new double [] {x1, x2});
    INDArray w = Nd4j.create(new double[] {0.5, 0.5});
    double b = -0.2;
    double tmp = w.mul(x).sumNumber().doubleValue() + b;
    return tmp <= 0 ? 0 : 1;
}
assertEquals(0, AND2(0, 0));
assertEquals(0, AND2(1, 0));
assertEquals(0, AND2(0, 1));
assertEquals(1, AND2(1, 1));
assertEquals(1, NAND(0, 0));
assertEquals(1, NAND(1, 0));
assertEquals(1, NAND(0, 1));
assertEquals(0, NAND(1, 1));
assertEquals(0, OR(0, 0));
assertEquals(1, OR(1, 0));
assertEquals(1, OR(0, 1));
assertEquals(1, OR(1, 1));

2.5 Perceptron multicouche

2.5.2 Implémentation de la porte XOR

Les portes XOR peuvent être montées en utilisant plusieurs couches de Perceptron.

public static int XOR(int x1, int x2) {
    int s1 = NAND(x1, x2);
    int s2 = OR(x1, x2);
    int y = AND2(s1, s2);
    return y;
}
assertEquals(0, XOR(0, 0));
assertEquals(1, XOR(1, 0));
assertEquals(1, XOR(0, 1));
assertEquals(0, XOR(1, 1));

Recommended Posts

Deep Learning Java à partir de zéro Chapitre 2 Perceptron
Deep Learning Java à partir de zéro Chapitre 1 Introduction
Deep Learning from scratch Java Chapter 4 Apprentissage des réseaux de neurones
Deep Learning Java à partir de zéro Chapitre 3 Réseau neuronal
Étudiez le Deep Learning à partir de zéro en Java.
Deep Learning Java from scratch 6.1 Mise à jour des paramètres
Deep Learning Java from scratch 6.3 Normalisation par lots
Deep Learning Java from scratch Chapter 5 Méthode de propagation de retour d'erreur
[Deep Learning from scratch] dans Java 3. Réseau neuronal
Deep Learning Java from scratch 6.2 Valeur initiale du poids
Configuration PC la plus rapide pour un apprentissage en profondeur à partir de zéro
[Apprentissage profond à partir de zéro] 2. Il n'existe pas de NumPy en Java.
La vie Java à partir de zéro
[Deep Learning from scratch] en Java 1. Pour le moment, différenciation et différenciation partielle
Java scratch scratch
Premiers pas pour l'apprentissage profond en Java
Efficace Java Chapitre 2
Pour l'apprentissage JAVA (2018-03-16-01)
Jour d'apprentissage Java 5
Effective Java Chapitre 6 34-35
Effective Java Chapitre 4 15-22
Java efficace Chapitre 3
java learning day 2
java learning day 1
Créer un environnement VS Code + WSL + Java + Gradle à partir de zéro
[Note] Créez un environnement Java à partir de zéro avec docker
Apprentissage rapide de Java "Introduction?" Partie 3 Parler de programmation
Appeler Java depuis JRuby
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Java Learning 2 (Apprenez la méthode de calcul)
apprentissage java (expression conditionnelle)
Mémo d'apprentissage Java (méthode)
Évaluer la source Java à partir de Java
Apprendre Java (1) - Hello World
Tutoriel Rails Chapitre 3 Apprentissage
Accédez à API.AI depuis Java
Mémo d'apprentissage Java (basique)
De Java à Ruby !!
Tutoriel Rails Chapitre 4 Apprentissage
Mémo d'apprentissage Java (interface)
Tutoriel Rails Chapitre 1 Apprentissage
Tutoriel Rails Chapitre 2 Apprentissage
Mémo d'apprentissage Java (héritage)
Java Performance Chapitre 3 Boîte à outils Java Performance
Enfant orienté objet!? J'ai essayé le Deep Learning avec Java (édition d'essai)
Apprendre des bases Manuel sur l'intelligence artificielle Chapitre 3 Problèmes de fin de chapitre
Apprendre des bases Manuel sur l'intelligence artificielle Chapitre 4 Problèmes de fin de chapitre
Apprendre des bases Manuel sur l'intelligence artificielle Chapitre 2 Problèmes de fin de chapitre
Voyons la Deep Java Library (DJL), une bibliothèque capable de gérer Deep Learning en Java, publiée par AWS.