-
Notifications
You must be signed in to change notification settings - Fork 0
/
Test Accuracy = 90.37, Validation Acc = 89.77
4155 lines (4155 loc) · 338 KB
/
Test Accuracy = 90.37, Validation Acc = 89.77
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
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "TariqTransferTopDIHighestValid.ipynb",
"version": "0.3.2",
"provenance": [],
"collapsed_sections": [],
"toc_visible": true,
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/preritt/KProj/blob/master/Test%20Accuracy%20%3D%2090.37%2C%20Validation%20Acc%20%3D%2089.77\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "kdTAcjYec3s7",
"colab_type": "text"
},
"source": [
"## Load standard libraries"
]
},
{
"cell_type": "code",
"metadata": {
"id": "oCo6LRTTcxmC",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "b9487bde-0a49-4fb9-f9ea-d809fe83b581"
},
"source": [
"import keras\n",
"from matplotlib import pyplot as plt\n",
"import numpy as np\n",
"import gzip\n",
"%matplotlib inline\n",
"from keras.models import Model\n",
"from keras.optimizers import RMSprop\n",
"from keras.layers import Input,Dense,Flatten,Dropout,merge,Reshape,Conv2D,MaxPooling2D,UpSampling2D,Conv2DTranspose\n",
"from keras.layers.normalization import BatchNormalization\n",
"from keras.models import Model,Sequential\n",
"from keras.callbacks import ModelCheckpoint\n",
"from keras.optimizers import Adadelta, RMSprop,SGD,Adam\n",
"from keras import regularizers\n",
"from keras import backend as K\n",
"from keras.utils import to_categorical\n",
"from keras.datasets import cifar10\n",
"from sklearn import preprocessing\n",
"from keras import losses\n",
"from keras.models import model_from_json\n",
"import keras\n",
"from keras.models import Sequential\n",
"from keras.utils import np_utils\n",
"from keras.preprocessing.image import ImageDataGenerator\n",
"from keras.layers import Dense, Activation, Flatten, Dropout, BatchNormalization\n",
"from keras.layers import Conv2D, MaxPooling2D\n",
"from keras.datasets import cifar10\n",
"from keras import regularizers\n",
"from keras.callbacks import LearningRateScheduler\n",
"import numpy as np\n",
"from sklearn.metrics import confusion_matrix\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.utils import shuffle"
],
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Sg_ZApCOPN9u",
"colab_type": "code",
"colab": {}
},
"source": [
"from keras.utils.vis_utils import plot_model\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "oG3txkjndHWQ",
"colab_type": "code",
"colab": {}
},
"source": [
"keras.backend.clear_session()"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "8rDrYIgZc20A",
"colab_type": "text"
},
"source": [
"## Load image data"
]
},
{
"cell_type": "code",
"metadata": {
"id": "85Dlxs7adKVS",
"colab_type": "code",
"outputId": "78d7881f-a441-4476-87ae-52fc24621e1a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 338
}
},
"source": [
"from matplotlib import pyplot\n",
"from scipy.misc import toimage\n",
"from keras.datasets import cifar10\n",
"def show_imgs(X):\n",
" pyplot.figure(1)\n",
" k = 0\n",
" for i in range(0,4):\n",
" for j in range(0,4):\n",
" pyplot.subplot2grid((4,4),(i,j))\n",
" pyplot.imshow(toimage(X[k]))\n",
" k = k+1\n",
" # show the plot\n",
" pyplot.show()\n",
" \n",
"(x_train, y_train), (x_test, y_test) = cifar10.load_data()\n",
"show_imgs(x_test[:16])\n"
],
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"text": [
"/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:10: DeprecationWarning: `toimage` is deprecated!\n",
"`toimage` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.\n",
"Use Pillow's ``Image.fromarray`` directly instead.\n",
" # Remove the CWD from sys.path while we load stuff.\n"
],
"name": "stderr"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 16 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "dQQPlF6RdS2m",
"colab_type": "text"
},
"source": [
"## Create Function to get data corresponding to three labels"
]
},
{
"cell_type": "code",
"metadata": {
"id": "GFyk3xzNdYNW",
"colab_type": "code",
"colab": {}
},
"source": [
"# This function takes the entire traaining data and test data and corresponding categorical label and returns the corresponding data in class indices\n",
"def getThreeClassesTrainTest(class_indices,train_data,train_labels,test_data,test_labels):\n",
" all_train_data = []\n",
" all_train_data_label = []\n",
" all_test_data = []\n",
" all_test_data_label = []\n",
" for ind in class_indices:\n",
" this_class_location_train = np.where(train_labels==ind)[0] # train_labels[train_labels == ind]\n",
" this_class_data_train = train_data[this_class_location_train,:]\n",
" this_class_data_train_label = train_labels[this_class_location_train]\n",
"# print(this_class_location_train)\n",
" \n",
" this_class_location_test = np.where(test_labels==ind)[0] #test_labels[test_labels == ind]\n",
" this_class_data_test = test_data[this_class_location_test,:]\n",
" this_class_data_test_label = test_labels[this_class_location_test]\n",
" \n",
" all_train_data.append(this_class_data_train)\n",
" all_test_data.append(this_class_data_test)\n",
" all_train_data_label.append(this_class_data_train_label)\n",
" all_test_data_label.append(this_class_data_test_label)\n",
" \n",
" train_data_three = all_train_data[0]\n",
" train_label_three = all_train_data_label[0]\n",
" test_data_three = all_test_data[0]\n",
" test_label_three = all_test_data_label[0]\n",
" \n",
" for j in range(1,len(class_indices)):\n",
" train_data_three = np.concatenate((train_data_three,all_train_data[j]))\n",
" train_label_three = np.concatenate((train_label_three,all_train_data_label[j]))\n",
"\n",
" test_data_three = np.concatenate((test_data_three,all_test_data[j]))\n",
" test_label_three = np.concatenate((test_label_three,all_test_data_label[j]))\n",
"# print(train_label_three.shape)\n",
" train_label_three = np.reshape(train_label_three,newshape=(-1,))\n",
" test_label_three = np.reshape(test_label_three,newshape=(-1,))\n",
" return train_data_three, train_label_three, test_data_three,test_label_three"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "ex0j41PLde2x",
"colab_type": "text"
},
"source": [
"## Get data for three classes using getThreeClassesTrainTest function"
]
},
{
"cell_type": "code",
"metadata": {
"id": "IpqbOTfBdhHk",
"colab_type": "code",
"colab": {}
},
"source": [
"# train_three_data,train_three_label,test_three_data,test_three_label = getThreeClassesTrainTest([ 0,3,5 ],x_train,y_train,x_test,y_test)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ddFucSl_YW5B",
"colab_type": "code",
"colab": {}
},
"source": [
"train_three_data,train_three_label,test_three_data,test_three_label = (np.load('train_three_data_saved.npy'),\n",
" np.load('train_three_label_saved.npy'),\n",
" np.load('test_three_data_saved.npy'),\n",
" np.load('test_three_label_saved.npy'))"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "VDQiwalsYIGo",
"colab_type": "code",
"outputId": "cb87db0a-480c-456b-d348-0a380348afe3",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"train_three_label"
],
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([0, 3, 5, ..., 0, 5, 5], dtype=uint8)"
]
},
"metadata": {
"tags": []
},
"execution_count": 8
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "OCQfV4TvZh1r",
"colab_type": "code",
"outputId": "d733dfb9-8dde-471d-8fa1-68c123c68a39",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"test_three_label"
],
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([3, 5, 0, ..., 5, 0, 5])"
]
},
"metadata": {
"tags": []
},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "9gK_tiIWd2Nf",
"colab_type": "code",
"outputId": "78cb0385-81de-412c-b9cb-349d4ada3eae",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 338
}
},
"source": [
"plt.hist(train_three_label)"
],
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([5000., 0., 0., 0., 0., 0., 5000., 0., 0.,\n",
" 5000.]),\n",
" array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ]),\n",
" <a list of 10 Patch objects>)"
]
},
"metadata": {
"tags": []
},
"execution_count": 10
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n/gESZomJ0QAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "AEYcIMeqd4i1",
"colab_type": "code",
"outputId": "d3d707cf-2d1d-487c-ae91-0079aafcd3d1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 338
}
},
"source": [
"plt.hist(test_three_label)"
],
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(array([1000., 0., 0., 0., 0., 0., 1000., 0., 0.,\n",
" 1000.]),\n",
" array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. ]),\n",
" <a list of 10 Patch objects>)"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "z4n_WiMNd_Hf",
"colab_type": "code",
"colab": {}
},
"source": [
"# train_three_data, train_three_label = shuffle(train_three_data, train_three_label )\n",
"# test_three_data,test_three_label = shuffle(test_three_data,test_three_label )"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "VT_AKqQmeBk_",
"colab_type": "code",
"colab": {}
},
"source": [
"le = preprocessing.LabelEncoder()\n",
"le.fit_transform(train_three_label)\n",
"train_three_label_cat = le.transform(train_three_label)\n",
"test_three_label_cat = le.transform(test_three_label)\n",
"train_three_label_one_hot = to_categorical(train_three_label_cat)\n",
"test_three_label_one_hot = to_categorical(test_three_label_cat)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "rWEjK_exeEaJ",
"colab_type": "code",
"colab": {}
},
"source": [
"# split train data and to create validation data\n",
"train_X,valid_X,train_ground,valid_ground = train_test_split(train_three_data,\n",
" train_three_label_one_hot,\n",
" test_size=0.2,\n",
" random_state=13)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "mOFKlZWKeH25",
"colab_type": "code",
"colab": {}
},
"source": [
"num_classes = test_three_label_one_hot.shape[1]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "lr931MtCYGoN",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 138
},
"outputId": "c22cb62a-7acf-4ea1-e9ac-50002906daf4"
},
"source": [
"train_ground"
],
"execution_count": 39,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[0., 0., 1.],\n",
" [0., 0., 1.],\n",
" [1., 0., 0.],\n",
" ...,\n",
" [0., 1., 0.],\n",
" [1., 0., 0.],\n",
" [0., 1., 0.]], dtype=float32)"
]
},
"metadata": {
"tags": []
},
"execution_count": 39
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Ssi32yj-d1iX",
"colab_type": "text"
},
"source": [
"## Define the model"
]
},
{
"cell_type": "code",
"metadata": {
"id": "uUISHV2weN0t",
"colab_type": "code",
"colab": {}
},
"source": [
"x, y = 32, 32\n",
"inChannel = 3\n",
"input_img = Input(shape = (x, y, inChannel))\n",
"ep = 10 \n",
"weight_decay = 1e-4"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "MMuuJ3IcDxxN",
"colab_type": "code",
"colab": {}
},
"source": [
"enable_training = True"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Ich0RbYnebwW",
"colab_type": "code",
"colab": {}
},
"source": [
"def cifar10ClassifierPruned(input_img):\n",
" \n",
" conv1_1 = (Conv2D(64, (3,3),name = 'conv1_1' ,padding='same', \n",
" kernel_regularizer=regularizers.l2(weight_decay), input_shape=x_train.shape[1:],\n",
" activation='relu',trainable = enable_training))(input_img)\n",
" conv1_2 = BatchNormalization(name = 'conv1_2',trainable = enable_training)(conv1_1)\n",
" pool1_3 = MaxPooling2D(pool_size=(2, 2), name = 'pool1_3',trainable = enable_training)(conv1_2) #14 x 14 x 32\n",
" conv2_1 = (Conv2D(128, (3,3),name = 'conv2_1' ,trainable = enable_training,padding='same',\n",
" activation= 'relu',kernel_regularizer=regularizers.l2(weight_decay)))(pool1_3)\n",
" conv2_2 = BatchNormalization(name = 'conv2_2',trainable = enable_training)(conv2_1)\n",
" pool2_3 = MaxPooling2D(pool_size=(2, 2), name = 'pool2_3',trainable = enable_training)(conv2_2) #14 x 14 x 32\n",
" \n",
" conv3_1 = (Conv2D(256, (3,3),trainable = enable_training, padding='same',name = 'conv3_1',\n",
" kernel_regularizer=regularizers.l2(weight_decay), activation='relu'))(pool2_3)\n",
" conv3_2 = BatchNormalization(name = 'conv3_2',trainable = enable_training)(conv3_1)\n",
" conv4_1 = (Conv2D(256, (3,3), trainable = enable_training,padding='same',name = 'conv4_1' ,activation= 'relu',\n",
" kernel_regularizer=regularizers.l2(weight_decay)))(conv3_2)\n",
" conv4_2 = BatchNormalization(name = 'conv4_2',trainable = enable_training)(conv4_1)\n",
" pool4_2 = MaxPooling2D(pool_size=(2, 2), name = 'pool4_2',trainable = enable_training)(conv4_2) #14 x 14 x 32\n",
" \n",
" conv5_1 = (Conv2D(512, (3,3), padding='same',name = 'conv5_1',trainable = enable_training,\n",
" kernel_regularizer=regularizers.l2(weight_decay), activation='relu'))(pool4_2)\n",
" conv5_2 = BatchNormalization(name = 'conv5_2',trainable = enable_training)(conv5_1)\n",
" conv6_1 = (Conv2D(512, (3,3), padding='same',trainable = enable_training,name = 'conv6_1' ,activation= 'relu',\n",
" kernel_regularizer=regularizers.l2(weight_decay)))(conv5_2)\n",
" conv6_2 = BatchNormalization(name = 'conv6_2',trainable = enable_training)(conv6_1)\n",
" pool6_2 = MaxPooling2D(pool_size=(2, 2), name = 'pool6_2',trainable = enable_training)(conv6_2) #14 x 14 x 32\n",
" \n",
" conv7_1 = (Conv2D(512, (3,3), padding='same',name = 'conv7_1',trainable = enable_training,\n",
" kernel_regularizer=regularizers.l2(weight_decay), activation='relu'))(pool6_2)\n",
" conv7_2 = BatchNormalization(name = 'conv7_2',trainable = enable_training)(conv7_1)\n",
" conv8_1 = (Conv2D(256, (3,3), padding='same',name = 'conv8_1' ,trainable = enable_training,activation= 'relu',\n",
" kernel_regularizer=regularizers.l2(weight_decay)))(conv7_2)\n",
" conv8_2 = BatchNormalization(name = 'conv8_2')(conv8_1)\n",
" pool8_2 = MaxPooling2D(pool_size=(2, 2), name = 'pool8_2')(conv8_2) #14 x 14 x 32\n",
"\n",
"\n",
" flat = Flatten()(pool8_2)\n",
" fc1 = Dense(4096, activation='relu', name = 'fc1')(flat)\n",
" fc2 = Dense(4096, activation='relu', name = 'fc2')(fc1)\n",
" fc3 = Dense(1000, activation='relu', name = 'fc3')(fc2)\n",
"\n",
"\n",
" \n",
" out = Dense(num_classes, activation='softmax', name = 'out')(fc3)\n",
" \n",
" return out"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "U_0LHS-Xf7aN",
"colab_type": "text"
},
"source": [
"## Define functions for calculation of DI score\n",
"getDIScoreOfLayer(layer_output, true_labels), \n",
"getDIScoreOfLayerCNNLayer(cnn_outputs, true_labels)\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "xsLk-f7sf6zd",
"colab_type": "code",
"colab": {}
},
"source": [
"def getDIScoreOfLayer(layer_output, true_labels):\n",
" # computeScatterMatrix\n",
" rho = 1e-6\n",
" mu = layer_output.mean(axis=0)\n",
"# print(mu.shape)\n",
" mu = mu.reshape((1,-1))\n",
" centered_data = layer_output - mu\n",
" S_bar = np.matmul(centered_data.T,centered_data)\n",
" # compute between class matrix\n",
" total_classes = true_labels.max()\n",
" S_B = np.zeros(shape = (mu.shape[1],mu.shape[1]))\n",
" S_W = np.zeros(shape = (mu.shape[1],mu.shape[1]))\n",
" unique_classes = np.unique(true_labels)\n",
" unique_classes_list = np.ndarray.tolist(unique_classes)\n",
" for l in unique_classes_list:\n",
" class_l_index = np.where(true_labels == l)\n",
" class_l_output = layer_output[class_l_index[0],:]\n",
" mu_l = class_l_output.mean(axis=0)\n",
" mu_l = mu_l.reshape((1,-1))\n",
" total_examples_this_class = class_l_index[0].shape \n",
" ss = mu_l - mu\n",
" S_B = S_B + total_examples_this_class*np.matmul((mu_l - mu).T,(mu_l - mu))\n",
"\n",
" DI_Score = np.trace(np.matmul(np.linalg.inv(S_bar + rho*np.eye(S_bar.shape[0])),S_B))\n",
" return DI_Score"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "4KLI4xHpMlS9",
"colab_type": "code",
"colab": {}
},
"source": [
"def compute_di_score(features,Y):\n",
" '''\n",
" Computes DI Score of a Neural Network Output\n",
" For convolution layer, the DI score of each channel is computed\n",
" For fully connected layer, the DI score of each node is computed\n",
" \n",
" Input:\n",
" features: shape: convolution: Ne,H,W,Nf\n",
" fully connected: Ne,Nf\n",
" Ne = number of example\n",
" Nf = number of channels/filters\n",
" Y: shape: Ne,n_class\n",
" One hot encoded array. Each row contains one example.\n",
" \n",
" Output:\n",
" dis: shape: (Nf,), di sore of each of the filters.\n",
" '''\n",
" fshape = len(features.shape)\n",
" \n",
" #Taking the features to Appropriate Shape\n",
" if fshape==4:\n",
" Ne,H,W,Nf = features.shape\n",
" features = features.transpose(3,0,1,2) #Nf, Ne, H,W\n",
" features = features.reshape(Nf,Ne,-1) #Nf, Ne, HxW\n",
" features = features.transpose(0,2,1) # Nf, HxW, Ne\n",
" d = H*W\n",
" elif fshape==2:\n",
" Ne,Nf = features.shape\n",
" features = features.transpose(1,0) #Nf, Ne\n",
" features = np.expand_dims(features,axis=1)\n",
" d = 1\n",
" \n",
" #Normalizing the Y\n",
" Y = Y.T\n",
" N_number = np.sqrt(np.array([np.sum(Y,axis=1)]).T)\n",
" Y = Y/N_number\n",
" \n",
" dis = np.zeros(Nf)\n",
"\n",
" rho = 10**-8\n",
" for i in range(Nf):\n",
" X = features[i,:,:]\n",
" \n",
" dis[i] = np.trace(np.linalg.inv(X.dot(X.T)+rho*np.eye(d)).dot(X).dot(Y.T).dot(Y).dot(X.T))\n",
" \n",
" \n",
" return dis"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "ubrpaIpFgBzn",
"colab_type": "code",
"colab": {}
},
"source": [
"def getDIScoreOfLayerCNNLayer(cnn_outputs, true_labels):\n",
" # computeScatterMatrix\n",
" number_of_filters = cnn_outputs.shape[3]\n",
" cnn_di_scores = []\n",
" for filt in range(0,number_of_filters):\n",
" outputs_filter = cnn_outputs[:,:,:,filt]\n",
" outputs_filter_reshaped = np.reshape(outputs_filter, newshape=(cnn_outputs.shape[0],-1))\n",
" this_filter_score = compute_di_score(outputs_filter_reshaped, true_labels)\n",
" cnn_di_scores.append(this_filter_score)\n",
" return cnn_di_scores"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "f2w2HyV5MWn1",
"colab_type": "code",
"colab": {}
},
"source": [
""
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "MQ5H0p_KjVCw",
"colab_type": "text"
},
"source": [
"## define a function to get and plot di score of a layer. It takes inputs - trained model, layer name to get DI scores and returns a plot with some statistics"
]
},
{
"cell_type": "code",
"metadata": {
"id": "o9MHI1LFjUZs",
"colab_type": "code",
"colab": {}
},
"source": [
"def createCNNLayerDIScorePlot(trained_model, layer_name, data_to_use = train_X , data_label =train_ground ):\n",
"# print(trained_model.layers)\n",
"# get_cnn1_output_function = K.function([trained_model.layers[0].input],\n",
"# [trained_model.get_layer(layer_name).output]) #get_layer test_three_label\n",
" \n",
" model = trained_model\n",
" intermediate_layer_model = Model(inputs=model.input,\n",
" outputs=model.get_layer(layer_name).output)\n",
" cnn1_output = intermediate_layer_model.predict(data_to_use)\n",
"# cnn1_output = get_cnn1_output_function([data_to_use])[0]\n",
" di_scores = compute_di_score(cnn1_output, data_label)\n",
" # plot DI score\n",
" y_pos = np.arange(len(di_scores))\n",
" plt.bar(y_pos, di_scores, align='center', alpha=0.5)\n",
" plt.xlabel('FilterNumber')\n",
" plt.ylabel('DI Score')\n",
"\n",
" print('Mean of DI SCore: ',np.mean(di_scores))\n",
" print('STD of DI Score: ', np.std(di_scores))\n",
" print('MAX of DI Score: ', np.max(di_scores))\n",
"# plt.title('DI score - Data - D_L, Network -N_L ' + layer_name)\n",
" plt.title('DI score ' + layer_name)\n",
"\n",
"# plt.ylim([0,1])\n",
" return di_scores"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "DCCl7-vOfSZ9",
"colab_type": "text"
},
"source": [
"## load pretrained model"
]
},
{
"cell_type": "code",
"metadata": {
"id": "jqIkmDGkfRtD",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 121
},
"outputId": "3833ba3e-5ec1-4573-c337-4fc748052862"
},
"source": [
"loaded_model_low_accuracy = keras.models.load_model('vgg16lowAccuracyModelDataV3.h5')\n",
"loaded_model_high_accuracy = keras.models.load_model('vgg16HighAccuracyModelData.h5')\n"
],
"execution_count": 24,
"outputs": [
{
"output_type": "stream",
"text": [
"WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n",
"WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/ops/math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "z7J98O5qfi8Z",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "548ba03b-20cc-4fd1-c685-b3c0d40c8a3f"
},
"source": [
"loaded_model_low_accuracy.evaluate(valid_X, valid_ground, verbose=0)\n",
"\n",
"#[0.3284807046254476, 0.923]"
],
"execution_count": 25,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[0.455404138247172, 0.8660000001589457]"
]
},
"metadata": {
"tags": []
},
"execution_count": 25
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "rddbxdrtXcR7",
"colab_type": "code",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
},
"outputId": "f4703925-16eb-4fb1-8592-f0fe8550035d"
},
"source": [
"temp_model = keras.models.load_model('vgg16lowAccuracyModelDataV3.h5')\n",
"temp_model.evaluate(valid_X, valid_ground, verbose=0)"
],
"execution_count": 26,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[0.4554041395187378, 0.8660000001589457]"
]
},
"metadata": {
"tags": []
},
"execution_count": 26
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "HsXuB6NbXmGB",
"colab_type": "code",
"outputId": "abf657fd-216b-4850-e53d-b79c287a4c66",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 138
}
},
"source": [
"valid_ground"
],
"execution_count": 27,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[0., 0., 1.],\n",
" [0., 1., 0.],\n",
" [0., 1., 0.],\n",
" ...,\n",
" [1., 0., 0.],\n",
" [1., 0., 0.],\n",
" [1., 0., 0.]], dtype=float32)"
]
},
"metadata": {
"tags": []
},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "KVSvyoZ8Uw_y",
"colab_type": "code",
"outputId": "fcbecef4-5bcc-4495-e43c-5758d8482e38",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"loaded_model_low_accuracy.evaluate(test_three_data, test_three_label_one_hot, verbose=0)"
],
"execution_count": 28,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[0.45106768822669985, 0.8799999998410543]"
]
},
"metadata": {
"tags": []
},
"execution_count": 28
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "VAY0LGCNSMBc",
"colab_type": "code",
"outputId": "761b7cdc-289a-493c-e6f8-bf49c4319379",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}