我是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)
我得到上面的错误,任何人都可以帮助我吗?或指出另一种弥补差异的方法
我怀疑你是试图将张量流作为一种程序性语言来处理而不是声明性的。如果在创建会话后有tensorflow语句,并且在最常见的错误中,这几乎总是一个错误。您还没有发布足够的代码来确定问题的确切位置。
看来你正在使用numpy来做填充,所以填充操作的结果应该传递给sess.run
调用,你不需要会话在这里做任何事情。
此外,您可以简单地将填充步骤添加到张量流图,因此在[?, 1328, 2560, 1]
形状中输入,然后在tf.placeholder
的定义之后使用tf.pad
来填充它。然后确保占位符期望较小的表单,一切都应该工作。
我总是建议创建一个build_graph()
函数,您可以放置所有张量和OP定义。打开会话后,永远不应创建任何tensorflow结构。将tensorflow视为具有两个阶段:(1)构建要使用的操作的图形,然后(2)将数据传递到图形(占位符)并要求计算各种值(sess.run
)。