首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Supervisor未成功初始化参数

Supervisor未成功初始化参数
EN

Stack Overflow用户
提问于 2017-11-08 09:38:37
回答 1查看 88关注 0票数 0

当我试图用tf.train.Supervisor初始化参数时,它抛出了一个异常,其中网络是用tensorlayer构建的。代码如下:

代码语言:javascript
复制
init_op = tf.global_variables_initializer()
saver = tf.train.Saver()
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
sv = tf.train.Supervisor(logdir=FLAGS.summary_dir, save_summaries_secs=0, saver=None)
with sv.managed_session(config=config) as sess:
       init_ = sess.run(init_op)
       net.print_params()
       net.print_layers()
        tl.layers.print_all_variables()

例外情况是:

代码语言:javascript
复制
Cannot evaluate tensor using `eval()`: No default session is registered. Use `with sess.as_default()` or pass an explicit session to `eval(session=sess)`
Traceback (most recent call last):
  File "/home/recsys/anaconda3/envs/tf1.2/lib/python3.6/site-packages/tensorlayer/layers.py", line 309, in print_params
    val = p.eval()
  File "/home/recsys/anaconda3/envs/tf1.2/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 463, in eval
    return self._variable.eval(session=session)
  File "/home/recsys/anaconda3/envs/tf1.2/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 606, in eval
    return _eval_using_default_session(self, feed_dict, self.graph, session)
  File "/home/recsys/anaconda3/envs/tf1.2/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3914, in _eval_using_default_session
    raise ValueError("Cannot evaluate tensor using `eval()`: No default "
ValueError: Cannot evaluate tensor using `eval()`: No default session is registered. Use `with sess.as_default()` or pass an explicit session to `eval(session=sess)`

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "MainEntryPtb.py", line 65, in <module>
    train_rnn(FLAGS)
  File "/home/recsys/wangjian/learntf/TFTemplate/examples/ptb.py", line 122, in train_rnn
    net.print_params()
  File "/home/recsys/anaconda3/envs/tf1.2/lib/python3.6/site-packages/tensorlayer/layers.py", line 313, in print_params
    raise Exception("Hint: print params details after tl.layers.initialize_global_variables(sess) or use network.print_params(False).")
Exception: Hint: print params details after tl.layers.initialize_global_variables(sess) or use network.print_params(False).

似乎当我运行initialize op init_ = sess.run(init_op)时,它并不能真正工作,就好像参数已经初始化成功一样,net.print_params()不会抛出异常。我也尝试过sv = tf.train.Supervisor(logdir=FLAGS.summary_dir, save_summaries_secs=0, saver=None, init_op=tf.global_variables_initializer())来初始化参数,但同样失败了。

我使用tensorflow v1.2.1和python3.6

EN

回答 1

Stack Overflow用户

发布于 2018-03-18 21:32:41

这个GitHub issue已经清楚地解释了这个问题。

这不是bug,也不是"Supervisor没有成功初始化参数“。

你只要把你的会话改成interactivesession或者使用with sess.as_default,这个问题就解决了。

如果你想知道为什么会发生这个问题,你应该参考print_params定义中的tensorlayer source code

代码语言:javascript
复制
val = p.eval(session=session)

显然,eval仅用于交互会话或with sess.as_default

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47170194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档