Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定什么是修改TensorFlow图_Tensorflow - Fatal编程技术网

确定什么是修改TensorFlow图

确定什么是修改TensorFlow图,tensorflow,Tensorflow,我试图使用tf.train.Supervisor(),但收到以下错误:运行时错误:图形已完成,无法修改。 问题很明显,我是在实例化一个主管(并由确认)后修改图表的,但它没有告诉我如何找到修改图表的位置。我已经阅读了我的代码,没有什么看起来像是明显的罪魁祸首,尽管在我发布的另一个问题中,我发现.minimize()会改变图表,所以我可能会犯类似的错误 这是我的密码。然而,当我对发现我的bug感兴趣时,我也对学习如何解决这个问题感兴趣 tf.set_random_seed(seed=0) super

我试图使用
tf.train.Supervisor()
,但收到以下错误:
运行时错误:图形已完成,无法修改。

问题很明显,我是在实例化一个主管(并由确认)后修改图表的,但它没有告诉我如何找到修改图表的位置。我已经阅读了我的代码,没有什么看起来像是明显的罪魁祸首,尽管在我发布的另一个问题中,我发现
.minimize()
会改变图表,所以我可能会犯类似的错误

这是我的密码。然而,当我对发现我的bug感兴趣时,我也对学习如何解决这个问题感兴趣

tf.set_random_seed(seed=0)
supervisor = tf.train.Supervisor(logdir=tf.flags.FLAGS.log_dir,
                                 global_step=model.global_step)

# create coordinator to handle threading
coord = tf.train.Coordinator()

supervisor = tf.train.Supervisor(logdir=tf.flags.FLAGS.log_dir,
                                 global_step=global_step)

with supervisor.managed_session() as sess:

    # start threads to enqueue input minibatches for training
    threads = tf.train.start_queue_runners(sess=sess, coord=coord)

    # initialize all variables and ops
    sess.run(tf.global_variables_initializer())

    start_time = time.time()

    # train
    for step in range(1, tf.flags.FLAGS.training_steps + 1):

        # check for any raised exceptions
        if supervisor.should_stop():
            break

        train_op(sess, model, x_train, y_train, y_lengths_train)

        # every 100 steps, evaluate model metrics and write summaries to disk
        if step % 10 == 0 or step == tf.flags.FLAGS.training_steps:
            eval_op(sess, model, x_valid, y_valid, y_lengths_valid, start_time)
            start_time = time.time()

    # when done, ask the threads to stop
    coord.request_stop()

    # wait for threads to finish
    coord.join(threads)
这是我的“火车号”的代码:

def train_op(sess, model, x_minibatch, y_minibatch, y_lengths_minibatch):
    """
    Training operation(s) for model.
    """

    # dequeue training data
    x_values, y_values, y_lengths_values = sess.run([x_minibatch, y_minibatch, y_lengths_minibatch])

    # permute training data for robustness
    x_values, y_values = permute_values(x_values, y_values)

    # minimize loss
    sess.run([model.train_op], feed_dict={model.x: x_values,
                                      model.y_actual: y_values,
                                      model.y_actual_lengths: y_lengths_values})
这是我的
eval_op
的代码:

def eval_op(sess, model, x_minibatch, y_minibatch, y_lengths_minibatch, start_time):
    """
    Evaluation operation(s) for model.
    """

    x_values, y_values, y_lengths_values = sess.run([x_minibatch, y_minibatch, y_lengths_minibatch])

    loss, metrics, step = sess.run([model.loss, model.metrics, model.global_step],
                                   feed_dict={model.x: x_values,
                                          model.y_actual: y_values,
                                          model.y_actual_lengths: y_lengths_values})

    print('Step Number: {}\tLength of Y: {}'.format(step + 1, y_lengths_values))

    print('Elapsed time: {:.2f}\tLoss: {:.4f}\tAccuracy: {:.4f}'.format(time.time() - start_time, loss,
                                                                    metrics['accuracy']))

打印有
RuntimeError
的堆栈跟踪应该指示错误发生时调用的函数


然而,根据您的代码,我怀疑是调用将新的op添加到图形中。因为您正在使用,所以不必调用它,因为主管(默认情况下)负责初始化变量。因此,您可以删除行
sess.run(tf.global\u variables\u initializer())

您的怀疑是正确的-谢谢!关于堆栈跟踪,你是对的-我只是找的不够多。