2015-12-03 55 views
7

Próbuję uruchomić samouczek CIFAR10 z kodem treningowym na jednym gpu i kodem eval na drugim. Wiem na pewno, że mam dwa procesory graficzne na moim komputerze i mogę to przetestować, uruchamiając proste przykłady: https://www.tensorflow.org/how_tos/using_gpu/index.htmlTensor Flow Explicit Device Requirement Error

Jednak użycie parametru with device('/gpu:0') nie działa w przypadku większości zmiennych w przykładzie CIFAR. Próbowałem wielu kombinacji różnych zmiennych na GPU lub cpu, lub wszystkich zmiennych na jednym lub drugim. Zawsze ten sam błąd dla jakiejś zmiennej, coś takiego:

Cannot assign a device to node 'shuffle_batch/random_shuffle_queue': Could not satisfy explicit device specification '/gpu:0' 

Czy to prawdopodobnie błąd w Tensor Flow, czy coś mi brakuje?

Odpowiedz

8

Could not satisfy explicit device specification oznacza, że ​​nie masz odpowiedniego urządzenia. Czy rzeczywiście masz GPU z obsługą CUDA na swoim komputerze?

UPDATE: Jak się okazało w poniższej dyskusji, ten błąd jest podniesiona, gdy dana operacja (w tym przypadku, RandomShuffleQueue) nie mogą być wykonywane na GPU, ponieważ ma tylko implementacji procesora.

Jeśli są w porządku z TensorFlow Wybierając urządzenie do was (zwłaszcza, spada z powrotem do procesora, gdy nie ma realizacja GPU jest dostępny), należy rozważyć ustawienie allow_soft_placement w konfiguracji, jak na this article:

sess = tf.Session(config=tf.ConfigProto(
    allow_soft_placement=True, log_device_placement=True)) 
+0

znam go korzysta z GPU na moim komputerze. Loguje się, że to robi. Mogę go uruchomić bez jawnego oznaczania, którego GPU użyć i spróbuje użyć/gpu: 0. To działa dobrze. Wiem też, że w ogólnym przypadku dla prostych zmiennych mogę jawnie użyć konkretnego GPU, jak to opisano w linku, który umieściłem. – bschreck

+0

Problem dotyczy w szczególności sposobu, w jaki kod działa w samouczku – bschreck

+0

do której konkretnej linii się nie udaje (wiem, że powiedziałeś, że jest ich kilka, ale przynajmniej jeden przykład byłby pomocny). Czy to możliwe, że polecenie, któremu nie uda się, może być uruchomione tylko na procesorze? – Ishamael