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.
Je vais expliquer brièvement l'environnement que j'ai construit.
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.
Vous pouvez laisser l'installation, vérifier, etc. selon le guide de l'installateur.
Après l'installation, lancez l'invite Anaconda
Téléchargez celui pour votre environnement dans la liste sous tensorflow pip guide pour installer tensorflow-gpu 2.30
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
À 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.
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.
Je me suis référé au site Web de Kunihiko Kaneko Lab. Cela a été très utile. Merci beaucoup.
Recommended Posts