如何解决python中的“您必须使用dtype float和shape [?,1,680,1]输入占位符张量'Placeholder_2'的值”错误?

时间:2019-04-29 09:18:18

标签: python tensorflow generative-adversarial-network

我在Cleverhans库中运行修改后的代码时遇到问题。我正在尝试运行mnist_blackbox.py示例的修改版本。输入为3 * 680 * 1,而不是28 * 28 * 1。 x_adv_sub是一个1 * 680 * 1张量,并与x_test_rest_tf组合为一个2 * 680 * 1张量,以生成{*的一个3 * 680 * 1 concat_adv张量1}}功能。

model_eval

但是,当它运行时会引发以下错误:

  

“ tensorflow.python.framework.errors_impl.InvalidArgumentError:您   必须使用dtype输入占位符张量“ Placeholder_2”的值   浮点和形状[?,1,680,1]“

我什至尝试将相同的三个1 * 680 * 1 accuracy = model_eval(sess, x, y, model.get_logits(concat_adv), x_test, y_test, args=eval_params) 张量连接起来,以输入到x_adv_sub函数,但是仍然出现相同的错误。
model_eval

我不知道如何连接定义为占位符的张量。如果有人可以帮助我,我真的很感激。

这是代码的一部分:

concat_adv=tf.concat([x_adv_sub, x_adv_sub,x_adv_sub], 1)

1 个答案:

答案 0 :(得分:0)

这可能与cleverhans仓库中的issue有关。

尝试在对model.fit()model.eval()的调用之前插入以下内容:

from keras import backend as K
K.set_learning_phase(False)

或者,如果使用tf.keras

import tensorflow.keras.backend as K
K.set_learning_phase(False)

不幸的是,目前尚不清楚该问题为何能解决问题或可能如何影响培训/评估,因此请在进行此更改后仔细监视结果。