Otrzymuję błąd, gdy uruchomię mój kod, błąd jest:

TENSORFLOW.PYTHON.FRAMAD.Errors_impl.Internalerror: Nie można utworzyć sesji.

Oto mój kod:

# -*- coding: utf-8 -*-
import ...
import ...

checkpoint='/home/vrview/tensorflow/example/char/data/model/'
MODEL_SAVE_PATH = "/home/vrview/tensorflow/example/char/data/model/"

def getAllImages(folder):
    assert os.path.exists(folder)
    assert os.path.isdir(folder)
    imageList = os.listdir(folder)
    imageList = [os.path.join(folder,item) for item in imageList ]
    num=len(imageList)
    return imageList,num

def get_labei():
    img_dir, num = getAllImages(r"/home/vrview/tensorflow/example/char/data/model/file/")
    for i in range(num):
        image = Image.open(img_dir[i])
        image = image.resize([56, 56])
        image = np.array(image)
        image_array = image

        with tf.Graph().as_default():
            image = tf.cast(image_array, tf.float32)
            image_1 = tf.image.per_image_standardization(image)
            image_2 = tf.reshape(image_1, [1, 56, 56, 3])

            logit = color_inference.inference(image_2)
            y = tf.nn.softmax(logit)
            x = tf.placeholder(tf.float32, shape=[56, 56, 3])

            saver = tf.train.Saver()
            with tf.Session() as sess:
              ckpt = tf.train.get_checkpoint_state(MODEL_SAVE_PATH)
              if ckpt and ckpt.model_checkpoint_path:
                   global_step = ckpt.model_checkpoint_path.split('/')[-1].split('-')[-1]
                   saver.restore(sess, ckpt.model_checkpoint_path)
                   print('Loading success, global_step is %s' % global_step)
                   prediction = sess.run(y)
                   max_index = np.argmax(prediction)
              else:
                   print('No checkpoint file found')

        path='/home/vrview/tensorflow/example/char/data/move_file/'+str(max_index)
        isExists = os.path.exists(path)
        if not isExists :
            os.makedirs(path)
        shutil.copyfile(img_dir[i], path)

def main(argv=None):
    get_labei()

if __name__ == '__main__':
    tf.app.run()

A oto mój błąd:

Traceback (most recent call last):
  File "/home/vrview/tensorflow/example/char/data/model/color_class_2.py", line 61, in <module>
    tf.app.run()
  File "/home/vrview/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 44, in run
    _sys.exit(main(_sys.argv[:1] + flags_passthrough))
  File "/home/vrview/tensorflow/example/char/data/model/color_class_2.py", line 58, in main
    get_labei()
  File "/home/vrview/tensorflow/example/char/data/model/color_class_2.py", line 40, in get_labei
    with tf.Session() as sess:
  File "/home/vrview/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 1187, in __init__
    super(Session, self).__init__(target, graph, config=config)
  File "/home/vrview/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 552, in __init__
    self._session = tf_session.TF_NewDeprecatedSession(opts, status)
  File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
    self.gen.next()
  File "/home/vrview/tensorflow/local/lib/python2.7/site-packages/tensorflow/python/framework/errors_impl.py", line 469, in raise_exception_on_not_ok_status
    pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InternalError: Failed to create session.
5
Frank.Fan 27 czerwiec 2017, 10:53

7 odpowiedzi

Najlepsza odpowiedź

Używasz GPU? Jeśli tak, może po prostu wynika z pamięci GPU z powodu poprzedniego procesu, nie można go zabijać.

Ten bilet pomaga mi zidentyfikować problem: https://github.com/tensorflow/tensorflow/issues/ 9549.

Aby zobaczyć swój status GPU: w terminalu, {x0}}, aby zaktualizować status GPU co 2 sekundy

Ten post pokazuje, jak zabić proces, który obecnie przyjmuje wszystkie pamięci swojego GPU: https://www.quora.com/how-do--icill-all-the-computer-processes-shown-in-nvidia-smi-Shown-in-nvidia-smi- / A >.

