Ich habe Keras mit dem Tensorflow Backend und CUDA installiert. Ich möchte manchmal bei Bedarf Keras zwingen, CPU zu verwenden. Kann dies getan werden, ohne sagen wir eine separate CPU-only Tensorflow in einer virtuellen Umgebung zu installieren? Wenn ja, wie? Wenn das Backend Theano wäre, könnten die Flags gesetzt werden, aber ich habe nicht von Tensorflow-Flags gehört, die über Keras zugänglich sind.
Wenn Sie Keras zwingen wollen, die CPU zu benutzen
import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"] = ""
bevor Keras / Tensorflow importiert wird.
Führen Sie Ihr Skript als
$ CUDA_VISIBLE_DEVICES="" ./your_keras_code.py
Siehe auch
Wie in keras tutorial beschrieben, können Sie einfach den gleichen Bereich "tf.device" wie in Tensorflow verwenden:
with tf.device('/gpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on GPU:0
with tf.device('/cpu:0'):
x = tf.placeholder(tf.float32, shape=(None, 20, 64))
y = LSTM(32)(x) # all ops in the LSTM layer will live on CPU:0
Ich habe gerade einige Zeit damit verbracht, es herauszufinden.
Thoma's Antwort ist nicht vollständig.
Nehmen wir an, Ihr Programm ist test.py
, Sie wollen gpu0 verwenden, um dieses Programm auszuführen, und andere gpus frei halten.
Du solltest CUDA_VISIBLE_DEVICES=0 python test.py
schreiben.
Beachten Sie, dass es DEVICES
und nicht DEVICE
heißt.