[PYTHON] J'ai essayé tensorflow pour la première fois

Comme le titre l'indique, j'ai essayé tensorflow pour la première fois et j'ai eu du mal à créer un environnement, alors je l'ai écrit. Qiita C'est la première fois que j'écris, donc l'explication n'est peut-être pas bonne, mais merci.

Environnement construit

Je vais expliquer brièvement l'environnement que j'ai construit.

Tout d'abord, créez un environnement Python

Téléchargez le programme d'installation graphique ci-dessous depuis Anaconda3, et sélectionnez le système d'exploitation et le bit en fonction de votre environnement. スクリーンショット 2020-10-13 153017.jpg Vous pouvez laisser l'installation, vérifier, etc. selon le guide de l'installateur. Après l'installation, lancez l'invite Anaconda image.png Téléchargez celui pour votre environnement dans la liste sous tensorflow pip guide pour installer tensorflow-gpu 2.30 image.png Après avoir téléchargé le fichier du package tensorflow, Installez en tapant pip install --upgrade [fichier téléchargé] et l'invite Anaconda

Création d'un environnement GPU Nvidia

À partir de maintenant, c'est pour les personnes qui souhaitent utiliser le GPU Nvidia. D'après l'article auquel j'ai fait référence, tensorflow 2.3 semble fonctionner avec CUDA 10.1, cuDNN 7.6. Cela a également fonctionné avec cette combinaison dans mon environnement. Veuillez installer CUDA, cuDNN selon la version de tensorflow.

De plus, pour utiliser le GPU avec tensorflow, il semble que vous deviez définir l'utilisation de la mémoire. Pour ce faire, écrivez le code suivant au début du code.

python


physical_devices = tf.config.list_physical_devices('GPU')
if len(physical_devices) > 0:
    for device in physical_devices:
        tf.config.experimental.set_memory_growth(device, True)
        print('{} memory growth: {}'.format(device, tf.config.experimental.get_memory_growth(device)))
else:
    print("Not enough GPU hardware devices available")

La description du code dépend de la version de tensorflow, veuillez donc vous référer à l'article auquel j'ai fait référence.

Essayez tensorflow

Essayons de classer les images en utilisant le réseau neuronal dans le tutoriel tensorflow. J'ai ajouté le code ci-dessus pour le traiter sur le GPU.

newralnet_demo.py


#TensorFlow et tf.importer des keras
import tensorflow as tf
from tensorflow import keras

#Importer la bibliothèque d'aide
import numpy as np
import matplotlib.pyplot as plt

# import os
# os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
# print(tf.__version__)

# GPU_settings
physical_devices = tf.config.list_physical_devices('GPU')
if len(physical_devices) > 0:
    for device in physical_devices:
        tf.config.experimental.set_memory_growth(device, True)
        print('{} memory growth: {}'.format(
            device, tf.config.experimental.get_memory_growth(device)))
else:
    print("Not enough GPU hardware devices available")

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images,
                               test_labels) = fashion_mnist.load_data()

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

train_images.shape
len(train_labels)
train_labels
test_images.shape
len(test_labels)

plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)
plt.show()

train_images = train_images / 255.0
test_images = test_images / 255.0

plt.figure(figsize=(10, 10))
for i in range(25):
    plt.subplot(5, 5, i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
plt.show()

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

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

model.fit(train_images, train_labels, epochs=5)

test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)
print('\nTest accuracy:', test_acc)

predictions = model.predict(test_images)
predictions[0]
np.argmax(predictions[0])
test_labels[0]


def plot_image(i, predictions_array, true_label, img):
    predictions_array, true_label, img = predictions_array[i], true_label[i], img[i]
    plt.grid(False)
    plt.xticks([])
    plt.yticks([])

    plt.imshow(img, cmap=plt.cm.binary)

    predicted_label = np.argmax(predictions_array)
    if predicted_label == true_label:
        color = 'blue'
    else:
        color = 'red'

    plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
                                         100*np.max(predictions_array),
                                         class_names[true_label]),
               color=color)


def plot_value_array(i, predictions_array, true_label):
    predictions_array, true_label = predictions_array[i], true_label[i]
    plt.grid(False)
    plt.xticks([])
    plt.yticks([])
    thisplot = plt.bar(range(10), predictions_array, color="#777777")
    plt.ylim([0, 1])
    predicted_label = np.argmax(predictions_array)

    thisplot[predicted_label].set_color('red')
    thisplot[true_label].set_color('blue')


i = 0
plt.figure(figsize=(6, 3))
plt.subplot(1, 2, 1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1, 2, 2)
plot_value_array(i, predictions,  test_labels)
plt.show()

i = 12
plt.figure(figsize=(6, 3))
plt.subplot(1, 2, 1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1, 2, 2)
plot_value_array(i, predictions,  test_labels)
plt.show()

