web-dev-qa-db-fra.com

Comment utiliser Keras avec GPU?

J'ai réussi à installer TensorFlow avec GPU. Lorsque j'exécute le script suivant, j'obtiens ce résultat:

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

C:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\platform\cpu_feature_guard.cc: 140]
Votre CPU prend en charge les instructions que ce binaire TensorFlow n'a pas été compilé pour utiliser: AVX2 2018-03-26
Appareil 0 trouvé avec les propriétés: nom: GeForce GTX 970 majeur: 5 mineur: 2 memoryClockRate (GHz): 1.253 pciBusID: 0000: 01: 00.0 totalMemory: 4.00GiB freeMemory: 3.31GiB 2018-03-26 11: 47: 03.186046: IC:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc: 1312]
Ajout de périphériques GPU visibles: 0 2018-03-26 11: 47: 04.062049: IC:\tf_jenkins\workspace\rel-win\M\windows-gpu\PY\36\tensorflow\core\common_runtime\gpu\gpu_device.cc: 993]
Création d'un périphérique TensorFlow (/ périphérique: GPU: 0 avec 3043 Mo de mémoire) -> GPU physique (périphérique: 0, nom: GeForce GTX 970, identifiant de bus PCI: 0000: 01: 00.0, capacité de calcul: 5.2) [name: "/ device: CPU: 0" device_type: "CPU" memory_limit: 268435456 locality {} incarnation: 8082333747214375667, name: "/ device: GPU: 0" device_type: "GPU" memory_limit: 3190865920 locality {bus_id: 1} incarnation: 1190887510488091263 physical_device_desc: "périphérique: 0, nom: GeForce GTX 970, identifiant de bus pci: 0000: 01: 00.0, capacité de calcul: 5.2"]

Si j'exécute un CNN dans Keras, par exemple, utilisera-t-il automatiquement le GPU? Ou dois-je écrire du code pour forcer Keras à utiliser le GPU?

Par exemple, avec l'ensemble de données MNIST, comment utiliser le GPU?

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])

model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          validation_data=(x_test, y_test))
5
user2505650

Vous n'avez pas besoin de dire explicitement à Keras d'utiliser le GPU. Si un GPU est disponible (et à partir de votre sortie, je peux voir que c'est le cas), il l'utilisera.

Vous pouvez également vérifier cela empiriquement en examinant l'utilisation du GPU pendant la formation sur le modèle: si vous êtes sur Windows 10, vous n'avez qu'à ouvrir le gestionnaire de tâches et regarder sous l'onglet `` Performances '' (voir ici ).

6
Alberto Re