[PYTHON] Essayez d'implémenter XOR avec l'API fonctionnelle Keras

introduction

J'ai décidé de démarrer Keras pour de bon, j'ai donc écrit le code pour construire le modèle de prédiction de XOR. J'aimerais créer des modèles complexes tels que Graph Convolutional Networks à l'avenir, je vais donc commencer par l'API fonctionnelle.

La source

Comme ça. Sans la normalisation par lots, il était facile de tomber dans une solution locale, alors je l'ai ajoutée. Dans de nombreux cas, la couche finale était une couche linéaire, mais c'était un problème de classification 0, 1 et je n'étais pas convaincu, j'ai donc choisi la fonction sigmoïde. Le nombre d'unités dans les deux couches intermédiaires est fixé à huit.

sample.py


import tensorflow as tf
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.layers import Dense, Input, Dropout, BatchNormalization

import numpy as np


def main():
    x_input = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
    y_input = np.array([[0], [1], [1], [0]])

    input_tensor = Input(shape=(x_input.shape[1]))
    # x = Dense(units=32, activation="tanh", kernel_initializer='random_normal')(input_tensor)
    x = Dense(units=8, activation="relu", kernel_initializer='random_normal', use_bias=True)(input_tensor)
    x = BatchNormalization()(x)
    x = Dropout(0.1)(x)
    x = Dense(units=8, activation="relu", kernel_initializer='random_normal', use_bias=True)(x)
kernel_initializer='random_normal', use_bias=False)(x)
    output_layer = Dense(units=1, activation='sigmoid', kernel_initializer='random_normal', use_bias=False)(x)
    model = Model(input_tensor, output_layer)

    model.compile(loss='mse',  optimizer='sgd', metrics=['accuracy'])
    model.summary()

    #Apprentissage
    model.fit(x_input, y_input, nb_epoch=2000, batch_size=2, verbose=2)

    #Prévoir
    print(model.predict(np.array([[0, 0]])))
    print(model.predict(np.array([[1, 0]])))
    print(model.predict(np.array([[0, 1]])))
    print(model.predict(np.array([[1, 1]])))


if __name__ == "__main__":
    main()

Aperçu du modèle

_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
input_1 (InputLayer)         [(None, 2)]               0
_________________________________________________________________
dense (Dense)                (None, 8)                 24
_________________________________________________________________
batch_normalization (BatchNo (None, 8)                 32
_________________________________________________________________
dropout (Dropout)            (None, 8)                 0
_________________________________________________________________
dense_1 (Dense)              (None, 8)                 72
_________________________________________________________________
dense_2 (Dense)              (None, 1)                 8
=================================================================
Total params: 136
Trainable params: 120
Non-trainable params: 16

Résultat de la prédiction

[[0.09092495]]
[[0.9356866]]
[[0.90092343]]
[[0.08152929]]

en conclusion

Je l'ai essayé comme point de départ cette fois, mais j'aimerais essayer diverses choses telles que le réglage des paramètres et la visualisation.

Recommended Posts

Essayez d'implémenter XOR avec l'API fonctionnelle Keras
Essayez d'implémenter XOR avec PyTorch
Essayez d'implémenter RBM avec chainer.
Essayez d'implémenter le parfum avec Go
Modèle multi-entrées / multi-sorties avec API fonctionnelle
Débutant RNN (LSTM) | Essayer avec Keras
Essayez d'implémenter un robot Cisco Spark avec AWS Lambda + Amazon API Gateway (Python)
Essayez l'authentification OAuth Slack avec Flask (API Slack V2)
[AWS] Essayez de tracer API Gateway + Lambda avec X-Ray
Pré-traitement pour construire un modèle seq2seq à l'aide de l'API fonctionnelle de Keras
Essayez d'implémenter la mémoire associative par hop field network en Python
Essayez MNIST avec VAT (Virtual Adversarial Training) avec Keras
Essayez de créer une API RESTful avec MVC à l'aide de Flask 1.0.2
Construire un modèle seq2seq à l'aide de l'inférence API fonctionnelle de Keras
Essayez d'implémenter le LWMA de MetaTrader avec la fonction de filtre FIR de scipy
Essayez de gratter avec Python.
Tutoriel CIFAR-10 avec Keras
Essayez SNN avec BindsNET
Extruder avec l'API Fusion360
LSTM multivarié avec Keras
Essayez l'API C ++ de NNabla
Essayez la régression avec TensorFlow
Essayez d'implémenter le journal structuré gRPC facilement et simplement avec grpc_zap
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
CNN avec keras Essayez avec l'image que vous avez prise
(Pour les débutants) Essayez de créer une API Web simple avec Django
Analyse d'image avec l'API Object Detection à essayer en 1 heure