Tensorflow |在tf.train.Supervisor下提供占位符

问题描述 投票:0回答:1

我之前使用过Supervisor会话来管理FIFOQueues没有问题。但是,我遇到了下面的简单代码的问题,这给了我错误消息:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'W' with dtype float
   [[Node: W = Placeholder[dtype=DT_FLOAT, shape=<unknown>, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
import tensorflow as tf
LOG_DIR = 'log/sv/'

def using_supervisor ():
    with tf.Graph ().as_default ():
        W = tf.placeholder (tf.float32, name = 'W')
        W = tf.multiply (W, 100)
        moving_mean = tf.random_normal (shape = [10], mean = W, stddev = 1)

        tf.summary.histogram ("moving_mean", moving_mean)
        summary_op = tf.summary.merge_all ()

        sv = tf.train.Supervisor (logdir = LOG_DIR)
        with sv.managed_session () as sess:
            K = 2
            for i in range (K):
                result = sess.run (summary_op, feed_dict = {W: float (i)})
        sess.close ()

#----------------------------------------        
if __name__ == "__main__":
    using_supervisor ()

有什么想法吗?

显然,没有正当理由将监督会话用于这个简单的程序,因为我没有利用它,但只是混淆了为什么它不起作用。

python tensorflow
1个回答
0
投票

tf.train.Supervisor is deprecated!感谢tensorflow开发人员提供正确的警告信息!切换到tf.train.MonitoredSession,它的工作原理!

import tensorflow as tf
LOG_DIR = 'log/'

def run ():
    with tf.Graph ().as_default ():
        W = tf.placeholder (tf.float32, name = 'W')
        W = tf.multiply (W, 100)
        moving_mean = tf.random_normal (shape = [10], mean = W, stddev = 1)

        tf.summary.histogram ("moving_mean", moving_mean)
        summary_op = tf.summary.merge_all ()

        with tf.train.MonitoredTrainingSession () as sess:
            K = 2
            for i in range (K):
                result = sess.run (summary_op, feed_dict = {W: float (i)})

#----------------------------------------        
if __name__ == "__main__":
    run ()
© www.soinside.com 2019 - 2024. All rights reserved.