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.
Ich werde kurz die Umgebung erklären, die ich gebaut habe.
Laden Sie das unten stehende grafische Installationsprogramm von Anaconda3 herunter und wählen Sie das Betriebssystem und das Bit entsprechend Ihrer Umgebung aus.
Sie können die Installation, Überprüfung usw. gemäß der Installationsanleitung verlassen.
Starten Sie nach der Installation die Anaconda-Eingabeaufforderung
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
Nach dem Herunterladen der Tensorflow-Paketdatei
Installieren Sie, indem Sie "pip install --upgrade [heruntergeladene Datei]" und die Anaconda-Eingabeaufforderung eingeben
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 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.
Ich habe auf die Website von Kunihiko Kaneko Lab verwiesen. Es war sehr hilfreich. Vielen Dank.
Recommended Posts