[PYTHON] Créez facilement des CNN avec Keras

Remarques sur la création d'un CNN avec Keras et sa classification à l'aide de l'ensemble de données CIFAR-10

Bibliothèque à importer

from keras.models import Sequential
from keras.layers.convolutional import Conv2D
from keras.layers.pooling import MaxPool2D
from keras.optimizers import Adam

from keras.layers.core import Dense, Activation, Dropout, Flatten
from keras.utils import plot_model
from keras.callbacks import TensorBoard

from keras.datasets import cifar10
from keras.utils import np_utils

Préparation des données

Télécharger CIFAR-10

(X_train, y_train),(X_test, y_test) = cifar10.load_data()

Est stocké.

Normaliser les valeurs de pixel

Normaliser chaque valeur de pixel dans la plage de 0-1

#Conversion de type en float
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
#Normaliser chaque valeur de pixel
X_train /= 255.0
X_test /= 255.0

Convertir en expression One-Hot

Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)

Conversion en représentation unique pour les classes nb_classes avec np_utils.to_categorical. Comme il y a 10 classes cette fois, nous définissons `` nb_classes = 10 ''.

Définition du modèle

Définir réellement le modèle,

#Définition du modèle
model = Sequential()

model.add(Conv2D(32,3,input_shape=(32,32,3)))
model.add(Activation('relu'))
model.add(Conv2D(32,3))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2,2)))

model.add(Conv2D(64,3))
model.add(Activation('relu'))
model.add(MaxPool2D(pool_size=(2,2)))

model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(1.0))

model.add(Dense(nb_classes, activation='softmax'))

adam = Adam(lr=1e-4)

model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=["accuracy"])

Définissez un objet modèle avec model.Sequential (). Il est possible d'ajouter des éléments avec model.add (). Le premier model.add () ajoute une couche de convolution 32x32 (noyau 3x3), et comme l'image d'entrée est une image RVB 32x32, la couche d'entrée est `ʻinput_shape (32,32,3). Il peut être défini par ``. Utilisez Activation () pour ajouter la fonction d'activation et Dense () pour ajouter la couche entièrement connectée. Définissez model.compile () pour obtenir Adam comme méthode d'optimisation, l'entropie croisée comme fonction d'erreur et la précision comme calcul.

Exécution de l'apprentissage

history = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=1, validation_split=0.1)

Vous pouvez apprendre avec model.fit (). Cette fois, nous définissons nb_epoch = 100 pour définir le nombre d'époques à 100. varidation_split est un paramètre qui utilise un certain pourcentage des données d'entraînement pour le test. Cette fois, 10% sont utilisés pour le test.

Visualisation de données

Visualisez les données avec Keras

#Tracer le modèle
plot_model(model, to_file='./model2.png')

Enregistrer le modèle entraîné

Étant donné que le modèle entraîné peut être enregistré sous forme de fichier, les données de configuration du modèle peuvent être enregistrées sous forme de fichier JSON et les données de poids du modèle peuvent être enregistrées sous forme de fichier HDF5.

json_string = model.to_json()
open(os.path.join('./', 'cnn_model.json'), 'w').write(json_string)

model.save_weights(os.path.join('./', 'cnn_model_weight.hdf5'))

Étant donné que Tensorflow est utilisé pour le back-end cette fois, Tensorboar peut également être utilisé ci-dessous. [Keras / TensorFlow] Utilisation de TensorBoard avec Keras

Résumé

Nous avons construit CNN avec Keras et classé 10 catégories avec CIFAR-10. De là, je vais essayer diverses choses.

Source Code https://github.com/sasayabaku/Machine-Learning/blob/master/Example_CNN/cifar10.ipynb

Les références

Keras Documentation Deep Learning commençant par Keras

Recommended Posts

Créez facilement des CNN avec Keras
Créez facilement des machines virtuelles avec Vagrant
Créez facilement un environnement de développement avec Laragon
Facilement démonisé avec Supervisor
Reconnaissance d'image avec keras
Tutoriel CIFAR-10 avec Keras
Faites facilement un bip avec python
LSTM multivarié avec Keras
Construisez python3.x avec pyenv
Créez facilement du HPC sur AWS avec un cluster AWS Cfn authentique
Créez le moteur de prédiction Keras AI en 1 heure avec GCP
Obtenez facilement la couverture du programme C avec les options de construction de configure!
Implémentation CNN avec juste numpy
Facilement sans serveur avec Python en utilisant Calice
Installation de Keras (utilisée par Anaconda)
Analyse de régression multiple avec Keras
Notes AutoEncodder avec Keras
Écrivez facilement if-elif avec lambda
Implémentation de word2vec avec Theano + Keras
Essayez d'exécuter CNN avec ChainerRL
Génération de phrases avec GRU (keras)
Réglage des paramètres Keras avec Keras Tuner
Créer un environnement python3 avec ubuntu 16.04
Construire un environnement python avec direnv
Utilisez Maxout + CNN avec Pylearn2
Implémentation d'un GAN efficace avec keras
Survivez à Noël avec CNN au niveau du personnage
J'ai essayé la reconnaissance de caractères manuscrits des caractères runiques avec CNN en utilisant Keras
Construisons git-cat avec Python
Créez facilement une infrastructure réseau et EC2 avec AWS CDK Python
Créez facilement un profil avec un décorateur
Reconnaissance d'image avec Keras + OpenCV
Créez facilement un modèle de traitement du langage naturel avec BERT + LightGBM + optuna
Construisez FastAPI + uvicorn + nginx avec docker-compose
Décrypter le code QR avec CNN
MNIST (DCNN) avec Keras (backend TensorFlow)
Prédire le Titanic de Kaggle avec Keras (Kaggle ⑦)
Créer un fichier deb avec Docker
Implémentez facilement des sous-commandes avec python click
Gérez facilement les listes avec python + sqlite3
Construire un environnement Mysql + Python avec docker
Changez facilement de virtualenv Pyenv avec peco
[AWS] Construire ECR avec AWS CDK
[TensorFlow] [Keras] Construction d'un réseau neuronal avec Keras
Construire mlpy avec python3.3 (64 bits) (Windows 64 bits)
Implémenter Keras LSTM feed forward avec numpy
Comparez DCGAN et pix2pix avec Keras
Implémentation Score-CAM avec keras. Comparaison avec Grad-CAM
Créer une application Web avec Django
Prédiction de l'onde de péché avec keras
Créer un environnement de notebook IPython avec boot2docker
Créer automatiquement la documentation Python avec Sphinx
Débutant RNN (LSTM) | Essayer avec Keras
Implémentation de Light CNN (Python Keras)
Publiez facilement sur Twitter avec Python 3
Écrire Reversi AI avec Keras + DQN
Construisez Vim avec MinGW. (+ lua, + python)