x = tf.placeholder中的invalidargument错误(" float",shape = [None,D],name =' Input_data')

时间:2017-04-04 16:51:54

标签: tensorflow deep-learning

我正在训练一个具有多个输入的模型,用于10倍交叉验证。我使用一个循环训练10次模型与10个不同的输入。 第一次使用第一个输入数据,网络训练和完成。 我用

sess.close()

最后关闭上一个会话并删除所有以前的数据。但是当在第二次迭代中给出第二次输入时,训练停止并在下面给出以下错误:

x = tf.placeholder("float", shape=[None, D], name='Input_data')

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'Input_data' with dtype float
 [[Node: Input_data = Placeholder[dtype=DT_FLOAT, shape=[], _device="/job:localhost/replica:0/task:0/gpu:0"]()]]
 [[Node: Evaluating_accuracy/Mean/_91 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_145_Evaluating_accuracy/Mean", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]

我该如何解决这个问题。如果它第一次起作用,那么它为什么第二次没有使用新数据。尽管我关闭了上一届会议。

1 个答案:

答案 0 :(得分:1)

您可能在两次折叠之间重新定义图表。您应该在不重新定义图形的情况下创建新会话。

第一次在python变量x中存储指向占位符节点的指针时运行tf.placeholder命令。当您第二次运行它时,您将覆盖该指针。基本上,你有内存泄漏。现在有两个占位符节点。其中一个指向x,原始的一个被泄露。