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