2
Jason 13 czerwiec 2019, 09:02

W przypadku właśnie rozwiązany został zaktualizowany przez kierowcę GPU do najnowszej i instalacji narzędzi CUDA. Po pierwsze, dodano PPA i zainstalowany sterownik GPU:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-390

Po dodaniu PPA pokazano opcje dla wersji sterowników, a 390 była najnowszą wersją "stabilną", która została wyświetlona.

Następnie zainstaluj zestaw narzędzi CUDA:

sudo apt install nvidia-cuda-toolkit

Następnie uruchom ponownie:

sudo reboot

Zaktualizowano sterowniki do nowszej wersji niż 390 oryginalnie zainstalowany w pierwszym etapie (był 410; był to instancja P2.xlarge na AWS).

1
wordsforthewise 12 październik 2018, 17:53

W moim przypadku pomogło powrócić do Tensorflow 1.9.0, jak sugerowano Oto ( Anaconda zainstalowała wersję 1.10.0). Automatycznie instaluje prawidłową wersję CUDA (9.0 zamiast 9,2 z mojej głowy). Obniżka jest prosta w Anacondzie:

conda install tensorflow=1.9.0

To działało dla mnie. Ta konfiguracja działa z Keras 2.2.2.

1
Arnold 2 październik 2018, 19:17

Miałem dokładnie ten sam problem, a to właśnie zrobiłem:

  1. Kierowca NVIDIA:

    $ nvidia-smi |. Wersja sterownika NVIDIA-SMI 384.130: 384.130

Znaleziony kierowca 384.130.

  1. Zaktualizowany sterownik.

    $ sudo add-apt-repository PPA: Sterowniki graficzne / PPA

    $ sudo APT aktualizacja

Powyższy dziennik pokazał NVIDIA 396.

nvidia_396:
 Running module version sanity check.

Uruchom ponownie maszynę i sprawdzone sterownik NVIDIA:

 $ nvidia-smi
 NVIDIA-SMI 396.54                 Driver Version: 396.54

Sprawdzone NVCC:

$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17

Sprawdzone CUDA:

$ cat /usr/local/cuda/version.txt
CUDA Version 9.0.176

Sprawdź Conda i Tensorflow

$ conda list | grep tensorflow
tensorflow                1.10.0          gpu_py36hcebf108_0    Anaconda
tensorflow-base           1.10.0          gpu_py36had579c0_0    Anaconda
tensorflow-gpu            1.10.0               hf154084_0    Anaconda

Wreszcie ponownie przetestował tensorflow

>>> import tensorflow as tf
>>> hello = tf.constant('hi,tensorflow')
>>> sess = tf.Session()
>>>

Wszystko działało. Problem polegał na tym, że kierowca NVIDIA nie był zgodny z Cuda Tensorlow, więc zaktualizowałem się do najnowszej i działało.

2
AvkashChauhan 5 październik 2018, 20:46

Po wykonaniu

export CUDA_VISIBLE_DEVICES=''

Twój tensorflow może nie używać GPU. Może rozpocząć trening modelu za pomocą tylko procesora.

Możesz znaleźć lepsze rozwiązanie Oto. Nie wymaga ponownego uruchomienia, a możesz zastosować go na serwerze.

3
Preetom Saha Arko 30 styczeń 2018, 07:49

Może z pamięci GPU? Spróbuj uciekać

export CUDA_VISIBLE_DEVICES=''

Proszę również podać szczegóły dotyczące korzystania z platformy (system operacyjny, architektura). Dołącz również wersję TENSORFLOW.

Czy byłeś w stanie utworzyć prostą sesję z konsoli Python. Coś takiego:

import tensorflow as tf
hello = tf.constant('hi,tensorflow')
sess = tf.Session()
5
Anand C U 27 czerwiec 2017, 08:06

Stało mi się, kiedy miałem oddzielną sesję Tensorlow działającą w innym terminalu. Zamykanie tego terminala działało.

12
Tobias Feil 30 styczeń 2020, 19:36