[PYTHON] Résumé de Tensorflow / Keras

Résumé de Tensorflow / Keras

Qu'est-ce que l'apprentissage par réseau neuronal? Les données de formation sont utilisées pour apprendre la combinaison de questions (entrée / données) et de réponses (sortie / étiquette). Et si vous utilisez des données de test comme entrée de ce réseau formé, En analysant la sortie obtenue, les performances du réseau neuronal peuvent être mesurées.

environnement d'utilisation

Environnement Python dans VScode utilisant la base d'Anaconda. Je voudrais en parler dans un autre article.

Utilisation principale de Keras

Il sera plus facile à comprendre si vous étudiez tout en donnant des exemples d'utilisation. Nous vous serions reconnaissants si vous pouviez examiner de plus près les commentaires du programme.

・ Comment former MNIST par apprentissage automatique général (pas CNN, RNN, LSTM)

mnist.py


#Importez la bibliothèque MNIST.
from keras.datasets import mnist
from keras import models
from keras import layers
from keras import optimizers
from keras import regularizers
from keras import utils

#Données d'entraînement(50000 pièces)Et tester les données(10000 pièces)Préparer.
#Cette fois, la méthode holdout est utilisée comme évaluation,
#Lorsque les données sont petites, il est nécessaire de considérer la vérification d'intersection de division k et la vérification d'intersection aléatoire de division k.
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
print(train_images.shape)
print(len(train_labels))
print(train_labels)
print(test_images.shape)
print(len(test_labels))
print(test_labels)

#Créez un modèle de pile linéaire.
network = models.Sequential()
#Dense fait référence à une couche étroitement couplée.
# add()Vous pouvez ajouter des couches avec.
#unités est le nombre de cellules.
# kernel_Le régulariseur empêche le sur-apprentissage en rendant les valeurs de poids du réseau régulières.
# kernel_La régularisation L1 et la régularisation L2 sont appliquées au régularisateur, mais l'une ou l'autre peut ou non être utilisée.
#l'activation est un type de fonction d'activation
# input_la forme est des tableaux de formes(*, 28*28).. Formellement difficile à comprendre.
#L'abandon force une partie des données à se propager de la couche immédiatement précédente à la couche immédiatement suivante à 0.
#Le surapprentissage peut être évité en ajoutant intentionnellement du bruit. Fondamentalement, il est placé dans la couche intermédiaire, mais ce n'est pas nécessaire.
network.add(layers.Dense(units=512,
                         kernel_regularizer=regularizers.l1_l2(l1=0.001, l2=0.001),
                         activation='relu',
                         input_shape=(28 * 28, ))) #Couche entièrement connectée
network.add(layers.Dropout(0.25)) #Couche d'abandon
network.add(layers.Dense(units=10,
                         activation='softmax')) #Couche Softmax

#Vous devez compiler pour vous préparer à former votre réseau.
#La fonction objectif peut être définie avec perte, cette fois l'erreur d'entropie croisée.
#Vous pouvez définir la méthode d'apprentissage avec un optimiseur, tel que SGD, momentum SGD, AdaGrad, RMSprop.
# metrics=['accuracy']Moyens de calculer le taux de réponse correct.
network.compile(optimizer='rmsprop',
                loss='categorical_crossentropy',
                metrics=['accuracy'])

#Prétraitez les données MNIST avant l'entraînement.
#La valeur du tenseur est 0 car il nécessite beaucoup de calcul.~Il est nécessaire de concevoir comme le mettre entre 1.
train_images = train_images.reshape((60000, 28 * 28))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28 * 28))
test_images = test_images.astype('float32') / 255
print(train_images.shape)
print(train_images)
print(test_images.shape)
print(test_images)

#production(étiquette)Est le nombre "0",1,2,3,~,Puisqu'il est divisé en "9", il est nécessaire de l'encoder avec une valeur de catégorie.
# [1, 0, 0, 0, 0, 0, 0, 0, 0]…0
# [0, 0, 1, 0, 0, 0, 0, 0, 0]…2
# [0, 0, 0, 0, 0, 1, 0, 0, 0]…6
#J'aime 0,1 représente un nombre.
train_labels = utils.to_categorical(train_labels)
test_labels = utils.to_categorical(test_labels)

