InvalidArgumentError:您必须使用dtype float和shape [?,1339,2560,1]为占位符张量'input_1'提供值

时间:2018-03-15 14:57:11

标签: python tensorflow keras

我是tensorflow的新手,使用keras时出现以下错误:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'input_1' with dtype float and shape [?,1339,2560,1]

因为在我的模型中:

model = Model(input=inputs, output=conv13).

裁剪后输入大小为[?,1339,2560,1],输出大小为[?,1328,2560,1],所以我想在numpy中使用pad来弥补差异:

sess=tf.Session()   
sess.run(tf.initialize_all_variables())  
conv12_ar = conv12.eval(session=sess)   
conv13_tem = np.pad(conv12_ar, ((0, 0),(5, 6), (0, 0), (0, 0)), 'edge')  
conv13 = tf.convert_to_tensor(conv13_tem)  

我得到上面的错误,任何人都可以帮助我吗?或指出弥补差异的另一种方式

1 个答案:

答案 0 :(得分:0)

我怀疑你是试图将张量流作为一种程序性语言来处理,而不是声明性的。如果您在创建会话后有tensorflow语句,并且在最常见的错误中,它几乎总是一个错误。您还没有发布足够的代码来确定问题的确切位置。

看来你正在使用numpy进行填充,因此填充操作的结果应该传递给sess.run调用,你不需要会话在这里做任何事情。

此外,您可以简单地将填充步骤添加到张量流图中,因此请在形状[?, 1328, 2560, 1]中输入,然后在tf.placeholder使用tf.pad的定义后立即填充它。然后确保占位符期望较小的形式,一切都应该有效。

我总是建议您创建一个build_graph()函数,在其中放置所有张量和OP定义。打开会话后,永远不应创建任何tensorflow结构。将tensorflow视为有两个阶段:(1)构建要使用的操作的图形,然后(2)将数据传递到图形(占位符)并要求计算各种值({{1} })。