В тензорном потоке, установленном в cuda Использование кера в тензорном потоке с процессором в python [duplicate]

По крайней мере, вплоть до CSS3, включая CSS3, вы не можете выбрать это. Но это может быть сделано довольно легко в настоящее время в JS, вам просто нужно добавить немного ванильного JavaScript, обратите внимание, что код довольно короткий.

      cells = document.querySelectorAll('div');
              [].forEach.call(cells, function (el) {
              //console.log(el.nodeName)
                if (el.hasChildNodes() && el.firstChild.nodeName=="A") {
                console.log(el)};
            });
            <div>Peter</div>
            <div><a href="#">Jackson link</a></div>
            <div>Philip</div>
            <div><a href="#">Pullman link</a></div>

50
задан mikal94305 19 November 2016 в 09:17
поделиться

7 ответов

Если вы хотите заставить Keras использовать CPU

Путь 1

import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"   # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"] = ""

до импорта Keras / Tensorflow.

Путь 2

Запустите свой скрипт как

$ CUDA_VISIBLE_DEVICES="" ./your_keras_code.py

См. также

  1. https://github.com/keras-team/keras/issues/152
  2. https://github.com/fchollet/keras/issues/4613
56
ответ дан Gaurav Kumar 19 August 2018 в 07:39
поделиться
  • 1
    Не работал для меня (Keras 2, Windows) - пришлось установить os.environ['CUDA_VISIBLE_DEVICES'] = '-1', как в ответе ниже – desertnaut 11 October 2017 в 12:13
  • 2
    Какая проблема относится к № 152? Ссылка была бы приятной. – Martin R. 29 November 2017 в 19:58

Просто импортируйте shadowortflow и используйте keras, это так просто.

import tensorflow as tf
# your code here
with tf.device('/gpu:0'):
    model.fit(X, y, epochs=20, batch_size=128, callbacks=callbacks_list)
7
ответ дан Engineero 19 August 2018 в 07:39
поделиться

Я просто потратил некоторое время на это. Ответ Томы не завершен. Скажите, что ваша программа test.py, вы хотите использовать gpu0 для запуска этой программы и не допускать других gpus.

Вы должны написать CUDA_VISIBLE_DEVICES=0 python test.py

Обратите внимание, что это DEVICES не DEVICE

2
ответ дан Felipe Augusto 19 August 2018 в 07:39
поделиться

Довольно изящным и разделяемым способом этого является использование

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 вы можете указать, следует ли использовать GPU или GPU при запуске код. Обратите внимание, что я делаю это, указав, что есть 0 графических устройств, когда я хочу просто использовать CPU. В качестве дополнительного бонуса с помощью этого метода вы можете указать, сколько графических процессоров и процессоров использовать тоже! Кроме того, через num_cores вы можете установить количество ядер процессора.

Все это выполняется в конструкторе моего класса перед любыми другими операциями и полностью отделяется от любой модели или другой код я использую.

Единственное, что нужно отметить, это то, что вам понадобятся tensorflow-gpu и cuda / cudnn, потому что вы всегда даете возможность использовать графический процессор.

34
ответ дан RACKGNOME 19 August 2018 в 07:39
поделиться
  • 1
    Это хорошее решение, как просто определение «CUDA_VISIBLE_DEVICES». вызывает CUDA_ERROR_NO_DEVICE, за которым следует много диагностики, прежде чем продолжить выполнение на CPU. Хотя ... оба метода работают! – jsfa11 22 March 2018 в 18:24

Это должно заставить tensorflow использовать CPU:

import os
os.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"   # see issue #152
os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
-1
ответ дан Saeed 19 August 2018 в 07:39
поделиться
  • 1
    Ваш ответ не добавляет ничего нового в поток. – Eli Korvigo 19 August 2018 в 06:53

Это сработало для меня (win10), место перед импортом keras:

import os
os.environ['CUDA_VISIBLE_DEVICES'] = '-1'
24
ответ дан slfan 19 August 2018 в 07:39
поделиться
  • 1
    что это делает? – kRazzy R 15 May 2018 в 19:21
  • 2
    С Win заставляет TF использовать процессор и игнорировать любой графический процессор. Не повезло с 0 или пустым, но -1, похоже, сделал трюк. – Neuraleptic 16 May 2018 в 19:54
  • 3
    Работала на Win10 x64 для меня. Мне также не повезло выиграть 0 или пустое, и только -1 работал. – Cypher 11 August 2018 в 06:55
  • 4

В соответствии с keras учебником вы можете просто использовать ту же область tf.device, что и в обычном тензорном потоке:

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
16
ответ дан sygi 19 August 2018 в 07:39
поделиться
  • 1
    Как это можно сделать в Keras с Tensorflow в качестве backend, вместо того, чтобы использовать Tensorflow для вызова слоев Keras? – mikal94305 19 November 2016 в 23:33
  • 2
    Я не понимаю ваш вопрос. Код внутри with может быть любым кодом Keras. – sygi 20 November 2016 в 00:06
  • 3
    Как это можно сделать с обученной моделью, загруженной с диска? В настоящее время я тренируюсь на gpu, но хочу проверить впоследствии на CPU – ghostbust555 10 December 2016 в 07:11
  • 4
    Я не думаю, что эти модели взаимозаменяемы. – sygi 10 December 2016 в 11:35
  • 5
    Я смог переключить обучение с gpu на CPU в середине обучения, используя вышеупомянутый метод, в котором я сохраняю модель между моделью. Затем перезагрузите ее с помощью другого tf.device, используя keras.models.load_model. То же самое относится, если вы хотите обучить, а затем прогнозировать на другом устройстве. – TheLoneNut 5 October 2017 в 16:08
Другие вопросы по тегам:

Похожие вопросы: