File size: 197,548 Bytes
90555c2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kkK5yOtaEOWL"
   },
   "source": [
    "# <font color=\"purple\">SNR Result</font>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kCzmRkwxler6"
   },
   "source": [
    "**Experiment of Residual Networks**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "scrFZBY5ErKc",
    "outputId": "6e55dc88-b560-4108-d874-7a74704d2b40"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[?25l\r",
      "\u001b[K     |██▏                             | 10kB 31.5MB/s eta 0:00:01\r",
      "\u001b[K     |████▎                           | 20kB 34.3MB/s eta 0:00:01\r",
      "\u001b[K     |██████▍                         | 30kB 39.2MB/s eta 0:00:01\r",
      "\u001b[K     |████████▌                       | 40kB 28.0MB/s eta 0:00:01\r",
      "\u001b[K     |██████████▋                     | 51kB 30.6MB/s eta 0:00:01\r",
      "\u001b[K     |████████████▊                   | 61kB 26.3MB/s eta 0:00:01\r",
      "\u001b[K     |██████████████▉                 | 71kB 24.5MB/s eta 0:00:01\r",
      "\u001b[K     |█████████████████               | 81kB 23.6MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████████             | 92kB 25.2MB/s eta 0:00:01\r",
      "\u001b[K     |█████████████████████▏          | 102kB 22.5MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████████████▎        | 112kB 22.5MB/s eta 0:00:01\r",
      "\u001b[K     |█████████████████████████▍      | 122kB 22.5MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████████████████▌    | 133kB 22.5MB/s eta 0:00:01\r",
      "\u001b[K     |█████████████████████████████▋  | 143kB 22.5MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████████████████████▊| 153kB 22.5MB/s eta 0:00:01\r",
      "\u001b[K     |████████████████████████████████| 163kB 22.5MB/s \n",
      "\u001b[?25h\u001b[?25l\r",
      "\u001b[K     |████████                        | 10kB 35.3MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████▉                | 20kB 39.4MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████████████▊        | 30kB 43.7MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████████████████████▊| 40kB 46.9MB/s eta 0:00:01\r",
      "\u001b[K     |████████████████████████████████| 51kB 9.3MB/s \n",
      "\u001b[?25h"
     ]
    }
   ],
   "source": [
    "!pip install -qq -e git+http://github.com/tensorflow/cleverhans.git#egg=cleverhans\n",
    "import sys\n",
    "sys.path.append('/content/src/cleverhans')\n",
    "import cleverhans\n",
    "folder_name = \"./adversarial_examples_parseval_net/src/logs/saved_models/\"\n",
    "folder_name = \"\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "P3Ic_pclEOWd",
    "outputId": "508c4768-c6b7-44f5-b875-9bc30b7e33b6"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Tensorflow Version: 2.4.0\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "from cleverhans.future.tf2.attacks import fast_gradient_method\n",
    "from tensorflow.keras.optimizers import SGD\n",
    "from tensorflow.keras.callbacks import Callback, LearningRateScheduler, EarlyStopping\n",
    "from sklearn.model_selection import train_test_split\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from tensorflow.keras.utils import to_categorical\n",
    "\n",
    "from sklearn.model_selection import  KFold\n",
    "import gzip\n",
    "import pickle\n",
    "import numpy as np\n",
    "\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "print(\"\\nTensorflow Version: \" + tf.__version__)\n",
    "\n",
    "\n",
    "# defined utility functions\n",
    "#from preprocessing import preprocessing_data\n",
    "\n",
    "from _utility import lrate, get_adversarial_examples, print_test\n",
    "#from wresnet import WideResidualNetwork\n",
    "#from parsevalnet import ParsevalNetwork\n",
    "#import pandas as pd\n",
    " "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "PDl5l5VOPrDj"
   },
   "outputs": [],
   "source": [
    "!cp drive/MyDrive/ARAS/*  models/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "id": "7NJdmKEXQ7wY"
   },
   "outputs": [],
   "source": [
    "!cp drive/MyDrive/adversarial_examples_parseval_net/data.pz models/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "hcPFBUjdPrcD",
    "outputId": "588c52dd-a9fc-4eb7-e789-3adf3b434788"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mounted at /content/drive\n"
     ]
    }
   ],
   "source": [
    "from google.colab import drive\n",
    "drive.mount('/content/drive')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Psk-FZmvP6m_"
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "id": "sPqR9xN9EOWp"
   },
   "outputs": [],
   "source": [
    "epsilon_list = [i/1000 for i in range(0,40)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "gLczK1jwhP4L"
   },
   "outputs": [],
   "source": [
    "epsilon_list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "3A8qMxGap02K",
    "outputId": "34500939-0786-4d2e-949b-94ffe0d95ed3"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting hickle\n",
      "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/24/c8/af2d17ea98d7eb60ad05689c0509c5c3538a603344818c3d5f0f5c004f1e/hickle-4.0.3-py3-none-any.whl (48kB)\n",
      "\r",
      "\u001b[K     |██████▊                         | 10kB 25.5MB/s eta 0:00:01\r",
      "\u001b[K     |█████████████▌                  | 20kB 16.2MB/s eta 0:00:01\r",
      "\u001b[K     |████████████████████▏           | 30kB 14.9MB/s eta 0:00:01\r",
      "\u001b[K     |███████████████████████████     | 40kB 14.8MB/s eta 0:00:01\r",
      "\u001b[K     |████████████████████████████████| 51kB 6.4MB/s \n",
      "\u001b[?25hRequirement already satisfied: h5py<3.0.0,>=2.8.0 in /usr/local/lib/python3.6/dist-packages (from hickle) (2.10.0)\n",
      "Requirement already satisfied: numpy>=1.8 in /usr/local/lib/python3.6/dist-packages (from hickle) (1.19.4)\n",
      "Requirement already satisfied: dill>=0.3.0 in /usr/local/lib/python3.6/dist-packages (from hickle) (0.3.3)\n",
      "Requirement already satisfied: six>=1.11.0 in /usr/local/lib/python3.6/dist-packages (from hickle) (1.15.0)\n",
      "Installing collected packages: hickle\n",
      "Successfully installed hickle-4.0.3\n"
     ]
    }
   ],
   "source": [
    "!pip install hickle\n",
    "import hickle as hkl"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "id": "tYtYNWlmE-yj"
   },
   "outputs": [],
   "source": [
    "data = hkl.load(\"data.hkl\")\n",
    "X_train, X_test, Y_train, y_test = data['xtrain'], data['xtest'], data['ytrain'], data['ytest']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "id": "R69Nc9UkRrti"
   },
   "outputs": [],
   "source": [
    "\n",
    "BS = 64\n",
    "init = (32, 32,1)\n",
    "opt = SGD(lr=0.1, momentum=0.9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "lxrpq-u_cSEd"
   },
   "outputs": [],
   "source": [
    "\n",
    "parseval = ParsevalNetwork(init, 0.0001, 0.9, nb_classes=4, N=2, k=1, dropout=0.0)\n",
    "resnet = WideResidualNetwork(init, 0.0001, 0.9, nb_classes=4, N=2, k=1, dropout=0.0)\n",
    "parseval_model = parseval.create_wide_residual_network()\n",
    "parseval_model_da = parseval.create_wide_residual_network()\n",
    "resnet_model = resnet.create_wide_residual_network()\n",
    "resnet_model_da = resnet.create_wide_residual_network()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "YA4uSa__VoEe"
   },
   "outputs": [],
   "source": [
    "def evaluation_result(frame, model, model_da, index):\n",
    "    for i, epsilon in enumerate(epsilon_list):\n",
    "        x_adv  =  get_adversarial_examples(model,X_test, y_test, epsilon)\n",
    "        SNR = 20*np.log10(np.linalg.norm(X_test)/np.linalg.norm(X_test-x_adv))\n",
    "        test = model.evaluate(x_adv, y_test, verbose = 0.0)\n",
    "        test_da = model_da.evaluate(x_adv, y_test, verbose = 0.0)\n",
    "        row = {\"acc\":test[1], \"acc_da\": test_da[1],\"SNR\":SNR}\n",
    "        frame = frame.append(row,  ignore_index=True)\n",
    "    return frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "azXld8ReZcGG"
   },
   "outputs": [],
   "source": [
    "df_parseval_1 = pd.DataFrame()\n",
    "df_parseval_2 = pd.DataFrame()\n",
    "df_parseval_3 = pd.DataFrame()\n",
    "df_parseval_4 = pd.DataFrame()\n",
    "df_parseval_5 = pd.DataFrame()\n",
    "df_parseval_6 = pd.DataFrame()\n",
    "df_parseval_7 = pd.DataFrame()\n",
    "df_parseval_8 = pd.DataFrame()\n",
    "df_parseval_9 = pd.DataFrame()\n",
    "df_parseval_0 = pd.DataFrame()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "-87OuDRbtLbW"
   },
   "outputs": [],
   "source": [
    "list_df = []\n",
    "list_df.append(df_parseval_0)\n",
    "list_df.append(df_parseval_1)\n",
    "list_df.append(df_parseval_2)\n",
    "list_df.append(df_parseval_3)\n",
    "list_df.append(df_parseval_4)\n",
    "list_df.append(df_parseval_5)\n",
    "list_df.append(df_parseval_6)\n",
    "list_df.append(df_parseval_7)\n",
    "list_df.append(df_parseval_8)\n",
    "list_df.append(df_parseval_9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "tx9dfUCwUoU9"
   },
   "outputs": [],
   "source": [
    "column_name = \"test_\"\n",
    "column_name_da = \"test_da_\"\n",
    "\n",
    "for i in range(10):\n",
    "    model_name = \"Parseval_\"+str(i)+\".h5\"\n",
    "    model_name_da = \"Parseval_da_\"+str(i)+\".h5\"\n",
    "    parseval_model.load_weights(model_name)\n",
    "    parseval_model_da.load_weights(model_name_da)\n",
    "    parseval_model.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    parseval_model_da.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    list_df[i] = evaluation_result(list_df[i], parseval_model, parseval_model_da, i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "TB2Qf4h-uCEW"
   },
   "outputs": [],
   "source": [
    "mean_acc = (list_df[0][\"acc\"]+list_df[1][\"acc\"]+list_df[2][\"acc\"]+list_df[3][\"acc\"]+list_df[4][\"acc\"]+list_df[5][\"acc\"]+list_df[6][\"acc\"]+list_df[7][\"acc\"]+list_df[8][\"acc\"]+list_df[9][\"acc\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Ih9SU1Q91zP9"
   },
   "outputs": [],
   "source": [
    "mean_acc_da = (list_df[0][\"acc_da\"]+list_df[1][\"acc_da\"]+list_df[2][\"acc_da\"]+list_df[3][\"acc_da\"]+list_df[4][\"acc_da\"]+list_df[5][\"acc_da\"]+list_df[6][\"acc_da\"]+list_df[7][\"acc_da\"]+list_df[8][\"acc_da\"]+list_df[9][\"acc_da\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "I3H-GhGMy88S"
   },
   "outputs": [],
   "source": [
    "df_resnet_1 = pd.DataFrame()\n",
    "df_resnet_2 = pd.DataFrame()\n",
    "df_resnet_3 = pd.DataFrame()\n",
    "df_resnet_4 = pd.DataFrame()\n",
    "df_resnet_5 = pd.DataFrame()\n",
    "df_resnet_6 = pd.DataFrame()\n",
    "df_resnet_7 = pd.DataFrame()\n",
    "df_resnet_8 = pd.DataFrame()\n",
    "df_resnet_9 = pd.DataFrame()\n",
    "df_resnet_0 = pd.DataFrame()\n",
    "list_df_r = []\n",
    "list_df_r.append(df_resnet_0)\n",
    "list_df_r.append(df_resnet_1)\n",
    "list_df_r.append(df_resnet_2)\n",
    "list_df_r.append(df_resnet_3)\n",
    "list_df_r.append(df_resnet_4)\n",
    "list_df_r.append(df_resnet_5)\n",
    "list_df_r.append(df_resnet_6)\n",
    "list_df_r.append(df_resnet_7)\n",
    "list_df_r.append(df_resnet_8)\n",
    "list_df_r.append(df_resnet_9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "CDrVZvnMfyGe"
   },
   "outputs": [],
   "source": [
    "column_name = \"test_\"\n",
    "column_name_da = \"test_da_\"\n",
    "\n",
    "for i in range(10):\n",
    "    model_name = \"ResNet_\"+str(i)+\".h5\"\n",
    "    model_name_da = \"ResNet_da_\"+str(i)+\".h5\"\n",
    "    resnet_model.load_weights(model_name)\n",
    "    resnet_model_da.load_weights(model_name_da)\n",
    "    resnet_model.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    resnet_model_da.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    list_df_r[i] = evaluation_result(list_df_r[i], resnet_model, resnet_model_da, i)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "okr0CEf36OCR"
   },
   "outputs": [],
   "source": [
    "list_df[9]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "Bi3ArlH7hFMr"
   },
   "outputs": [],
   "source": [
    "mean_acc_r = (list_df_r[0][\"acc\"]+list_df_r[1][\"acc\"]+list_df_r[2][\"acc\"]+list_df_r[3][\"acc\"]+list_df_r[4][\"acc\"]+list_df_r[5][\"acc\"]+list_df_r[6][\"acc\"]+list_df_r[7][\"acc\"]+list_df_r[8][\"acc\"]+list_df_r[9][\"acc\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "-UMhh1Wv44Y7"
   },
   "outputs": [],
   "source": [
    "mean_acc_da_r = (list_df_r[0][\"acc_da\"]+list_df_r[1][\"acc_da\"]+list_df_r[2][\"acc_da\"]+list_df_r[3][\"acc_da\"]+list_df_r[4][\"acc_da\"]+list_df_r[5][\"acc_da\"]+list_df_r[6][\"acc_da\"]+list_df_r[7][\"acc_da\"]+list_df_r[8][\"acc_da\"]+list_df_r[9][\"acc_da\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "eGssN3tQ8CMA",
    "outputId": "f66aafe2-fbe5-4673-f150-4f5218093b7e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6956369936466217"
      ]
     },
     "execution_count": 61,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mean_acc_r[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "_ew1CSd783Vf",
    "outputId": "be0f983b-48d3-4c35-b5d3-4703d9d5cfdc"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "40"
      ]
     },
     "execution_count": 60,
     "metadata": {
      "tags": []
     },
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(mean_acc_da_r)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 325
    },
    "id": "6sdUdzSCEOW7",
    "outputId": "0a2bed53-afb1-425a-8d56-491578e2a7c8"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "legend = [\"ResNet\", \"ResNet_da\", \"Parseval\", \"Parseval_da\"]\n",
    "plt.plot(list_df_r[0][\"SNR\"], mean_acc_r, 'o-')\n",
    "plt.plot(list_df_r[0][\"SNR\"], mean_acc_da_r, 'o-')\n",
    "\n",
    "plt.plot(list_df_r[0][\"SNR\"], mean_acc, 'o-')\n",
    "plt.plot(list_df_r[0][\"SNR\"], mean_acc_da, 'o-')\n",
    "\n",
    "plt.title(\"The Performance of the models \\n for varios magnitudes \\n adversarial noise\")\n",
    "plt.ylabel('mean acc of \\n 10 Folds CV')\n",
    "plt.xlabel('SNR')\n",
    "plt.legend(legend, loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "id": "cPqVCc2J-6GU"
   },
   "outputs": [],
   "source": [
    "import json\n",
    "for i in range(len(epsilon_list)):\n",
    "    with open(\"result_ResNet.json\", mode='a', encoding='utf-8') as feedsjson:\n",
    "        data = {\"SNR\":list_df_r[0][\"SNR\"][i], \"mean_ResNet\":mean_acc_r[i],\"mean_ResNet_da\":mean_acc_da_r[i], \"mean_Parseval\":mean_acc[i],\"mean_Parseval_da\":mean_acc_da[i]}\n",
    "        feedsjson.write(json.dumps(data, ensure_ascii=False, indent=4))\n",
    "        feedsjson.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "id": "x7Tqobb5Ruuk"
   },
   "outputs": [],
   "source": [
    "df_sgd_1 = pd.DataFrame()\n",
    "df_sgd_2 = pd.DataFrame()\n",
    "df_sgd_3 = pd.DataFrame()\n",
    "df_sgd_4 = pd.DataFrame()\n",
    "df_sgd_5 = pd.DataFrame()\n",
    "df_sgd_6 = pd.DataFrame()\n",
    "df_sgd_7 = pd.DataFrame()\n",
    "df_sgd_8 = pd.DataFrame()\n",
    "df_sgd_9 = pd.DataFrame()\n",
    "df_sgd_0 = pd.DataFrame()\n",
    "list_df_c = []\n",
    "list_df_c.append(df_sgd_0)\n",
    "list_df_c.append(df_sgd_1)\n",
    "list_df_c.append(df_sgd_2)\n",
    "list_df_c.append(df_sgd_3)\n",
    "list_df_c.append(df_sgd_4)\n",
    "list_df_c.append(df_sgd_5)\n",
    "list_df_c.append(df_sgd_6)\n",
    "list_df_c.append(df_sgd_7)\n",
    "list_df_c.append(df_sgd_8)\n",
    "list_df_c.append(df_sgd_9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "id": "meiehDfhTEuE"
   },
   "outputs": [],
   "source": [
    "from tensorflow.data import Dataset\n",
    "import tensorflow.keras as keras\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "from tensorflow.keras.layers import Conv2D,Input,MaxPooling2D, Dense, Dropout, MaxPool1D, Flatten, AveragePooling1D, BatchNormalization\n",
    "from tensorflow.keras import Model\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Input, Add, Activation, Dropout, Flatten, Dense\n",
    "from tensorflow.keras.layers import Convolution2D, MaxPooling2D, AveragePooling2D\n",
    "from tensorflow.keras.layers import BatchNormalization\n",
    "from tensorflow.keras.regularizers import l2\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras.optimizers import SGD\n",
    "import warnings\n",
    "from constraint import tight_frame\n",
    "\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "def model_parseval(weight_decay):\n",
    "  model = Sequential()\n",
    "  model.add(Conv2D(32, kernel_size=(3, 3),activation='relu', input_shape=(32, 32, 1),kernel_regularizer=l2(weight_decay),kernel_constraint=tight_frame(0.001),kernel_initializer='Orthogonal'))\n",
    "  model.add(Conv2D(64, kernel_size=(3, 3), activation='relu',kernel_regularizer=l2(weight_decay),kernel_initializer='Orthogonal',kernel_constraint=tight_frame(0.001)))\n",
    "  model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "  model.add(BatchNormalization())\n",
    "  model.add(Conv2D(128, kernel_size=(3, 3), activation='relu',kernel_initializer='Orthogonal',kernel_regularizer=l2(weight_decay),kernel_constraint=tight_frame(0.001)))\n",
    "  model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "  model.add(BatchNormalization())\n",
    "  model.add(Conv2D(256, kernel_size=(3, 3), activation='relu',kernel_initializer='Orthogonal', kernel_regularizer=l2(weight_decay),kernel_constraint=tight_frame(0.001)))\n",
    "  model.add(MaxPooling2D(pool_size=(2, 2)))\n",
    "  model.add(BatchNormalization())\n",
    "  model.add(Flatten())\n",
    "  model.add(Dense(4, activation='softmax',kernel_regularizer=l2(weight_decay)))\n",
    "  return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "id": "rUabfb8RT-pC"
   },
   "outputs": [],
   "source": [
    "from tensorflow.data import Dataset\n",
    "import tensorflow.keras as keras\n",
    "from tensorflow.keras.optimizers import Adam\n",
    "from tensorflow.keras.layers import Conv2D,Input,MaxPooling2D, Dense, Dropout, MaxPool1D, Flatten, AveragePooling1D, BatchNormalization\n",
    "from tensorflow.keras import Model\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.models import Sequential\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Input, Add, Activation, Dropout, Flatten, Dense\n",
    "from tensorflow.keras.layers import Convolution2D, MaxPooling2D, AveragePooling2D\n",
    "from tensorflow.keras.layers import BatchNormalization\n",
    "from tensorflow.keras.regularizers import l2\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras.optimizers import SGD\n",
    "import warnings\n",
    "from constraint import tight_frame\n",
    "from convexity_constraint import convex_add\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "\n",
    "def basemodel(weight_decay):\n",
    "  #2 hidden layers\n",
    "    model_input = Input(shape=(32,32,1, ))\n",
    "    model = Conv2D(32, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay),activation='relu', )(model_input)\n",
    "    model = Conv2D(64, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay), activation='relu')(model)\n",
    "    model = MaxPooling2D(pool_size=(2, 2))(model)\n",
    "    model = BatchNormalization()(model)\n",
    "    model = Flatten()(model)\n",
    "    model = Dense(4, kernel_regularizer=l2(weight_decay),activation='softmax')(model)\n",
    "    model = Model(inputs=model_input, outputs=model)\n",
    "    return model\n",
    "\n",
    "\n",
    "def model_2(weight_decay):\n",
    "    model_input = Input(shape=(32,32,1, ))\n",
    "    model = Conv2D(32, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay),activation='relu', )(model_input)\n",
    "    model = Conv2D(64, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay), activation='relu')(model)\n",
    "    model = MaxPooling2D(pool_size=(2, 2))(model)\n",
    "    model = BatchNormalization()(model)\n",
    "    model = Conv2D(128, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay), activation='relu')(model)\n",
    "    model = MaxPooling2D(pool_size=(2, 2))(model)\n",
    "    model = BatchNormalization()(model)\n",
    "    model = Flatten()(model)\n",
    "    model = Dense(4, kernel_regularizer=l2(weight_decay),activation='softmax')(model)\n",
    "    model = Model(inputs=model_input, outputs=model)\n",
    "    return model\n",
    "\n",
    "\n",
    "def model_3(weight_decay):\n",
    "  # 4 hidden layers\n",
    "    model_input = Input(shape=(32,32,1, ))\n",
    "    model = Conv2D(32, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay),activation='relu', )(model_input)\n",
    "    model = Conv2D(64, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay), activation='relu')(model)\n",
    "    model = MaxPooling2D(pool_size=(2, 2))(model)\n",
    "    model = BatchNormalization()(model)\n",
    "    model = Conv2D(128, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay), activation='relu')(model)\n",
    "    model = MaxPooling2D(pool_size=(2, 2))(model)\n",
    "    model = BatchNormalization()(model)\n",
    "    model = Conv2D(256, kernel_size=(3, 3), kernel_regularizer=l2(weight_decay), activation='relu')(model)\n",
    "    model = MaxPooling2D(pool_size=(2, 2))(model)\n",
    "    model = BatchNormalization()(model)\n",
    "    model = Flatten()(model)\n",
    "    model = Dense(4, kernel_regularizer=l2(weight_decay),activation='softmax')(model)\n",
    "    model = Model(inputs=model_input, outputs=model)\n",
    "    return model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "id": "owqtAK0MRyUn"
   },
   "outputs": [],
   "source": [
    "def evaluation_result_fully_connected(frame, sgd, sgd_wd,sgd_wd_da,parseval, index):\n",
    "    test = sgd.evaluate(X_test, y_test, verbose = 0.0)\n",
    "    test_wd = sgd_wd.evaluate(X_test, y_test, verbose = 0.0)\n",
    "    test_wd_da = sgd_wd_da.evaluate(X_test, y_test, verbose = 0.0)\n",
    "    test_parseval = parseval.evaluate(X_test, y_test, verbose = 0.0)\n",
    "    row = {\"acc_sgd\":test[1], \"acc_sgd_wd\": test_wd[1],\"acc_sgd_wd_da\":test_wd_da[1],\"acc_parseval\":test_parseval[1], \"SNR\":100}\n",
    "    frame = frame.append(row,  ignore_index=True)\n",
    "    for i, epsilon in enumerate(epsilon_list):\n",
    "      x_adv  =  get_adversarial_examples(sgd,X_test, y_test, epsilon)\n",
    "      SNR = 20*np.log10(np.linalg.norm(X_test)/np.linalg.norm(X_test-x_adv))\n",
    "      test = sgd.evaluate(x_adv, y_test, verbose = 0.0)\n",
    "      test_wd = sgd_wd.evaluate(x_adv, y_test, verbose = 0.0)\n",
    "      test_wd_da = sgd_wd_da.evaluate(x_adv, y_test, verbose = 0.0)\n",
    "      test_parseval = parseval.evaluate(x_adv, y_test, verbose = 0.0)\n",
    "      row = {\"acc_sgd\":test[1], \"acc_sgd_wd\": test_wd[1],\"acc_sgd_wd_da\":test_wd_da[1],\"acc_parseval\":test_parseval[1], \"SNR\":SNR}\n",
    "      frame = frame.append(row,  ignore_index=True)\n",
    "\n",
    "    return frame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "id": "9Mm05Z2ASItk"
   },
   "outputs": [],
   "source": [
    "for i in range(10):\n",
    "    name_sgd = \"models/sgd_\"+str(i)+\".h5\"\n",
    "    name_sgd_wd = \"models/sgd_wd_\"+str(i)+\".h5\"\n",
    "    name_sgd_wd_da = \"models/conv_wd_da_\"+str(i)+\".h5\"\n",
    "    name_parseval = \"models/Parseval_\"+str(i)+\".h5\"\n",
    "    sgd = model_3(0)\n",
    "    sgd_wd = model_3(0.0001)\n",
    "    sgd_wd_da = model_3(0.0001)\n",
    "    parseval = model_parseval(0)\n",
    "    sgd.load_weights(name_sgd)\n",
    "    sgd_wd.load_weights(name_sgd_wd)\n",
    "    sgd_wd_da.load_weights(name_sgd_wd_da)\n",
    "    parseval.load_weights(name_parseval)\n",
    "    sgd.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    sgd_wd.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    sgd_wd_da.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    parseval.compile(loss=\"categorical_crossentropy\", optimizer=opt, metrics=[\"acc\"])\n",
    "    list_df_c[i] = evaluation_result_fully_connected(list_df_c[i],sgd, sgd_wd, sgd_wd_da, parseval, i)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "id": "Rwxqk_GqWGPS"
   },
   "outputs": [],
   "source": [
    "mean_acc_sgd = (list_df_c[0][\"acc_sgd\"]+list_df_c[1][\"acc_sgd\"]+list_df_c[2][\"acc_sgd\"]+list_df_c[3][\"acc_sgd\"]+list_df_c[4][\"acc_sgd\"]+list_df_c[5][\"acc_sgd\"]+list_df_c[6][\"acc_sgd\"]+list_df_c[7][\"acc_sgd\"]+list_df_c[8][\"acc_sgd\"]+list_df_c[9][\"acc_sgd\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "id": "Cyn71HxRWPUo"
   },
   "outputs": [],
   "source": [
    "mean_acc_sgd_wd = (list_df_c[0][\"acc_sgd_wd\"]+list_df_c[1][\"acc_sgd_wd\"]+list_df_c[2][\"acc_sgd_wd\"]+list_df_c[3][\"acc_sgd_wd\"]+list_df_c[4][\"acc_sgd_wd\"]+list_df_c[5][\"acc_sgd_wd\"]+list_df_c[6][\"acc_sgd_wd\"]+list_df_c[7][\"acc_sgd_wd\"]+list_df_c[8][\"acc_sgd_wd\"]+list_df_c[9][\"acc_sgd_wd\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "id": "RPwV2ATuWVBc"
   },
   "outputs": [],
   "source": [
    "mean_acc_sgd_wd_da = (list_df_c[0][\"acc_sgd_wd_da\"]+list_df_c[1][\"acc_sgd_wd_da\"]+list_df_c[2][\"acc_sgd_wd_da\"]+list_df_c[3][\"acc_sgd_wd_da\"]+list_df_c[4][\"acc_sgd_wd_da\"]+list_df_c[5][\"acc_sgd_wd_da\"]+list_df_c[6][\"acc_sgd_wd_da\"]+list_df_c[7][\"acc_sgd_wd_da\"]+list_df_c[8][\"acc_sgd_wd_da\"]+list_df_c[9][\"acc_sgd_wd_da\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "id": "yTXtBL3fWWt6"
   },
   "outputs": [],
   "source": [
    "mean_acc_parseval = (list_df_c[0][\"acc_parseval\"]+list_df_c[1][\"acc_parseval\"]+list_df_c[2][\"acc_parseval\"]+list_df_c[3][\"acc_parseval\"]+list_df_c[4][\"acc_parseval\"]+list_df_c[5][\"acc_parseval\"]+list_df_c[6][\"acc_parseval\"]+list_df_c[7][\"acc_parseval\"]+list_df_c[8][\"acc_parseval\"]+list_df_c[9][\"acc_parseval\"])/10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "id": "p5MZNkMeeuIt"
   },
   "outputs": [],
   "source": [
    "list_df_c[0][\"SNR\"][1] =100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 325
    },
    "id": "2fGWosoyXL3t",
    "outputId": "b144105e-b51d-4ea0-fa95-e5da0460c44d"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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NbNXJU0HFprZnAbOfVXSvQQd+Angu60xwsvnnzhXXKeMKXztf8uWLXzve99jw4YNlJWVse+++zJz5kx69OjBZZddxkEHHUS3bt2orKzkzDPPZMCAAQBUV1czevRoampqKCsr42tf+xrnn39+QctW6mRZ1uvoCMaNG2cLFy4s2PVmL67iB/csyTpkeGDPSp656PiC3cu59ur1119n//33b+1iuFC234ekRWY2LtvxpdTk1ab5/BPnXEfnAaVAfP6Jc66j84BSAA2tHe/zT5xzHYUHlGbyteOdcy7gAaWZfO1455wLeEBpJl873jnnAh5QmilX7i5PVe9cEbx0L/ziIJjWM/j50r2tXaIOzQNKMx2335711j/xvhPniuCle+HB82DjB4AFPx88ryBBpRjroYwZM6Y23X0ikaBr167ceeedtfsPO+wwXnzxRW6//Xb23HNPxowZw4gRI5g4cSLz589v9ntsCSUzU74tSufuinbHe+4u5wrk4Ytg1cu5969YAMkddbfVVMNfpsCiO7Kf0+9g+MyMBm9brPVQxo8fz/z58xk9ejT/+te/GDlyJPPnz+c///M/2bp1K2+//TaHHnooL730Eqeddho33HADAI8//jinnnoqjz/+eMlNAvUaSjN47i7nWlFmMGlse56yrYfSs2dPbr75Zq6//vomrYdyww03kCsbyTHHHFNb05g/fz7nnntubUB64YUXOOyww4jH4/XOO+644zjnnHOYOXNms95nS/AaSjPk6pD33F3OFUAjNQl+cVDY3JWhx2A4O3PJpPxNmDCB6dOnM3LkSE444QROO+00evXq1az1UPbee+96+8ePH8+ll14KBAHliiuuYNasWWzevJn58+dzzDHH5Lz22LFjuemmm5r+5lqY11CaoUdledbt3iHvXBF8+nIoz/h/rbwy2N4M6fVQZs6cyZ577slpp53GE088UeeY2267jdGjRzN48GA++CBLUMvDPvvsw86dO1m1ahVvvPEGo0aN4vDDD+f5559n/vz5jB8/Pue5pZqD0Wsou2n24iq27kzU214ek3fIO1cMh3wl+PnodNi4AnoMCoJJenszpNdDOfbYYzn44IO56aabatdD6datG2effTZnn302Bx10ULPWQznmmGO477776N+/P5I46qijeOaZZ3jhhRc4+ujci4QtXry45PpPwAPKbrtm3lJq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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "legend = [\"SGD\", \"SGD_WD\", \"SGD_WD_DA\"]\n",
    "plt.plot(list_df_c[0][\"SNR\"], mean_acc_sgd, 'o-')\n",
    "plt.plot(list_df_c[0][\"SNR\"], mean_acc_sgd_wd, 'o-')\n",
    "\n",
    "plt.plot(list_df_c[0][\"SNR\"], mean_acc_sgd_wd_da, 'o-')\n",
    "\n",
    "\n",
    "plt.title(\"The Performance of the models \\n for varios magnitudes \\n adversarial noise\")\n",
    "plt.ylabel('mean acc of \\n 10 Fold CV')\n",
    "plt.xlabel('SNR')\n",
    "plt.legend(legend, loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 325
    },
    "id": "PquRKjgJfDZ6",
    "outputId": "8a1fe62d-1e95-4027-ccda-f6a4bff62b53"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light",
      "tags": []
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "legend = [\"SGD\", \"SGD_WD\", \"SGD_WD_DA\", \"Parseval\"]\n",
    "plt.plot(list_df_c[0][\"SNR\"], mean_acc_sgd, 'o-')\n",
    "plt.plot(list_df_c[0][\"SNR\"], mean_acc_sgd_wd, 'o-')\n",
    "\n",
    "plt.plot(list_df_c[0][\"SNR\"], mean_acc_sgd_wd_da, 'o-')\n",
    "plt.plot(list_df_c[0][\"SNR\"], mean_acc_parseval, 'o-')\n",
    "\n",
    "plt.title(\"The Performance of the models \\n for varios magnitudes \\n adversarial noise\")\n",
    "plt.ylabel('mean acc of \\n 10 Fold CV')\n",
    "plt.xlabel('SNR')\n",
    "plt.legend(legend, loc='lower right')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "id": "KJZAOKuOZLjj"
   },
   "outputs": [],
   "source": [
    "import json\n",
    "for i in range(len(epsilon_list)):\n",
    "    with open(\"result_CNN.json\", mode='a', encoding='utf-8') as feedsjson:\n",
    "        data = {\"SNR\":list_df_c[0][\"SNR\"][i], \"mean_acc_sgd\":mean_acc_sgd[i],\"mean_acc_sgd_wd\":mean_acc_sgd_wd[i], \"mean_acc_sgd_wd_da\":mean_acc_sgd_wd_da[i],\"mean_acc_parseval\":mean_acc_parseval[i]}\n",
    "        feedsjson.write(json.dumps(data, ensure_ascii=False, indent=4))\n",
    "        feedsjson.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "id": "8M4y0dUweL3l"
   },
   "outputs": [],
   "source": [
    "!cp result_CNN.json drive/MyDrive/ARAS/"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Signal to Noise Ratio Visualization"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## WhiteBox Attacker for CNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "import pandas as pd\n",
    "base_path = \"/Users/sefika/adversarial_examples_parseval_net/src/logs/SNR_Experiments/result_CNN.json\"\n",
    "\n",
    "SNR = []\n",
    "mean_acc_sgd = []\n",
    "mean_acc_sgd_wd = []\n",
    "mean_acc_sgd_wd_da = []\n",
    "mean_acc_parseval = []\n",
    "\n",
    "\n",
    "f = open(base_path, \"r\")\n",
    "data = f.read()\n",
    "\n",
    "results = data.replace(\"{\",\"\").split(\"}\")\n",
    "\n",
    "for result in results:\n",
    "    data = result.split(\",\")\n",
    "    if len(data) != 1:\n",
    "        SNR.append(round(float(data[0].split(\":\")[-1]),2))\n",
    "        mean_acc_sgd.append(round(float(data[1].split(\":\")[-1]),2))\n",
    "        mean_acc_sgd_wd.append(round(float(data[2].split(\":\")[-1]),2))\n",
    "        mean_acc_sgd_wd_da.append(round(float(data[3].split(\":\")[-1]),2))\n",
    "        mean_acc_parseval.append(round(float(data[4].split(\":\")[-1]), 2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "list_data = [mean_acc_sgd, mean_acc_sgd_wd, mean_acc_sgd_wd_da,mean_acc_parseval]\n",
    "\n",
    "\n",
    "cnn_results_df = pd.DataFrame()\n",
    "# cnn_results_df[\"SNR\"] = SNR\n",
    "cnn_results_df[\"CNN_SGD\"] = mean_acc_sgd\n",
    "cnn_results_df[\"CNN_SGD_WD\"] = mean_acc_sgd_wd\n",
    "cnn_results_df[\"CNN_SGD_WD_AD\"] = mean_acc_sgd_wd_da\n",
    "cnn_results_df[\"Parseval\"] = mean_acc_parseval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "hovertemplate": "variable=%{x}<br>value=%{y}<extra></extra>",
         "legendgroup": "",
         "marker": {
          "color": "#636efa"
         },
         "name": "",
         "notched": false,
         "offsetgroup": "",
         "orientation": "v",
         "showlegend": false,
         "type": "box",
         "x": [
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "CNN_SGD_WD_AD",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval"
         ],
         "x0": " ",
         "xaxis": "x",
         "y": [
          0.71,
          0.71,
          0.7,
          0.68,
          0.67,
          0.66,
          0.65,
          0.64,
          0.63,
          0.62,
          0.61,
          0.6,
          0.59,
          0.58,
          0.57,
          0.56,
          0.55,
          0.54,
          0.53,
          0.52,
          0.5,
          0.49,
          0.48,
          0.47,
          0.46,
          0.45,
          0.44,
          0.43,
          0.43,
          0.42,
          0.41,
          0.4,
          0.39,
          0.39,
          0.38,
          0.37,
          0.36,
          0.35,
          0.34,
          0.34,
          0.7,
          0.7,
          0.7,
          0.7,
          0.69,
          0.69,
          0.68,
          0.68,
          0.68,
          0.67,
          0.67,
          0.67,
          0.66,
          0.66,
          0.65,
          0.65,
          0.65,
          0.64,
          0.64,
          0.63,
          0.63,
          0.62,
          0.62,
          0.62,
          0.61,
          0.61,
          0.6,
          0.6,
          0.59,
          0.59,
          0.58,
          0.58,
          0.58,
          0.57,
          0.57,
          0.57,
          0.56,
          0.56,
          0.55,
          0.55,
          0.7,
          0.7,
          0.7,
          0.7,
          0.69,
          0.69,
          0.69,
          0.69,
          0.68,
          0.68,
          0.68,
          0.68,
          0.67,
          0.67,
          0.67,
          0.67,
          0.67,
          0.66,
          0.66,
          0.66,
          0.65,
          0.65,
          0.65,
          0.64,
          0.64,
          0.63,
          0.63,
          0.63,
          0.63,
          0.62,
          0.62,
          0.62,
          0.62,
          0.61,
          0.61,
          0.6,
          0.6,
          0.6,
          0.6,
          0.59,
          0.7,
          0.7,
          0.69,
          0.69,
          0.69,
          0.68,
          0.68,
          0.68,
          0.68,
          0.67,
          0.67,
          0.67,
          0.67,
          0.66,
          0.66,
          0.65,
          0.65,
          0.65,
          0.64,
          0.64,
          0.64,
          0.63,
          0.63,
          0.63,
          0.62,
          0.62,
          0.62,
          0.61,
          0.61,
          0.61,
          0.6,
          0.6,
          0.6,
          0.59,
          0.59,
          0.59,
          0.58,
          0.58,
          0.58,
          0.57
         ],
         "y0": " ",
         "yaxis": "y"
        }
       ],
       "layout": {
        "boxmode": "group",
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "title": {
         "text": "The model accuracies against adversarial attacks between 28 and infinity SNR values."
        },
        "xaxis": {
         "anchor": "y",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "Model Names"
         }
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "Accuracy"
         }
        }
       }
      },
      "text/html": [
       "<div>                            <div id=\"f7fbeeb5-2569-43de-b67c-da8b92fa2e51\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div>            <script type=\"text/javascript\">                require([\"plotly\"], function(Plotly) {                    window.PLOTLYENV=window.PLOTLYENV || {};                                    if (document.getElementById(\"f7fbeeb5-2569-43de-b67c-da8b92fa2e51\")) {                    Plotly.newPlot(                        \"f7fbeeb5-2569-43de-b67c-da8b92fa2e51\",                        [{\"alignmentgroup\": \"True\", \"hovertemplate\": \"variable=%{x}<br>value=%{y}<extra></extra>\", \"legendgroup\": \"\", \"marker\": {\"color\": \"#636efa\"}, \"name\": \"\", \"notched\": false, \"offsetgroup\": \"\", \"orientation\": \"v\", \"showlegend\": false, \"type\": \"box\", \"x\": [\"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"CNN_SGD_WD_AD\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\"], \"x0\": \" \", \"xaxis\": \"x\", \"y\": [0.71, 0.71, 0.7, 0.68, 0.67, 0.66, 0.65, 0.64, 0.63, 0.62, 0.61, 0.6, 0.59, 0.58, 0.57, 0.56, 0.55, 0.54, 0.53, 0.52, 0.5, 0.49, 0.48, 0.47, 0.46, 0.45, 0.44, 0.43, 0.43, 0.42, 0.41, 0.4, 0.39, 0.39, 0.38, 0.37, 0.36, 0.35, 0.34, 0.34, 0.7, 0.7, 0.7, 0.7, 0.69, 0.69, 0.68, 0.68, 0.68, 0.67, 0.67, 0.67, 0.66, 0.66, 0.65, 0.65, 0.65, 0.64, 0.64, 0.63, 0.63, 0.62, 0.62, 0.62, 0.61, 0.61, 0.6, 0.6, 0.59, 0.59, 0.58, 0.58, 0.58, 0.57, 0.57, 0.57, 0.56, 0.56, 0.55, 0.55, 0.7, 0.7, 0.7, 0.7, 0.69, 0.69, 0.69, 0.69, 0.68, 0.68, 0.68, 0.68, 0.67, 0.67, 0.67, 0.67, 0.67, 0.66, 0.66, 0.66, 0.65, 0.65, 0.65, 0.64, 0.64, 0.63, 0.63, 0.63, 0.63, 0.62, 0.62, 0.62, 0.62, 0.61, 0.61, 0.6, 0.6, 0.6, 0.6, 0.59, 0.7, 0.7, 0.69, 0.69, 0.69, 0.68, 0.68, 0.68, 0.68, 0.67, 0.67, 0.67, 0.67, 0.66, 0.66, 0.65, 0.65, 0.65, 0.64, 0.64, 0.64, 0.63, 0.63, 0.63, 0.62, 0.62, 0.62, 0.61, 0.61, 0.61, 0.6, 0.6, 0.6, 0.59, 0.59, 0.59, 0.58, 0.58, 0.58, 0.57], \"y0\": \" \", \"yaxis\": \"y\"}],                        {\"boxmode\": \"group\", \"legend\": {\"tracegroupgap\": 0}, \"margin\": {\"t\": 60}, \"template\": {\"data\": {\"bar\": [{\"error_x\": {\"color\": \"#2a3f5f\"}, \"error_y\": {\"color\": \"#2a3f5f\"}, \"marker\": {\"line\": {\"color\": \"#E5ECF6\", \"width\": 0.5}}, \"type\": \"bar\"}], \"barpolar\": [{\"marker\": {\"line\": {\"color\": \"#E5ECF6\", \"width\": 0.5}}, \"type\": \"barpolar\"}], \"carpet\": [{\"aaxis\": {\"endlinecolor\": \"#2a3f5f\", \"gridcolor\": \"white\", \"linecolor\": \"white\", \"minorgridcolor\": \"white\", \"startlinecolor\": \"#2a3f5f\"}, \"baxis\": {\"endlinecolor\": \"#2a3f5f\", \"gridcolor\": \"white\", \"linecolor\": \"white\", \"minorgridcolor\": \"white\", \"startlinecolor\": \"#2a3f5f\"}, \"type\": \"carpet\"}], \"choropleth\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"choropleth\"}], \"contour\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"contour\"}], \"contourcarpet\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"contourcarpet\"}], \"heatmap\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"heatmap\"}], \"heatmapgl\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"heatmapgl\"}], \"histogram\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"histogram\"}], \"histogram2d\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"histogram2d\"}], \"histogram2dcontour\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"histogram2dcontour\"}], \"mesh3d\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"mesh3d\"}], \"parcoords\": [{\"line\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"parcoords\"}], \"pie\": [{\"automargin\": true, \"type\": \"pie\"}], \"scatter\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatter\"}], \"scatter3d\": [{\"line\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatter3d\"}], \"scattercarpet\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattercarpet\"}], \"scattergeo\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattergeo\"}], \"scattergl\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattergl\"}], \"scattermapbox\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattermapbox\"}], \"scatterpolar\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterpolar\"}], \"scatterpolargl\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterpolargl\"}], \"scatterternary\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterternary\"}], \"surface\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"surface\"}], \"table\": [{\"cells\": {\"fill\": {\"color\": \"#EBF0F8\"}, \"line\": {\"color\": \"white\"}}, \"header\": {\"fill\": {\"color\": \"#C8D4E3\"}, \"line\": {\"color\": \"white\"}}, \"type\": \"table\"}]}, \"layout\": {\"annotationdefaults\": {\"arrowcolor\": \"#2a3f5f\", \"arrowhead\": 0, \"arrowwidth\": 1}, \"autotypenumbers\": \"strict\", \"coloraxis\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"colorscale\": {\"diverging\": [[0, \"#8e0152\"], [0.1, \"#c51b7d\"], [0.2, \"#de77ae\"], [0.3, \"#f1b6da\"], [0.4, \"#fde0ef\"], [0.5, \"#f7f7f7\"], [0.6, \"#e6f5d0\"], [0.7, \"#b8e186\"], [0.8, \"#7fbc41\"], [0.9, \"#4d9221\"], [1, \"#276419\"]], \"sequential\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"sequentialminus\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]]}, \"colorway\": [\"#636efa\", \"#EF553B\", \"#00cc96\", \"#ab63fa\", \"#FFA15A\", \"#19d3f3\", \"#FF6692\", \"#B6E880\", \"#FF97FF\", \"#FECB52\"], \"font\": {\"color\": \"#2a3f5f\"}, \"geo\": {\"bgcolor\": \"white\", \"lakecolor\": \"white\", \"landcolor\": \"#E5ECF6\", \"showlakes\": true, \"showland\": true, \"subunitcolor\": \"white\"}, \"hoverlabel\": {\"align\": \"left\"}, \"hovermode\": \"closest\", \"mapbox\": {\"style\": \"light\"}, \"paper_bgcolor\": \"white\", \"plot_bgcolor\": \"#E5ECF6\", \"polar\": {\"angularaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"bgcolor\": \"#E5ECF6\", \"radialaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}}, \"scene\": {\"xaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}, \"yaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}, \"zaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}}, \"shapedefaults\": {\"line\": {\"color\": \"#2a3f5f\"}}, \"ternary\": {\"aaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"baxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"bgcolor\": \"#E5ECF6\", \"caxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}}, \"title\": {\"x\": 0.05}, \"xaxis\": {\"automargin\": true, \"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\", \"title\": {\"standoff\": 15}, \"zerolinecolor\": \"white\", \"zerolinewidth\": 2}, \"yaxis\": {\"automargin\": true, \"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\", \"title\": {\"standoff\": 15}, \"zerolinecolor\": \"white\", \"zerolinewidth\": 2}}}, \"title\": {\"text\": \"The model accuracies against adversarial attacks between 28 and infinity SNR values.\"}, \"xaxis\": {\"anchor\": \"y\", \"domain\": [0.0, 1.0], \"title\": {\"text\": \"Model Names\"}}, \"yaxis\": {\"anchor\": \"x\", \"domain\": [0.0, 1.0], \"title\": {\"text\": \"Accuracy\"}}},                        {\"responsive\": true}                    ).then(function(){\n",
       "                            \n",
       "var gd = document.getElementById('f7fbeeb5-2569-43de-b67c-da8b92fa2e51');\n",
       "var x = new MutationObserver(function (mutations, observer) {{\n",
       "        var display = window.getComputedStyle(gd).display;\n",
       "        if (!display || display === 'none') {{\n",
       "            console.log([gd, 'removed!']);\n",
       "            Plotly.purge(gd);\n",
       "            observer.disconnect();\n",
       "        }}\n",
       "}});\n",
       "\n",
       "// Listen for the removal of the full notebook cells\n",
       "var notebookContainer = gd.closest('#notebook-container');\n",
       "if (notebookContainer) {{\n",
       "    x.observe(notebookContainer, {childList: true});\n",
       "}}\n",
       "\n",
       "// Listen for the clearing of the current output cell\n",
       "var outputEl = gd.closest('.output');\n",
       "if (outputEl) {{\n",
       "    x.observe(outputEl, {childList: true});\n",
       "}}\n",
       "\n",
       "                        })                };                });            </script>        </div>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import plotly.express as px\n",
    "df = px.data.tips()\n",
    "fig = px.box(cnn_results_df)\n",
    "fig.update_layout(\n",
    "    title=\"The model accuracies against adversarial attacks between 28 and infinity SNR values.\",\n",
    "    xaxis_title=\"Model Names\",\n",
    "    yaxis_title=\"Accuracy\"\n",
    ")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## WhiteBox Attacker for ResNet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "\n",
    "base_path = \"/Users/sefika/adversarial_examples_parseval_net/src/logs/SNR_Experiments/result_ResNet.json\"\n",
    "\n",
    "SNR = []\n",
    "mean_ResNet = []\n",
    "mean_ResNet_da = []\n",
    "mean_Parseval = []\n",
    "mean_Parseval_da = []\n",
    "f = open(base_path, \"r\")\n",
    "data = f.read()\n",
    "\n",
    "results = data.replace(\"{\",\"\").split(\"}\")\n",
    "\n",
    "for result in results:\n",
    "    data = result.split(\",\")\n",
    "    if len(data) != 1:\n",
    "        SNR.append(round(float(data[0].split(\":\")[-1]),3))\n",
    "        mean_ResNet.append(round(float(data[1].split(\":\")[-1]),3))\n",
    "        mean_ResNet_da.append(round(float(data[2].split(\":\")[-1]),3))\n",
    "        mean_Parseval.append(round(float(data[3].split(\":\")[-1]),3))\n",
    "        mean_Parseval_da.append(round(float(data[4].split(\":\")[-1]), 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "list_data = [mean_acc_sgd, mean_acc_sgd_wd, mean_acc_sgd_wd_da,mean_acc_parseval]\n",
    "\n",
    "\n",
    "resnet_results_df = pd.DataFrame()\n",
    "# cnn_results_df[\"SNR\"] = SNR\n",
    "resnet_results_df[\"ResNet\"] = mean_ResNet\n",
    "resnet_results_df[\"ResNet_AD\"] = mean_ResNet_da\n",
    "resnet_results_df[\"Parseval\"] = mean_Parseval\n",
    "resnet_results_df[\"Parseval_AD\"] = mean_Parseval_da"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.plotly.v1+json": {
       "config": {
        "plotlyServerURL": "https://plot.ly"
       },
       "data": [
        {
         "alignmentgroup": "True",
         "hovertemplate": "variable=%{x}<br>value=%{y}<extra></extra>",
         "legendgroup": "",
         "marker": {
          "color": "#636efa"
         },
         "name": "",
         "notched": false,
         "offsetgroup": "",
         "orientation": "v",
         "showlegend": false,
         "type": "box",
         "x": [
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "ResNet_AD",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD",
          "Parseval_AD"
         ],
         "x0": " ",
         "xaxis": "x",
         "y": [
          0.696,
          0.682,
          0.666,
          0.652,
          0.637,
          0.623,
          0.611,
          0.597,
          0.579,
          0.563,
          0.546,
          0.535,
          0.52,
          0.504,
          0.489,
          0.476,
          0.464,
          0.449,
          0.434,
          0.42,
          0.408,
          0.396,
          0.387,
          0.378,
          0.367,
          0.354,
          0.344,
          0.333,
          0.324,
          0.314,
          0.307,
          0.299,
          0.292,
          0.286,
          0.278,
          0.27,
          0.261,
          0.256,
          0.249,
          0.242,
          0.692,
          0.689,
          0.688,
          0.685,
          0.684,
          0.682,
          0.681,
          0.679,
          0.676,
          0.675,
          0.673,
          0.671,
          0.668,
          0.666,
          0.664,
          0.662,
          0.661,
          0.659,
          0.657,
          0.655,
          0.654,
          0.651,
          0.649,
          0.647,
          0.645,
          0.644,
          0.642,
          0.641,
          0.638,
          0.636,
          0.635,
          0.632,
          0.629,
          0.627,
          0.624,
          0.622,
          0.62,
          0.617,
          0.616,
          0.614,
          0.714,
          0.696,
          0.679,
          0.665,
          0.646,
          0.629,
          0.612,
          0.597,
          0.578,
          0.562,
          0.547,
          0.533,
          0.519,
          0.506,
          0.492,
          0.478,
          0.464,
          0.453,
          0.44,
          0.426,
          0.414,
          0.399,
          0.39,
          0.381,
          0.369,
          0.36,
          0.351,
          0.341,
          0.331,
          0.322,
          0.314,
          0.305,
          0.296,
          0.287,
          0.279,
          0.27,
          0.263,
          0.257,
          0.25,
          0.243,
          0.703,
          0.701,
          0.699,
          0.697,
          0.696,
          0.694,
          0.692,
          0.691,
          0.688,
          0.687,
          0.684,
          0.683,
          0.68,
          0.679,
          0.677,
          0.675,
          0.674,
          0.672,
          0.67,
          0.668,
          0.666,
          0.665,
          0.662,
          0.66,
          0.658,
          0.655,
          0.653,
          0.652,
          0.65,
          0.649,
          0.646,
          0.643,
          0.641,
          0.639,
          0.636,
          0.634,
          0.633,
          0.631,
          0.628,
          0.626
         ],
         "y0": " ",
         "yaxis": "y"
        }
       ],
       "layout": {
        "boxmode": "group",
        "legend": {
         "tracegroupgap": 0
        },
        "margin": {
         "t": 60
        },
        "template": {
         "data": {
          "bar": [
           {
            "error_x": {
             "color": "#2a3f5f"
            },
            "error_y": {
             "color": "#2a3f5f"
            },
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             }
            },
            "type": "bar"
           }
          ],
          "barpolar": [
           {
            "marker": {
             "line": {
              "color": "#E5ECF6",
              "width": 0.5
             }
            },
            "type": "barpolar"
           }
          ],
          "carpet": [
           {
            "aaxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "baxis": {
             "endlinecolor": "#2a3f5f",
             "gridcolor": "white",
             "linecolor": "white",
             "minorgridcolor": "white",
             "startlinecolor": "#2a3f5f"
            },
            "type": "carpet"
           }
          ],
          "choropleth": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "choropleth"
           }
          ],
          "contour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "contour"
           }
          ],
          "contourcarpet": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "contourcarpet"
           }
          ],
          "heatmap": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmap"
           }
          ],
          "heatmapgl": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "heatmapgl"
           }
          ],
          "histogram": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "histogram"
           }
          ],
          "histogram2d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2d"
           }
          ],
          "histogram2dcontour": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "histogram2dcontour"
           }
          ],
          "mesh3d": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "type": "mesh3d"
           }
          ],
          "parcoords": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "parcoords"
           }
          ],
          "pie": [
           {
            "automargin": true,
            "type": "pie"
           }
          ],
          "scatter": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter"
           }
          ],
          "scatter3d": [
           {
            "line": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatter3d"
           }
          ],
          "scattercarpet": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattercarpet"
           }
          ],
          "scattergeo": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergeo"
           }
          ],
          "scattergl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattergl"
           }
          ],
          "scattermapbox": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scattermapbox"
           }
          ],
          "scatterpolar": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolar"
           }
          ],
          "scatterpolargl": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterpolargl"
           }
          ],
          "scatterternary": [
           {
            "marker": {
             "colorbar": {
              "outlinewidth": 0,
              "ticks": ""
             }
            },
            "type": "scatterternary"
           }
          ],
          "surface": [
           {
            "colorbar": {
             "outlinewidth": 0,
             "ticks": ""
            },
            "colorscale": [
             [
              0,
              "#0d0887"
             ],
             [
              0.1111111111111111,
              "#46039f"
             ],
             [
              0.2222222222222222,
              "#7201a8"
             ],
             [
              0.3333333333333333,
              "#9c179e"
             ],
             [
              0.4444444444444444,
              "#bd3786"
             ],
             [
              0.5555555555555556,
              "#d8576b"
             ],
             [
              0.6666666666666666,
              "#ed7953"
             ],
             [
              0.7777777777777778,
              "#fb9f3a"
             ],
             [
              0.8888888888888888,
              "#fdca26"
             ],
             [
              1,
              "#f0f921"
             ]
            ],
            "type": "surface"
           }
          ],
          "table": [
           {
            "cells": {
             "fill": {
              "color": "#EBF0F8"
             },
             "line": {
              "color": "white"
             }
            },
            "header": {
             "fill": {
              "color": "#C8D4E3"
             },
             "line": {
              "color": "white"
             }
            },
            "type": "table"
           }
          ]
         },
         "layout": {
          "annotationdefaults": {
           "arrowcolor": "#2a3f5f",
           "arrowhead": 0,
           "arrowwidth": 1
          },
          "autotypenumbers": "strict",
          "coloraxis": {
           "colorbar": {
            "outlinewidth": 0,
            "ticks": ""
           }
          },
          "colorscale": {
           "diverging": [
            [
             0,
             "#8e0152"
            ],
            [
             0.1,
             "#c51b7d"
            ],
            [
             0.2,
             "#de77ae"
            ],
            [
             0.3,
             "#f1b6da"
            ],
            [
             0.4,
             "#fde0ef"
            ],
            [
             0.5,
             "#f7f7f7"
            ],
            [
             0.6,
             "#e6f5d0"
            ],
            [
             0.7,
             "#b8e186"
            ],
            [
             0.8,
             "#7fbc41"
            ],
            [
             0.9,
             "#4d9221"
            ],
            [
             1,
             "#276419"
            ]
           ],
           "sequential": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ],
           "sequentialminus": [
            [
             0,
             "#0d0887"
            ],
            [
             0.1111111111111111,
             "#46039f"
            ],
            [
             0.2222222222222222,
             "#7201a8"
            ],
            [
             0.3333333333333333,
             "#9c179e"
            ],
            [
             0.4444444444444444,
             "#bd3786"
            ],
            [
             0.5555555555555556,
             "#d8576b"
            ],
            [
             0.6666666666666666,
             "#ed7953"
            ],
            [
             0.7777777777777778,
             "#fb9f3a"
            ],
            [
             0.8888888888888888,
             "#fdca26"
            ],
            [
             1,
             "#f0f921"
            ]
           ]
          },
          "colorway": [
           "#636efa",
           "#EF553B",
           "#00cc96",
           "#ab63fa",
           "#FFA15A",
           "#19d3f3",
           "#FF6692",
           "#B6E880",
           "#FF97FF",
           "#FECB52"
          ],
          "font": {
           "color": "#2a3f5f"
          },
          "geo": {
           "bgcolor": "white",
           "lakecolor": "white",
           "landcolor": "#E5ECF6",
           "showlakes": true,
           "showland": true,
           "subunitcolor": "white"
          },
          "hoverlabel": {
           "align": "left"
          },
          "hovermode": "closest",
          "mapbox": {
           "style": "light"
          },
          "paper_bgcolor": "white",
          "plot_bgcolor": "#E5ECF6",
          "polar": {
           "angularaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "radialaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "scene": {
           "xaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "yaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           },
           "zaxis": {
            "backgroundcolor": "#E5ECF6",
            "gridcolor": "white",
            "gridwidth": 2,
            "linecolor": "white",
            "showbackground": true,
            "ticks": "",
            "zerolinecolor": "white"
           }
          },
          "shapedefaults": {
           "line": {
            "color": "#2a3f5f"
           }
          },
          "ternary": {
           "aaxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "baxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           },
           "bgcolor": "#E5ECF6",
           "caxis": {
            "gridcolor": "white",
            "linecolor": "white",
            "ticks": ""
           }
          },
          "title": {
           "x": 0.05
          },
          "xaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          },
          "yaxis": {
           "automargin": true,
           "gridcolor": "white",
           "linecolor": "white",
           "ticks": "",
           "title": {
            "standoff": 15
           },
           "zerolinecolor": "white",
           "zerolinewidth": 2
          }
         }
        },
        "title": {
         "text": "The model accuracies against adversarial attacks between 28 and infinity SNR values."
        },
        "xaxis": {
         "anchor": "y",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "Model Names"
         }
        },
        "yaxis": {
         "anchor": "x",
         "domain": [
          0,
          1
         ],
         "title": {
          "text": "Accuracy"
         }
        }
       }
      },
      "text/html": [
       "<div>                            <div id=\"e2aee8f4-9c49-493e-9f08-9db43d5ec654\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div>            <script type=\"text/javascript\">                require([\"plotly\"], function(Plotly) {                    window.PLOTLYENV=window.PLOTLYENV || {};                                    if (document.getElementById(\"e2aee8f4-9c49-493e-9f08-9db43d5ec654\")) {                    Plotly.newPlot(                        \"e2aee8f4-9c49-493e-9f08-9db43d5ec654\",                        [{\"alignmentgroup\": \"True\", \"hovertemplate\": \"variable=%{x}<br>value=%{y}<extra></extra>\", \"legendgroup\": \"\", \"marker\": {\"color\": \"#636efa\"}, \"name\": \"\", \"notched\": false, \"offsetgroup\": \"\", \"orientation\": \"v\", \"showlegend\": false, \"type\": \"box\", \"x\": [\"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"ResNet_AD\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\", \"Parseval_AD\"], \"x0\": \" \", \"xaxis\": \"x\", \"y\": [0.696, 0.682, 0.666, 0.652, 0.637, 0.623, 0.611, 0.597, 0.579, 0.563, 0.546, 0.535, 0.52, 0.504, 0.489, 0.476, 0.464, 0.449, 0.434, 0.42, 0.408, 0.396, 0.387, 0.378, 0.367, 0.354, 0.344, 0.333, 0.324, 0.314, 0.307, 0.299, 0.292, 0.286, 0.278, 0.27, 0.261, 0.256, 0.249, 0.242, 0.692, 0.689, 0.688, 0.685, 0.684, 0.682, 0.681, 0.679, 0.676, 0.675, 0.673, 0.671, 0.668, 0.666, 0.664, 0.662, 0.661, 0.659, 0.657, 0.655, 0.654, 0.651, 0.649, 0.647, 0.645, 0.644, 0.642, 0.641, 0.638, 0.636, 0.635, 0.632, 0.629, 0.627, 0.624, 0.622, 0.62, 0.617, 0.616, 0.614, 0.714, 0.696, 0.679, 0.665, 0.646, 0.629, 0.612, 0.597, 0.578, 0.562, 0.547, 0.533, 0.519, 0.506, 0.492, 0.478, 0.464, 0.453, 0.44, 0.426, 0.414, 0.399, 0.39, 0.381, 0.369, 0.36, 0.351, 0.341, 0.331, 0.322, 0.314, 0.305, 0.296, 0.287, 0.279, 0.27, 0.263, 0.257, 0.25, 0.243, 0.703, 0.701, 0.699, 0.697, 0.696, 0.694, 0.692, 0.691, 0.688, 0.687, 0.684, 0.683, 0.68, 0.679, 0.677, 0.675, 0.674, 0.672, 0.67, 0.668, 0.666, 0.665, 0.662, 0.66, 0.658, 0.655, 0.653, 0.652, 0.65, 0.649, 0.646, 0.643, 0.641, 0.639, 0.636, 0.634, 0.633, 0.631, 0.628, 0.626], \"y0\": \" \", \"yaxis\": \"y\"}],                        {\"boxmode\": \"group\", \"legend\": {\"tracegroupgap\": 0}, \"margin\": {\"t\": 60}, \"template\": {\"data\": {\"bar\": [{\"error_x\": {\"color\": \"#2a3f5f\"}, \"error_y\": {\"color\": \"#2a3f5f\"}, \"marker\": {\"line\": {\"color\": \"#E5ECF6\", \"width\": 0.5}}, \"type\": \"bar\"}], \"barpolar\": [{\"marker\": {\"line\": {\"color\": \"#E5ECF6\", \"width\": 0.5}}, \"type\": \"barpolar\"}], \"carpet\": [{\"aaxis\": {\"endlinecolor\": \"#2a3f5f\", \"gridcolor\": \"white\", \"linecolor\": \"white\", \"minorgridcolor\": \"white\", \"startlinecolor\": \"#2a3f5f\"}, \"baxis\": {\"endlinecolor\": \"#2a3f5f\", \"gridcolor\": \"white\", \"linecolor\": \"white\", \"minorgridcolor\": \"white\", \"startlinecolor\": \"#2a3f5f\"}, \"type\": \"carpet\"}], \"choropleth\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"choropleth\"}], \"contour\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"contour\"}], \"contourcarpet\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"contourcarpet\"}], \"heatmap\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"heatmap\"}], \"heatmapgl\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"heatmapgl\"}], \"histogram\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"histogram\"}], \"histogram2d\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"histogram2d\"}], \"histogram2dcontour\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"histogram2dcontour\"}], \"mesh3d\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"type\": \"mesh3d\"}], \"parcoords\": [{\"line\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"parcoords\"}], \"pie\": [{\"automargin\": true, \"type\": \"pie\"}], \"scatter\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatter\"}], \"scatter3d\": [{\"line\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatter3d\"}], \"scattercarpet\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattercarpet\"}], \"scattergeo\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattergeo\"}], \"scattergl\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattergl\"}], \"scattermapbox\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scattermapbox\"}], \"scatterpolar\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterpolar\"}], \"scatterpolargl\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterpolargl\"}], \"scatterternary\": [{\"marker\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"type\": \"scatterternary\"}], \"surface\": [{\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}, \"colorscale\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"type\": \"surface\"}], \"table\": [{\"cells\": {\"fill\": {\"color\": \"#EBF0F8\"}, \"line\": {\"color\": \"white\"}}, \"header\": {\"fill\": {\"color\": \"#C8D4E3\"}, \"line\": {\"color\": \"white\"}}, \"type\": \"table\"}]}, \"layout\": {\"annotationdefaults\": {\"arrowcolor\": \"#2a3f5f\", \"arrowhead\": 0, \"arrowwidth\": 1}, \"autotypenumbers\": \"strict\", \"coloraxis\": {\"colorbar\": {\"outlinewidth\": 0, \"ticks\": \"\"}}, \"colorscale\": {\"diverging\": [[0, \"#8e0152\"], [0.1, \"#c51b7d\"], [0.2, \"#de77ae\"], [0.3, \"#f1b6da\"], [0.4, \"#fde0ef\"], [0.5, \"#f7f7f7\"], [0.6, \"#e6f5d0\"], [0.7, \"#b8e186\"], [0.8, \"#7fbc41\"], [0.9, \"#4d9221\"], [1, \"#276419\"]], \"sequential\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]], \"sequentialminus\": [[0.0, \"#0d0887\"], [0.1111111111111111, \"#46039f\"], [0.2222222222222222, \"#7201a8\"], [0.3333333333333333, \"#9c179e\"], [0.4444444444444444, \"#bd3786\"], [0.5555555555555556, \"#d8576b\"], [0.6666666666666666, \"#ed7953\"], [0.7777777777777778, \"#fb9f3a\"], [0.8888888888888888, \"#fdca26\"], [1.0, \"#f0f921\"]]}, \"colorway\": [\"#636efa\", \"#EF553B\", \"#00cc96\", \"#ab63fa\", \"#FFA15A\", \"#19d3f3\", \"#FF6692\", \"#B6E880\", \"#FF97FF\", \"#FECB52\"], \"font\": {\"color\": \"#2a3f5f\"}, \"geo\": {\"bgcolor\": \"white\", \"lakecolor\": \"white\", \"landcolor\": \"#E5ECF6\", \"showlakes\": true, \"showland\": true, \"subunitcolor\": \"white\"}, \"hoverlabel\": {\"align\": \"left\"}, \"hovermode\": \"closest\", \"mapbox\": {\"style\": \"light\"}, \"paper_bgcolor\": \"white\", \"plot_bgcolor\": \"#E5ECF6\", \"polar\": {\"angularaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"bgcolor\": \"#E5ECF6\", \"radialaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}}, \"scene\": {\"xaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}, \"yaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}, \"zaxis\": {\"backgroundcolor\": \"#E5ECF6\", \"gridcolor\": \"white\", \"gridwidth\": 2, \"linecolor\": \"white\", \"showbackground\": true, \"ticks\": \"\", \"zerolinecolor\": \"white\"}}, \"shapedefaults\": {\"line\": {\"color\": \"#2a3f5f\"}}, \"ternary\": {\"aaxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"baxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}, \"bgcolor\": \"#E5ECF6\", \"caxis\": {\"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\"}}, \"title\": {\"x\": 0.05}, \"xaxis\": {\"automargin\": true, \"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\", \"title\": {\"standoff\": 15}, \"zerolinecolor\": \"white\", \"zerolinewidth\": 2}, \"yaxis\": {\"automargin\": true, \"gridcolor\": \"white\", \"linecolor\": \"white\", \"ticks\": \"\", \"title\": {\"standoff\": 15}, \"zerolinecolor\": \"white\", \"zerolinewidth\": 2}}}, \"title\": {\"text\": \"The model accuracies against adversarial attacks between 28 and infinity SNR values.\"}, \"xaxis\": {\"anchor\": \"y\", \"domain\": [0.0, 1.0], \"title\": {\"text\": \"Model Names\"}}, \"yaxis\": {\"anchor\": \"x\", \"domain\": [0.0, 1.0], \"title\": {\"text\": \"Accuracy\"}}},                        {\"responsive\": true}                    ).then(function(){\n",
       "                            \n",
       "var gd = document.getElementById('e2aee8f4-9c49-493e-9f08-9db43d5ec654');\n",
       "var x = new MutationObserver(function (mutations, observer) {{\n",
       "        var display = window.getComputedStyle(gd).display;\n",
       "        if (!display || display === 'none') {{\n",
       "            console.log([gd, 'removed!']);\n",
       "            Plotly.purge(gd);\n",
       "            observer.disconnect();\n",
       "        }}\n",
       "}});\n",
       "\n",
       "// Listen for the removal of the full notebook cells\n",
       "var notebookContainer = gd.closest('#notebook-container');\n",
       "if (notebookContainer) {{\n",
       "    x.observe(notebookContainer, {childList: true});\n",
       "}}\n",
       "\n",
       "// Listen for the clearing of the current output cell\n",
       "var outputEl = gd.closest('.output');\n",
       "if (outputEl) {{\n",
       "    x.observe(outputEl, {childList: true});\n",
       "}}\n",
       "\n",
       "                        })                };                });            </script>        </div>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import plotly.express as px\n",
    "df = px.data.tips()\n",
    "fig = px.box(resnet_results_df)\n",
    "fig.update_layout(\n",
    "    title=\"The model accuracies against adversarial attacks between 28 and infinity SNR values.\",\n",
    "    xaxis_title=\"Model Names\",\n",
    "    yaxis_title=\"Accuracy\"\n",
    ")\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Random Noise Attacks"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## CNN Models"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ResNet and Parseval Networks"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "name": "SignalToNoiseRatio.ipynb",
   "provenance": [],
   "toc_visible": true
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}