我在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)
答案 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)
不幸的是,目前尚不清楚该问题为何能解决问题或可能如何影响培训/评估,因此请在进行此更改后仔细监视结果。