[PYTHON] J'ai essayé d'exécuter le didacticiel TensorFlow avec des commentaires (_TensorFlow_2_0_Introduction pour les débutants)

URL de référence: https://www.tensorflow.org/tutorials/quickstart/beginner?hl=ja

Cible

Faites ce qui suit --Construire un réseau de neurones pour classer les images

Préparation du colis

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#confirmation de tensorflow ver
print(tf.__version__)
2.3.0

Préparez l'ensemble de données

Cette fois, j'utiliserai MNIST

Autres ensembles de données: https://www.tensorflow.org/api_docs/python/tf/keras/datasets?hl=JA

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()

#Convertir l'échantillon d'un entier en nombre à virgule flottante (convertir 0 à 255 en plage 0 à 1)
x_train, x_test = x_train / 255.0, x_test / 255.0
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz
11493376/11490434 [==============================] - 0s 0us/step
#Vérifiez la forme des données
print(x_train.shape)
print(x_test.shape)
(60000, 28, 28)
(10000, 28, 28)

Construire un modèle

Flux de processus

  1. 28 ✖️ 28 données 2D lissées en 1D

    tf.keras.layers.Flatten

input_shape = (28, 28) spécifie la forme des données d'entrée

  1. Définition de la couche cachée

    tf.keras.layers.Dense

128 est le nombre d'unités (nombre de neurones) activation = 'relu' spécifie la fonction d'activation ReLU Autres fonctions d'activation: https://www.tensorflow.org/api_docs/python/tf/keras/activations?hl=ja

  1. Définition du décrochage

Désactivez aléatoirement certains neurones pour éviter le surapprentissage 0,2 désactive 20%

  1. Définition de la couche entièrement connectée

Précisez 10 car il sera finalement classé en 10 classes

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

Prédictions pré-apprentissage

Calculez un score appelé «Logit» ou «Log Odds Ratio» pour chaque classe

Visualisez les données prédictives

Est-ce le numéro 5? ??

plt.figure()
plt.imshow(x_train[0] * 255, cmap="gray")
plt.grid(False)
plt.show()

output_14_0.png

Prédire avec le modèle de pré-formation

predictions = model(x_train[:1]).numpy()
predictions
array([[-0.68039566,  0.24756509,  0.03884459,  0.13278663, -0.09757528,
        -0.41739488, -0.07566899, -0.00817996,  0.17783645,  0.13316259]],
      dtype=float32)

Forme des données à saisir au moment de la prédiction

Notez que la forme ne correspond pas à x_train [0] Le modèle est conçu pour faire des prédictions sur un lot ou «rassembler» dans un échantillon.

print(x_train[0].shape)
print(x_train[:1].shape)
(28, 28)
(1, 28, 28)

Convertir le score en probabilité

predictions_probability = tf.nn.softmax(predictions).numpy()
print(predictions_probability)
#Obtenir l'indice de l'élément maximum à partir de la probabilité prédite
np.argmax(predictions_probability)
[[0.05172387 0.13082756 0.10618253 0.1166411  0.09264173 0.06728384
  0.09469356 0.10130493 0.12201592 0.11668495]]





1

Définition de la fonction de perte

Fonction de perte

Adopte l'entropie croisée

Autres fonctions de perte: https://www.tensorflow.org/api_docs/python/tf/keras/losses?hl=ja

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss_fn(y_train[:1], predictions).numpy()
2.6988351

Compiler le modèle

Définir un modèle d'apprentissage

--optimer: optimiseur --Cette fois, spécifiez ʻAdam --Autres algorithmes d'optimisation: https://www.tensorflow.org/api_docs/python/tf/keras/optimizers --loss: fonction de perte --Cette fois, spécifiezentropie croisée --metrics: éléments quantifiés lors de la formation et des tests --Cette fois, spécifiez ʻaccuracy

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

Apprentissage de modèle

Apprenez avec une époque de 5 Époque: combien de fois une donnée d'entraînement est entraînée à plusieurs reprises "

model.fit(x_train, y_train, epochs=5)
Epoch 1/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.2981 - accuracy: 0.9127
Epoch 2/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1435 - accuracy: 0.9572
Epoch 3/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1079 - accuracy: 0.9671
Epoch 4/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0875 - accuracy: 0.9728
Epoch 5/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.0750 - accuracy: 0.9768





<tensorflow.python.keras.callbacks.History at 0x7f12f819d5c0>

Évaluation des performances du modèle

Calculer la perte et la précision du modèle à l'aide des données de test verbose est une option pour afficher la barre de progression Ce modèle montre un taux de précision de 97% dans les données de test.

model.evaluate(x_test,  y_test, verbose=1)
313/313 [==============================] - 0s 1ms/step - loss: 0.0742 - accuracy: 0.9772





[0.07416515052318573, 0.9771999716758728]

