Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 使用带有SavedModel的GradientTape对输入进行梯度下降_Tensorflow_Autodiff - Fatal编程技术网

Tensorflow 使用带有SavedModel的GradientTape对输入进行梯度下降

Tensorflow 使用带有SavedModel的GradientTape对输入进行梯度下降,tensorflow,autodiff,Tensorflow,Autodiff,我试图对使用SavedModelAPI加载的模型进行对抗性攻击。我想对我的输入做一个梯度下降,关于给定目标的模型的损失。代码有点长,但它是说明问题的最小值 来自未来导入绝对导入、除法、打印函数、unicode文本 从tensorflow进口keras 从tensorflow.keras导入图层、模型 导入tensorflow作为tf 从sklearn.dataset导入make_分类 从sklearn.model\u选择导入列车\u测试\u拆分 #创建数据集 十、 y=进行分类(n_样本=100

我试图对使用
SavedModel
API加载的模型进行对抗性攻击。我想对我的输入做一个梯度下降,关于给定目标的模型的损失。代码有点长,但它是说明问题的最小值

来自未来导入绝对导入、除法、打印函数、unicode文本
从tensorflow进口keras
从tensorflow.keras导入图层、模型
导入tensorflow作为tf
从sklearn.dataset导入make_分类
从sklearn.model\u选择导入列车\u测试\u拆分
#创建数据集
十、 y=进行分类(n_样本=10000,n_信息=10)
十、 X_测试,y,y_测试=列车试验分割(X,y)
#训练模型
model=models.Sequential()
model.add(layers.Dense(10,activation='relu'))
model.add(layers.Dense(2,activation='softmax',name=“output”))
model.compile(优化器='adam',
损失=“稀疏”\u分类”\u交叉熵',
指标=[‘准确度’])
模型拟合(X,y,
纪元=10,
批次大小=32,
详细信息=0)
打印(f“最终精度为{model.evaluate(X_检验,y_检验,verbose=0)[1]}”)
#保存并加载它
tf.saved_model.save(model,“/content/demo”)
loaded_model=tf.saved_model.load(“/content/demo”)
推理功能=加载的模型签名[“服务默认值”]
#树立对抗性榜样
x=tf.random.normal([1,20])
x=tf.变量(x)
target=tf.convert_to_tensor([0,1],dtype=tf.float32)
cce=tf.keras.loss.CategoricalCrossentropy()
将tf.GradientTape()作为t:
t、 手表(x)
y=推理函数(x)[“输出”]
损失=cce(目标,y)
dl_dx=t.梯度(损耗,x)
x、 分配子项(学习率*dl\U dx)
打印(x.numpy())
我得到以下错误:

final accuracy is 0.8899999856948853
INFO:tensorflow:Assets written to: /content/demo/assets
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-31-1b61c316b9dc> in <module>()
     40 with tf.GradientTape() as t:
     41     t.watch(x)
---> 42     y = inference_func(x)["output"]
     43     loss = cce(target, y)
     44 dl_dx = t.gradient(loss, x)

6 frames
/usr/local/lib/python3.6/dist-packages/six.py in raise_from(value, from_value)

InvalidArgumentError: cannot compute __forward_signature_wrapper_147414 as input #0(zero-based) was expected to be a float tensor but is a resource tensor [Op:__forward_signature_wrapper_147414]
最终精度为0.8899989856948853
信息:tensorflow:资产写入:/content/demo/Assets
---------------------------------------------------------------------------
InvalidArgumentError回溯(最后一次最近调用)
在()
40,tf.GradientTape()为t:
41吨手表(x)
--->42 y=推理函数(x)[“输出”]
43损失=cce(目标,y)
44 dl_dx=t.梯度(损耗,x)
6帧
/raise_from(value,from_value)中的usr/local/lib/python3.6/dist-packages/six.py
InvalidArgumentError:无法将uu-forward_-signature_-wrapper_147414计算为输入#0(基于零)应为浮点张量,但为资源张量[Op:u-forward_-signature_-wrapper_147414]

我对低水平的tensorflow很陌生,我还不太了解它是如何工作的。我相信这个问题与我的推理函数不是真正的
@tf.function
有关,因为它的类型是
tensorflow.python.saved\u model.load.\u WrapperFunction
。但是我怎样才能检索到真正的函数呢?

我找到了!所以我要找的函数是在
加载的模型中。我不知道为什么tensorflow博士没有解释清楚