#Maintenant que nous sommes prêts à entraîner le réseau, nous appelons la méthode d'ajustement pour adapter le modèle aux données d'entraînement.
#Entrez les données d'entrée et de sortie des données d'entraînement dans les arguments.
#epochs est le nombre de fois où toutes les données sont utilisées. Il montre combien de fois toutes les données sont utilisées, et un surapprentissage se produit si elles sont trop utilisées.
# batch_size indique combien de divisions les données d'entrée utilisées pour la formation doivent être divisées.
#Cette fois, c'est 50 000 données, donc 50 000 ÷ 100=À 500,"1"Apprenez avec 500 données 100 fois par époque. Je ne connais pas la raison détaillée.
network.fit(train_images, train_labels, epochs=10, batch_size=100)

#Réseau immédiatement formé(network)En utilisant,
#Valeur de perte dans les données de test(loss)Et taux de réponse correct(accuracy)Demander.
#Entrez les données d'entrée et de sortie des données de test dans l'argument.
test_loss, test_acc = network.evaluate(test_images, test_labels)
print('test_acc:', test_acc)
#Le résultat est, "# test_acc: 0.9795 ", mais la valeur varie en fonction de l'environnement.
#La raison en est que Keras choisit au hasard une valeur de départ lors de l'initialisation du réseau.

・ Comment former MNIST avec LSTM

mnist_1.py




Recommended Posts

Résumé de Tensorflow / Keras
Résumé des différentes opérations dans Tensorflow
Keras comme wrapper de Theano et TensorFlow
Résumé de l'utilisation de pyenv
Résumé des opérations sur les chaînes
Résumé des arguments Python
Résumé de la méthode d'essai
Résumé des méthodes de gestion des erreurs lors de l'installation de TensorFlow (2)
résumé lié à l'opération de fichier python
Résumé des opérations de liste Python3
2017.3.6 ~ 3.12 Résumé de ce que nous avons fait
Bibliothèque pratique TF-Slim de Tensorflow
Expérience de réglage des données Tensorflow
Résumé d'utilisation pratique de Flask
Résumé des types de distribution Linux
Résumé de l'utilisation de base de Pandas
Un bref résumé de Linux
J'ai touché Tensorflow et keras
Résumé des paramètres de connexion proxy
[Keras] inférence par lots d'arcface
MNIST (DCNN) avec Keras (backend TensorFlow)
Résumé de l'utilisation de pandas.DataFrame.loc
Résumé des connaissances de base de PyPy Partie 1
Résumé de l'implémentation de base par PyTorch
Installer une ancienne version de Tensorflow
Résumé de la relation de grattage (sélénium, pyautogui)
Un bref résumé de la collection Python
H29.2.27 ~ 3.5 Résumé de ce que j'ai fait
Résumé de l'enquête sur les développeurs Stack Overflow 2020
Résumé de l'utilisation de pyenv-virtualenv
Apprentissage automatique ③ Résumé de l'arbre de décision
[TensorFlow] [Keras] Construction d'un réseau neuronal avec Keras
Un résumé approximatif de l'histoire du système d'exploitation
Détournement de couches de modèle de keras entraînées
Prédiction de l'onde de péché avec keras
J'ai brièvement résumé les bits quantiques (débutants)
Résumé du comportement de conversion de go json
Tutoriel TensorFlow - Représentation vectorielle des mots (traduction)
Implémentation de Light CNN (Python Keras)
[Anaconda3] Résumé des commandes fréquemment utilisées
Résumé de l'utilisation de csvkit
[Pour les professionnels de la concurrence] Résumé du doublement
Résumé des index et des tranches Python
Résumé du traitement multi-processus du langage de script
[OpenCV; Python] Résumé de la fonction findcontours
4/22 prédiction de l'onde de péché avec keras
Version de juin 2017 pour créer un environnement Tensorflow / Keras sur une instance GPU d'AWS
[Python] Résumé de l'utilisation des pandas
2014/02/28 Résumé du contenu démo à #ssmjp, partie 1
Résumé des commandes fréquemment utilisées de django (débutant)
Résumé des méthodes fréquemment utilisées chez les pandas
Résumé des méthodes pour déterminer automatiquement les seuils
Garantie de reproductibilité avec les keras (à partir du 22 septembre 2020)
Résumé de la méthode de spécification des paramètres de distribution gamma
Résumé des commandes fréquemment utilisées dans matplotlib