Modifier la sortie du modèle

Lors de la sortie d'une probabilité au lieu d'une valeur numérique

probability_model = tf.keras.Sequential([
  model,
  tf.keras.layers.Softmax()
])
predictions = probability_model(x_test[:5])

#Visualisez et comparez les prédictions et les réponses correctes
for index, prediction in enumerate(predictions):
    print(f'Prédiction:{np.argmax(prediction)}Bonne réponse:{y_test[index]}')
    ax = plt.subplot(3, 3, index + 1)
    plt.imshow(x_test[index] * 255, cmap="gray")
    plt.show()

Prédiction: 7 Bonne réponse: 7

output_33_1.png

Prédiction: 2 Bonne réponse: 2

output_33_3.png

Prédiction: 1 Bonne réponse: 1

output_33_5.png

Prédiction: 0 Bonne réponse: 0

output_33_7.png

Prédiction: 4 Bonne réponse: 4

output_33_9.png

Recommended Posts

J'ai essayé d'exécuter le didacticiel TensorFlow avec des commentaires (_TensorFlow_2_0_Introduction pour les débutants)
J'ai essayé le tutoriel MNIST de tensorflow pour les débutants.
J'ai essayé le tutoriel TensorFlow 1er
J'ai essayé le tutoriel TensorFlow 2ème
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
Tutoriel TensorFlow J'ai essayé MNIST 3rd
J'ai essayé tensorflow pour la première fois
J'ai essayé d'exécuter TensorFlow
Réalisation du didacticiel TensorFlow MNIST pour débutants en ML
J'ai essayé le tutoriel TensorFlow (MNIST pour les débutants) sur Cloud9-Classification des images manuscrites-
J'ai couru le tutoriel TensorFlow avec des commentaires (premier réseau de neurones: le début du problème de classification)
J'ai essayé de porter le code écrit pour TensorFlow sur Theano
[Explication pour les débutants] Tutoriel TensorFlow MNIST (pour les débutants)
Tutoriel TensorFlow J'ai essayé CNN 4th
Tutoriel TensorFlow MNIST pour les débutants en ML
Tutoriel TensorFlow -MNIST pour les débutants en ML
J'ai essayé d'utiliser la méthode Seaborn fréquemment utilisée avec le moins d'arguments possible [pour les débutants]
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
J'ai essayé d'exécuter la partie DNN d'OpenPose avec le processeur Chainer
J'ai essayé d'implémenter Autoencoder avec TensorFlow
J'ai essayé de jouer avec l'image avec Pillow
J'ai essayé de "lisser" l'image avec Python + OpenCV
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé la décomposition matricielle non négative (NMF) avec TensorFlow
J'ai joué avec Floydhub pour le moment
J'ai essayé la programmation python pour la première fois.
J'ai essayé de "binariser" l'image avec Python + OpenCV
J'ai essayé d'exécuter faiss avec python, Go, Rust
J'ai essayé Mind Meld pour la première fois
J'ai essayé d'exécuter Deep Floor Plan avec Python 3.6.10.
J'ai essayé de jouer avec la calculatrice avec tkinter
J'ai essayé d'exécuter le didacticiel de détection d'objets en utilisant le dernier algorithme d'apprentissage en profondeur
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.1) sur le GPU de windows!
J'ai essayé d'entraîner la fonction péché avec chainer
[Français] Tutoriel officiel NumPy "NumPy: les bases absolues pour les débutants"
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé d'exécuter pymc
J'ai essayé Python sur Mac pour la première fois.
J'ai essayé d'exécuter l'application sur la plateforme IoT "Rimotte"
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
[Pour les professionnels de la compétition débutants] J'ai essayé de résoudre 40 questions AOJ "ITP I" avec python
J'ai essayé python pour la première fois avec heroku
J'ai essayé d'exécuter TensorFlow dans l'environnement AWS Lambda: Préparation
J'ai essayé de visualiser les données de course du jeu de course (Assetto Corsa) avec Plotly
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé un RPA simple pour me connecter avec du sélénium
J'ai essayé d'implémenter Grad-CAM avec keras et tensorflow
[Pour les débutants] Quantifier la similitude des phrases avec TF-IDF
AI Gaming Je l'ai essayé pour la première fois
J'ai essayé de trouver la classe alternative avec tensorflow
J'ai essayé de frapper l'API avec le client python d'echonest
J'ai essayé d'exécuter l'exemple de code du module Ansible
[Pour ceux qui veulent utiliser TPU] J'ai essayé d'utiliser l'API de détection d'objets Tensorflow 2
J'ai essayé d'exécuter le système de reconnaissance vocale hors ligne Julius avec python dans l'environnement virtuel Docker
J'ai essayé de trouver l'entropie de l'image avec python
[TensorFlow] Je souhaite maîtriser l'indexation pour Ragged Tensor