2017-01-23 4 views
0

TF 설치 작업이 원활하며 슬림화 작업이 잘 작동합니다.TensorFlow : 슬림 트레이닝 루프가 충돌 함 "등록 된 세션 공장이 없습니다"

그러나 슬림 트레이닝 루프를 실행하려고하면 앱이 다운됩니다.

최소 코드 :이 프로그램을 실행할 때

import tensorflow as tf 
import tensorflow.contrib.slim as slim 


# Load data. 
... 


graph = tf.Graph() 
with graph.as_default(): 

    # Build model 
    ... 

    # Add losses 
    ... 

    # Create training operation and start the actual training loop. 
    train_op = ... 

    # Start training loop 

    slim.learning.train(
     train_op, 
     logdir=FLAGS.logdir, 
     save_summaries_secs=FLAGS.save_summaries_secs, 
     save_interval_secs=FLAGS.save_interval_secs, 
     master=FLAGS.master, 
     is_chief=(FLAGS.task == 0), 
     startup_delay_steps=(FLAGS.task * 20), 
     log_every_n_steps=FLAGS.log_every_n_steps) 

, 내가 얻을 :

E tensorflow/core/common_runtime/session.cc:69] Not found: No session factory registered for the given session options: {target: "local" config: } Registered factories are {DIRECT_SESSION, GRPC_SESSION}. 
Traceback (most recent call last): 
File "tensorflow/tensorflow/contrib/my_package/python/my_package/train.py", line 467, in <module> 
    app.run() 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 44, in run 
    _sys.exit(main(_sys.argv[:1] + flags_passthrough)) 
File "tensorflow/tensorflow/contrib/my_package/python/my_package/train.py", line 462, in main 
    log_every_n_steps=FLAGS.log_every_n_steps) 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/contrib/slim/python/slim/learning.py", line 776, in train 
    master, start_standard_services=False, config=session_config) as sess: 
File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__ 
    return self.gen.next() 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/training/supervisor.py", line 973, in managed_session 
    self.stop(close_summary_writer=close_summary_writer) 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/training/supervisor.py", line 801, in stop 
    stop_grace_period_secs=self._stop_grace_secs) 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/training/coordinator.py", line 386, in join 
    six.reraise(*self._exc_info_to_raise) 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/training/supervisor.py", line 962, in managed_session 
    start_standard_services=start_standard_services) 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/training/supervisor.py", line 719, in prepare_or_wait_for_session 
    init_feed_dict=self._init_feed_dict, init_fn=self._init_fn) 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/training/session_manager.py", line 256, in prepare_session 
    config=config) 
File "$HOME/.local/lib/python2.7/site-packages/tensorflow/python/training/session_manager.py", line 161, in _restore_checkpoint 
    sess = session.Session(self._target, graph=self._graph, config=config) 
File "$HOME/.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/.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/.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.NotFoundError: No session factory registered for the given session options: {target: "local" config: } Registered factories are {DIRECT_SESSION, GRPC_SESSION}. 

반대로, 같은 모델은 "수동으로"를 호출 할 때 train_op 훈련한다 :

누군가 디버깅을 시작할 생각이 있습니까?

이 필립에게,

답변

1

그것은이 라인과 같은 원인이되는 문제를 감사 : 오류 메시지에서

master=FLAGS.master, 

를,이 슬림하지 않은, sess = tf.Session("local")로 세션을 만들려고 것 같습니다 유효한 세션 대상 스크립트를 실행할 때 --master="" 플래그를 전달하거나 slim.learning.train()에 전화 할 때 master=""을 명시 적으로 설정하십시오.

+0

굉장합니다. 그거야. 고맙습니다! master = "local"이 기본값이라고 생각했습니다. 하지만 이는 특정 회사의 인턴과 같은 다른 환경에있을 때만 적용됩니다 :-) – Phil

+0

예, 분명히 버그 인 것 같습니다 :-). 'master = "local"'은 오픈 소스 버전에서 한번도 사용하지 못했습니다! – mrry