Jeg har Keras installert med Tensorflow-backend og CUDA. Jeg' vil noen ganger på forespørsel tvinge Keras til å bruke CPU. Kan dette gjøres uten å installere en separat Tensorflow med bare CPU i et virtuelt miljø? I så fall hvordan? Hvis backend var Theano, kunne flaggene settes, men jeg har ikke hørt om Tensorflow-flagg som er tilgjengelige via Keras.
Hvis du ønsker å tvinge Keras til å bruke CPU
import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID" # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"] = ""
før Keras/Tensorflow importeres.
Kjør skriptet ditt som
$ CUDA_VISIBLE_DEVICES="" ./your_keras_code.py
Se også
I henhold til keras tutorial kan du ganske enkelt bruke samme tf.device
scope som i vanlig tensorflow:
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
Jeg har akkurat brukt litt tid på å finne ut av det.
Thoma's svar er ikke fullstendig.
La oss si at programmet ditt er test.py
, du vil bruke gpu0 til å kjøre dette programmet, og holde andre gpuer ledige.
Du bør skrive CUDA_VISIBLE_DEVICES=0 python test.py
.
Legg merke til at det står DEVICES
og ikke DEVICE
.