[PYTHON] Ich habe zum ersten Mal Tensorflow ausprobiert

Wie der Titel schon sagt, habe ich zum ersten Mal Tensorflow ausprobiert und mich bemüht, eine Umgebung aufzubauen, also habe ich es geschrieben. Qiita Ich schreibe zum ersten Mal, daher ist die Erklärung möglicherweise nicht gut, aber ich danke Ihnen.

Konstruierte Umgebung

Ich werde kurz die Umgebung erklären, die ich gebaut habe.

Erstellen Sie zunächst eine Python-Umgebung

Laden Sie das unten stehende grafische Installationsprogramm von Anaconda3 herunter und wählen Sie das Betriebssystem und das Bit entsprechend Ihrer Umgebung aus. スクリーンショット 2020-10-13 153017.jpg Sie können die Installation, Überprüfung usw. gemäß der Installationsanleitung verlassen. Starten Sie nach der Installation die Anaconda-Eingabeaufforderung image.png Laden Sie die für Ihre Umgebung aus der Liste im Tensorflow-Pip-Handbuch (https://www.tensorflow.org/install/pip?hl=ja#conda) herunter, um tensorflow-gpu 2.30 zu installieren image.png Nach dem Herunterladen der Tensorflow-Paketdatei Installieren Sie, indem Sie "pip install --upgrade [heruntergeladene Datei]" und die Anaconda-Eingabeaufforderung eingeben

Erstellen einer Nvidia-GPU-Umgebung

Ab hier ist es für Leute, die die Nvidia-GPU verwenden möchten. Gemäß dem Artikel, auf den ich mich bezog, scheint Tensorflow 2.3 mit "CUDA 10.1", "cuDNN 7.6" zu funktionieren. Mit dieser Kombination hat es auch in meiner Umgebung funktioniert. Bitte installieren Sie CUDA, cuDNN entsprechend der Version von Tensorflow.

Um eine GPU mit Tensorflow zu verwenden, müssen Sie anscheinend die Speichernutzung einstellen. Schreiben Sie dazu den folgenden Code am Anfang des Codes.

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")

Die Codebeschreibung hängt von der Version von Tensorflow ab. Lesen Sie daher bitte den Artikel, auf den ich verwiesen habe.

Versuchen Sie es mit Tensorflow

Versuchen wir, Bilder mithilfe des neuronalen Netzwerks im Tutorial tensorflow zu klassifizieren. Ich habe den obigen Code hinzugefügt, um ihn auf der GPU zu verarbeiten.

newralnet_demo.py


#TensorFlow und tf.Keras importieren
import tensorflow as tf
from tensorflow import keras

#Hilfsbibliothek importieren
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()

#Zeigt X Testbilder, vorhergesagte Beschriftungen und korrekte Beschriftungen an.
#Richtige Vorhersagen werden blau und falsche Vorhersagen rot angezeigt.
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()

#Extrahieren Sie ein Bild aus dem Testdatensatz
img = test_images[0]
print(img.shape)

#Machen Sie ein Bild zu einem Mitglied von nur einem Stapel
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])

Wenn der Vorgang erfolgreich ist, werden die Bilder sortiert und in einer Liste angezeigt. image.png

Referenzierte Site

Ich habe auf die Website von Kunihiko Kaneko Lab verwiesen. Es war sehr hilfreich. Vielen Dank.

Recommended Posts

Ich habe zum ersten Mal Tensorflow ausprobiert
Ich habe zum ersten Mal versucht, Python zu programmieren.
Ich habe Mind Meld zum ersten Mal ausprobiert
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe Python zum ersten Mal mit Heroku ausprobiert
AI Gaming Ich habe es zum ersten Mal versucht
Ich habe die Google Cloud Vision-API zum ersten Mal ausprobiert
Erster Kaggle (Kaggle ①)
Kaguru zum ersten Mal
Was ich zum ersten Mal in Python bekommen habe
Ich habe das MNIST-Tutorial von tensorflow für Anfänger ausprobiert.
Zum ersten Mal habe ich etwas über Unix (Linux) gelernt.
Ich habe das TensorFlow-Tutorial als erstes ausprobiert
Ich habe das 2. TensorFlow-Tutorial ausprobiert
Siehe Python zum ersten Mal
Starten Sie Django zum ersten Mal
Ich habe versucht, den für TensorFlow geschriebenen Code nach Theano zu portieren
Ich habe vorerst versucht, PIFuHD unter Windows auszuführen
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
TensorFlow Tutorial Ich habe MNIST 3rd ausprobiert
MongoDB mit Python zum ersten Mal
Versuchen wir zum ersten Mal Linux
Ich habe versucht, das TensorFlow-Tutorial mit Kommentaren auszuführen (_TensorFlow_2_0_Einführung für Anfänger).
Ich habe versucht, TensorFlow auszuführen
[Python] Ich habe versucht, den Funktionsnamen durch den Funktionsnamen zu ersetzen
So verwenden Sie MkDocs zum ersten Mal
vprof - Ich habe versucht, den Profiler für Python zu verwenden
Ich habe zuerst die SARS-Analyse vor dem Corona-Virus versucht
Ich habe vorerst mit Floydhub gespielt
Versuchen Sie zum ersten Mal, in Qiita zu posten
Zum ersten Mal in Numpy werde ich es von Zeit zu Zeit aktualisieren
Da ich frei bin, hat der Front-End-Ingenieur Python (v3.7.5) zum ersten Mal ausprobiert
Ich habe zum ersten Mal versucht, mit DynamoDB und Step Functions eine serverlose Stapelverarbeitung zu erstellen
Registrieren Sie zum ersten Mal eine Aufgabe in cron
Ich habe die Changefinder-Bibliothek ausprobiert!
Rückblick auf den Wettbewerb für maschinelles Lernen, an dem ich zum ersten Mal gearbeitet habe
Versuchen Sie vorerst, Arch Linux zu installieren.
Ich habe versucht, Magenta / TensorFlow zu verwenden
GTUG Girls + PyLadiesTokyo Meetup Ich ging zum ersten maschinellen Lernen
Ich besuchte die Schule und nahm zum ersten Mal am SIGNATE BEGINNER Limited-Wettbewerb teil.
Ich möchte zum ersten Mal eine Django-Studie zur Mittagsdatenbank [EP1] erstellen
Ich möchte zum ersten Mal eine Django-Studie zum Mittagessen [EP1-4] erstellen
[TensorFlow] Ich möchte die Indizierung für Ragged Tensor beherrschen
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, das CNN-Modell von TensorFlow mit TF-Slim umzugestalten
Ich möchte vorerst Selen bewegen [für Mac]
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Stellen Sie sich zum ersten Mal bei Qiita vor (Testbeitrag)
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ich habe versucht, die Uhrzeit und das heutige Wetter anzuzeigen
Verschiedene Hinweise zur Verwendung von Python für Projekte
Ich möchte vorerst eine Docker-Datei erstellen.
Wenn Sie zum ersten Mal Linux lernen, tun Sie dies!
Ich habe die Naro-Roman-API 2 ausprobiert
TensorFlow Tutorial Ich habe CNN 4th ausprobiert
Ich habe die neuartige API von Naruro ausprobiert
Ich habe versucht, den Ball zu bewegen