我是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]
因为在我的模型中:
^{pr2}$裁剪后,输入大小为[?,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)
我得到了上面的错误,有人能帮我吗?或者指出另一种弥补差异的方法
我怀疑您试图将tensorflow视为一种过程性语言,而不是声明性语言。如果在创建会话之后有tensorflow语句,那么它几乎总是一个bug,并且是最常见的错误之一。但是,您还没有发布足够的代码来确定问题的确切位置。在
似乎您正在使用numpy进行填充,因此填充操作的结果应该传递到一个
sess.run
调用中,您不需要会话来执行任何操作。在另外,您可以简单地将填充步骤添加到tensorflow图中,因此以形状
[?, 1328, 2560, 1]
形式输入,然后在tf.placeholder
的定义之后使用tf.pad
来填充它。然后确保占位符期望的是较小的形式,一切都应该正常。在我总是建议您创建一个
build_graph()
函数,您可以在其中放置所有的张量和OP定义。您不应该在打开会话后创建任何tensorflow构造。将tensorflow看作有两个阶段:(1)构建一个要使用的操作的图形,然后(2)将数据传递到图形(占位符)中,并要求计算各种值(sess.run
)。在相关问题 更多 >
编程相关推荐