python - 在 Keras ResNet 上激活 FGSM 时形状排名不匹配
问题描述
我正在尝试使用 ResNet 50 激活 FGSM keras
,但出现错误:
ValueError: Shape must be rank 4 but is rank 5 for 'model_1/conv1_pad/Pad' (op: 'Pad') with input shapes: [2,1,224,224,3], [4,2].
我的代码是:
from keras.applications.resnet50 import ResNet50
model = ResNet50(weights='imagenet')
images = ['images/dog1.jpg', 'images/image_0001.jpg']
for image_path in images:
img = image.load_img(image_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
X.append(x)
wrap = KerasModelWrapper(model)
target = [np.zeros((1000,))]
target[0][0] = 1
target = np.repeat(target, len(X), axis=0)
fgsm_params = {
'eps': 0.05,
# 'clip_min': 0.,
# 'clip_max': 1.,
'y_target': target
}
X = np.array(X)
x_tensor = K.variable(X)
print(type(X))
print(X.shape)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
fgsm = FastGradientMethod(wrap, sess=sess)
adv = fgsm.generate(x_tensor, **fgsm_params)
系统配置 - 操作系统 - Python 3.7 版 - TensorFlow 1.13 版
解决方案
原来我需要将我x
的浮点数更改为 0 和 1 之间:
for image_path in file_list:
img = image.load_img(image_path, target_size=(224, 224))
x = image.img_to_array(img)
x = x.astype('float32')
x /= 255
X.append(x)
推荐阅读
- autodesk-forge - 如何从查看器中的选定组件获取 xyz 坐标
- python - 如何将用户输入设置为另一个框架中 Tkinter Entry 小部件的默认文本?
- bash - 从 shell 重定向可执行文件的 stdout/stderr 但不重定向调用时错误
- prometheus - 通过 Rancher 访问 Prometheus 监控值
- python - 美丽的汤断言错误
- css - TYPO3 EXT:Content Element Wrap 和 EXT:GridElements
- nfc - 扫描NFC芯片时在URL中生成唯一的查询字符串值?
- c# - 店铺名称+编号并根据编号按大小排序
- azure - 为什么 Azure 搜索不能导入 JSON Blob?
- python - Seaborn/Matplotlib - 用置信区间刻面线图