Tensorflow: impossible de créer la session
J'obtiens une erreur lorsque je lance mon code, l'erreur est:
tensorflow.python.cadre.errors_impl.InternalError: impossible de créer la session.
Voici mon code:
# -*- 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()
Et voici mon erreur:
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.
- Vous n'avez pas initialiser les variables de votre graphique. Ajoutez cette ligne
init_op = tf.global_variables_initializer()
avantwith tf.Session() as sess
. Et d'ajouter cettesess.run(init_op)
aprèswith tf.Session() as sess:
- L'esprit d'accepter une réponse comme correcte? 🙂
Vous devez vous connecter pour publier un commentaire.
Peut-être que ce n'est pas la réponse à la question d'origine w.r.t. son contexte, mais il peut encore être utile pour les autres. J'ai eu l'erreur ci-dessus lorsque j'ai eu un distinct Tensorflow session de l'exécution dans un autre terminal. La fermeture de ce terminal fait le travail pour moi.
peut-être hors de la mémoire GPU? Essayez de courir avec
Veuillez aussi fournir des détails sur le contenu de la plate-forme (système d'exploitation, architecture). Également inclure votre TensorFlow version.
Avez-vous été en mesure de créer une simple session de console python. Quelque chose comme ceci:
Après l'exécution de
votre tensorflow ne peut pas utiliser le GPU. Il peut commencer la formation à l'aide du modèle de CPU.
Vous pouvez trouver une meilleure solution ici. Cela ne nécessite pas un redémarrage, et vous pouvez l'appliquer dans le serveur.
J'ai eu exactement le même problème et c'est ce que j'ai fait:
Pilote Nvidia:
$ nvidia-smi
| NVIDIA-SMI 384.130 Version du Pilote: 384.130
A trouvé de pilote 384.130
Mise À Jour Du Pilote
$ sudo add-apt-repository ppa:graphiques-pilotes/ppa
$ sudo apt update
Le journal ci-dessus a montré nvidia 396 est en cours d'installation.
Redémarré la machine et vérifié les pilotes nvidia:
Vérifié nvcc:
Vérifié Cuda:
Vérifié Conda & Tensroflow
Enfin testé tensorflow nouveau
Tout a fonctionné. Le problème était que le pilote nvidia n'était pas compatible avec cuda tensorflow j'ai donc mis à jour pour la dernière et cela a fonctionné.
Dans mon cas, il m'a aidé à revenir à tensorflow 1.9.0 comme il a été suggéré ici (Anaconda avait installé la version 1.10.0). Il s'installe automatiquement la bonne version de Cuda (9.0 au lieu de 9,2 hors de ma tête). Le déclassement est simple dans Anaconda:
conda install tensorflow=1.9.0
Qui a fonctionné pour moi. Cette configuration fonctionne avec Keras 2.2.2.
Dans le cas que je viens de résoudre, elle a été mise à jour du pilote du GPU pour le dernier et l'installation de la cuda toolkit. Tout d'abord, le ppa a été ajouté et le GPU driver installé:
Après l'ajout du ppa, il a montré des options pour les versions de pilote, et 390 a été la dernière "stable" de la version qui a été montré.
Ensuite installer le cuda toolkit:
Puis reboot:
À jour les pilotes pour une version plus récente que la 390 installés à l'origine dans la première étape (il était de 410; c'était un p2.xlarge exemple sur AWS).
Êtes-vous à l'aide de GPU? Si oui, peut-être que c'est simplement de la Mémoire GPU en raison de la procédure précédente n'a pas pu être tué.
Ce billet m'aide à identifier le problème: https://github.com/tensorflow/tensorflow/issues/9549
Pour voir votre GPU statut: en terminale,
nvidia-smi -l 2
de mettre à jour votre gpu stat toutes les 2 secondesCe post vous montre comment tuer le processus actuellement en train de prendre toute la mémoire de votre GPU: https://www.quora.com/How-do-I-kill-all-the-computer-processes-shown-in-nvidia-smi