Досить відокремлений спосіб зробити це - використовувати
import tensorflow as tf
from keras import backend as K
num_cores = 4
if GPU:
num_GPU = 1
num_CPU = 1
if CPU:
num_CPU = 1
num_GPU = 0
config = tf.ConfigProto(intra_op_parallelism_threads=num_cores,
inter_op_parallelism_threads=num_cores,
allow_soft_placement=True,
device_count = {'CPU' : num_CPU,
'GPU' : num_GPU}
)
session = tf.Session(config=config)
K.set_session(session)
Тут, за допомогою booleans GPUта CPU, ми вказуємо, чи хотіли б ми запустити наш код із графічним процесором чи процесором, жорстко визначивши кількість графічних процесорів та процесорів, до яких може бути доступний сеанс Tensorflow. Змінні num_GPUі num_CPUвизначають це значення. num_coresпотім встановлює кількість ядер процесора, доступних для використання через intra_op_parallelism_threadsта inter_op_parallelism_threads.
У intra_op_parallelism_threadsдиктує змінне число потоків паралельної роботи в одному вузлі в графі обчислення допускається використання (всередині). Тоді як inter_ops_parallelism_threadsзмінна визначає кількість потоків, доступних для паралельних операцій по вузлах обчислювального графіка (inter).
allow_soft_placement дозволяє виконувати операції над процесором, якщо виконується будь-який з наступних критеріїв:
для операції немає реалізації графічного процесора
немає відомих або зареєстрованих пристроїв графічного процесора
існує необхідність спільного пошуку з іншими входами від центрального процесора
Все це виконується в конструкторі мого класу перед будь-якими іншими операціями і повністю відокремлюється від будь-якої моделі чи іншого коду, який я використовую.
Примітка. Це вимагає tensorflow-gpuта cuda/ cudnnбути встановленим, оскільки надається можливість використовувати GPU.
Посилання:
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'як у відповіді нижче