Skip to content

Commit

Permalink
优化
Browse files Browse the repository at this point in the history
  • Loading branch information
duoergun0729 committed Jul 5, 2019
1 parent eec977d commit f9245c0
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 48 deletions.
21 changes: 21 additions & 0 deletions sdk/attack_pp.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,27 @@ def process_img(img_path="",image_shape=[3,224,224]):

return img

def tensor2img(tensor):

mean = [0.485, 0.456, 0.406]
std = [0.229, 0.224, 0.225]

img_mean = np.array(mean).reshape((3, 1, 1))
img_std = np.array(std).reshape((3, 1, 1))

img=tensor.copy()

img *= img_std
img += img_mean

img = np.round(img*255)
img = np.clip(img,0,255)

img=img[0].astype(np.uint8)

img = img.transpose(1, 2, 0)

return img

"""
Explaining and Harnessing Adversarial Examples, I. Goodfellow et al., ICLR 2015
Expand Down
60 changes: 12 additions & 48 deletions sdk_demo.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -46,45 +46,6 @@
"from sdk.attack_pp import *\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'\\nuse_gpu=False\\n\\nx = fluid.layers.data(name=\"x\", shape=[1] ,dtype=\\'int32\\')\\nx.stop_gradient=False\\ny = x*3\\n\\ng = fluid.backward.gradients(targets=y, inputs=[x])[0]\\n\\nplace = fluid.CUDAPlace(0) if use_gpu else fluid.CPUPlace()\\nexe = fluid.Executor(place)\\nexe.run(fluid.default_startup_program())\\n\\nresult = exe.run(fluid.default_main_program(),\\n fetch_list=[y.name],\\n feed={ \\'x\\':np.array([1]).astype(\\'int32\\') })\\n#result = result[0][0]\\n\\nprint(result)\\n'"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\"\"\"\n",
"use_gpu=False\n",
"\n",
"x = fluid.layers.data(name=\"x\", shape=[1] ,dtype='int32')\n",
"x.stop_gradient=False\n",
"y = x*3\n",
"\n",
"g = fluid.backward.gradients(targets=y, inputs=[x])[0]\n",
"\n",
"place = fluid.CUDAPlace(0) if use_gpu else fluid.CPUPlace()\n",
"exe = fluid.Executor(place)\n",
"exe.run(fluid.default_startup_program())\n",
"\n",
"result = exe.run(fluid.default_main_program(),\n",
" fetch_list=[y.name],\n",
" feed={ 'x':np.array([1]).astype('int32') })\n",
"#result = result[0][0]\n",
"\n",
"print(result)\n",
"\"\"\""
]
},
{
"cell_type": "markdown",
"metadata": {},
Expand All @@ -94,15 +55,12 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#http://www.paddlepaddle.org.cn/documentation/docs/zh/1.5/user_guides/howto/prepare_data/index_cn.html\n",
"\n",
"#fluid.default_startup_program().random_seed = 1\n",
"#fluid.default_main_program().random_seed = 1\n",
"\n",
"class_dim=1000\n",
"image_shape=[3,224,224]\n",
"model_name=\"resnet50\"\n",
Expand All @@ -112,6 +70,7 @@
"\n",
"adv_program=fluid.Program()\n",
"\n",
"#完成初始化\n",
"with fluid.program_guard(adv_program):\n",
" input_layer = fluid.layers.data(name='image', shape=image_shape, dtype='float32')\n",
" #设置为可以计算梯度\n",
Expand All @@ -133,6 +92,7 @@
"#创建测试用评估模式\n",
"eval_program = adv_program.clone(for_test=True)\n",
"\n",
"#定义梯度\n",
"with fluid.program_guard(adv_program):\n",
" label = fluid.layers.data(name=\"label\", shape=[1] ,dtype='int64')\n",
" loss = fluid.layers.cross_entropy(input=out, label=label)\n",
Expand All @@ -149,7 +109,7 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": 3,
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -178,7 +138,10 @@
"\n",
"pred_label = np.argsort(result)[::-1][:TOPK]\n",
"print(\"Test-score: {0}, class {1}\".format(result[pred_label], pred_label))\n",
"sys.stdout.flush()"
"sys.stdout.flush()\n",
"\n",
"\n",
"o_img=tensor2img(img)\n"
]
},
{
Expand All @@ -190,7 +153,7 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": 4,
"metadata": {},
"outputs": [
{
Expand All @@ -209,7 +172,8 @@
"#init_prog(fluid.default_main_program())\n",
"\n",
"#生成对抗样本\n",
"adv=FGSM(adv_program=adv_program,eval_program=eval_program,gradients=gradients,o=img,input_layer=input_layer,output_layer=out,step_size=16.0/256.0,isTarget=False,target_label=0)\n",
"adv=FGSM(adv_program=adv_program,eval_program=eval_program,gradients=gradients,o=img,\n",
" input_layer=input_layer,output_layer=out,step_size=16.0/256.0,isTarget=False,target_label=0)\n",
"\n",
" \n",
"result = exe.run(eval_program,\n",
Expand All @@ -232,7 +196,7 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": 5,
"metadata": {},
"outputs": [
{
Expand Down

0 comments on commit f9245c0

Please sign in to comment.