#Affiche les images de test X, les étiquettes prédites et les étiquettes correctes.
#Les prédictions correctes sont affichées en bleu et les mauvaises prédictions sont affichées en rouge.
num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
    plt.subplot(num_rows, 2*num_cols, 2*i+1)
    plot_image(i, predictions, test_labels, test_images)
    plt.subplot(num_rows, 2*num_cols, 2*i+2)
    plot_value_array(i, predictions, test_labels)
plt.show()

#Extraire une image de l'ensemble de données de test
img = test_images[0]
print(img.shape)

#Faire d'une image un membre d'un seul lot
img = (np.expand_dims(img, 0))
print(img.shape)

predictions_single = model.predict(img)
print(predictions_single)

plot_value_array(0, predictions_single, test_labels)
_ = plt.xticks(range(10), class_names, rotation=45)

np.argmax(predictions_single[0])

Si le processus réussit, les images seront triées et affichées dans une liste. image.png

Site référencé

Je me suis référé au site Web de Kunihiko Kaneko Lab. Cela a été très utile. Merci beaucoup.

Recommended Posts

J'ai essayé tensorflow pour la première fois
J'ai essayé la programmation python pour la première fois.
J'ai essayé Mind Meld pour la première fois
J'ai essayé Python sur Mac pour la première fois.
J'ai essayé python pour la première fois avec heroku
AI Gaming Je l'ai essayé pour la première fois
J'ai essayé l'API Google Cloud Vision pour la première fois
Premier Kaggle (kaggle ①)
Kaguru pour la première fois
Ce que je suis entré dans Python pour la première fois
J'ai essayé le tutoriel MNIST de tensorflow pour les débutants.
Pour la première fois, j'ai découvert Unix (Linux).
J'ai essayé le tutoriel TensorFlow 1er
J'ai essayé le tutoriel TensorFlow 2ème
Voir python pour la première fois
Démarrez Django pour la première fois
J'ai essayé de porter le code écrit pour TensorFlow sur Theano
J'ai essayé d'exécuter PIFuHD sur Windows pour le moment
[Pour les débutants] J'ai essayé d'utiliser l'API Tensorflow Object Detection
Tutoriel TensorFlow J'ai essayé MNIST 3rd
MongoDB avec Python pour la première fois
Essayons Linux pour la première fois
J'ai essayé d'exécuter le didacticiel TensorFlow avec des commentaires (_TensorFlow_2_0_Introduction pour les débutants)
J'ai essayé d'exécuter TensorFlow
[Python] J'ai essayé de remplacer le nom de la fonction par le nom de la fonction
Comment utiliser MkDocs pour la première fois
vprof - J'ai essayé d'utiliser le profileur pour Python
J'ai essayé l'analyse du SRAS avant le virus corona
J'ai joué avec Floydhub pour le moment
Essayez de publier sur Qiita pour la première fois
Pour la première fois dans Numpy, je vais le mettre à jour de temps en temps
Depuis que je suis libre, l'ingénieur front-end a essayé Python (v3.7.5) pour la première fois
J'ai essayé de créer un traitement par lots sans serveur pour la première fois avec DynamoDB et Step Functions
Enregistrer une tâche dans cron pour la première fois
J'ai essayé la bibliothèque changefinder!
Retour sur le concours d'apprentissage automatique sur lequel j'ai travaillé pour la première fois
Essayez d'installer Arch Linux pour le moment.
J'ai essayé d'utiliser magenta / TensorFlow
GTUG Girls + PyLadiesTokyo Meetup Je suis allé au premier machine learning
J'ai fréquenté l'école et j'ai participé pour la première fois au concours limité BEGINNER de SIGNATE.
Je souhaite créer une base de données de déjeuners [EP1] Django pour la première fois
Je souhaite créer une base de données de déjeuner [EP1-4] Django pour la première fois
[TensorFlow] Je souhaite maîtriser l'indexation pour Ragged Tensor
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
J'ai essayé de refactoriser le modèle CNN de TensorFlow en utilisant TF-Slim
Je veux déplacer le sélénium pour le moment [pour mac]
Résumé des points d'achoppement à Django pour la première fois
Se présenter à Qiita pour la première fois (test post)
J'ai essayé d'illustrer le temps et le temps du langage C
J'ai essayé d'afficher l'heure et la météo d'aujourd'hui w
Notes diverses sur l'utilisation de python pour les projets
Je veux créer un Dockerfile pour le moment.
Si vous apprenez Linux pour la première fois, faites-le!
J'ai essayé le roman Naro API 2
Tutoriel TensorFlow J'ai essayé CNN 4th
J'ai essayé l'API du roman Naruro
J'ai essayé de déplacer le ballon