1 importlmdb2 importnumpy as np3 importtensorflow as tf4 importbinascii5 importcaffe6 as plt7 importPIL.Image8 from io importBytesIO9
10 importkeras11 from keras importSequential12 from importDense, Flatten, Dropout, MaxPool2D, Conv2D13 from importBatchNormalization14
15 from importconfusion_matrix16 from importLabelEncoder17 from importcolor_sequence18 from importfind_text_color19
20
21 cmap = color_sequence("YlOrRd")22
23 with open('/workspace/jobs/20200114-013226-34ca/', 'r') as f:24 l =()25
26 y_test =[]27 for i inl:28 y_test.append(int((' ')[1][0]))29
30 y =(y_test)31 labels =(y)32
33 env_db = ('/workspace/jobs/20200114-013226-34ca/val_db')34
35 input_ids =[]36 input_data =[]37
38 with env_db.begin() as txn:39 cursor =()40
41 for key, value incursor:42 datum =.caffe_pb2.Datum()43 (value)44 s =BytesIO()45 ()46 (0)47 img =(s)48 img =(img)49 img =()50
51 input_ids.append(key)52 input_data.append(img)53
54 y_train =(input_data)55 y_train = y_train.reshape(-1, 28, 28, 1)56
57 #keras mnist network
58 model =Sequential()59 (Conv2D(32, kernel_size=(3, 3),activation='relu',kernel_initializer='he_normal',input_shape=(28,28,1)))60 (Conv2D(32, kernel_size=(3, 3),activation='relu',kernel_initializer='he_normal'))61 (MaxPool2D((2, 2)))62 (Dropout(0.20))63 (Conv2D(64, (3, 3), activation='relu',padding='same',kernel_initializer='he_normal'))64 (Conv2D(64, (3, 3), activation='relu',padding='same',kernel_initializer='he_normal'))65 (MaxPool2D(pool_size=(2, 2)))66 (Dropout(0.25))67 (Conv2D(128, (3, 3), activation='relu',padding='same',kernel_initializer='he_normal'))68 (Dropout(0.25))69 (Flatten())70 (Dense(128, activation='relu'))71 (BatchNormalization())72 (Dropout(0.25))73
74 (Dense(10, activation='softmax'))75
76 (loss='mse',77 optimizer=(),78 metrics=['accuracy'])79
80 y2 = .to_categorical(y, 10)81 (y_train, y2, epochs=100, batch_size=32)82
83 y_pred =model.predict_classes(y_train)84
85 yp =(y)86 if in {"i", "u"}:87 idx =yp88 else:89 idx =LabelEncoder().fit_transform(yp)90 y_true =(labels)[idx]91
92 yp =(y_pred)93 if in {"i", "u"}:94 idx =yp95 else:96 idx =LabelEncoder().fit_transform(yp)97 y_pred =(labels)[idx]98
99 c_m = confusion_matrix(y_true, y_pred, labels=labels)100
101 print("c_m >>>>>>> \n", c_m)102
103 class_count = dict(zip(*(y_true, return_counts=True)))104 selected_class_counts =[]105 for c inlabels:106 try:107 selected_class_counts.append(class_count[c])108 exceptKeyError:109 selected_class_counts.append(0)110 class_counts =(selected_class_counts)111
112 cm_display = c_m[::-1, ::]113 n_classes =len(labels)114 X, Y = (n_classes + 1), (n_classes + 1)115
116 ax =()117
118 ax.set_ylim(bottom=0, top=cm_display.shape[0])119 ax.set_xlim(left=0, right=cm_display.shape[1])120
121 xticklabels =labels122 yticklabels = labels[::-1]123 ticks = (n_classes) + 0.5
124
125 (xticks=ticks, yticks=ticks)126 ax.set_xticklabels(xticklabels, rotation="vertical")127 ax.set_yticklabels(yticklabels)128
129 edgecolors =[]130
131 for x in X[:-1]:132 for y in Y[:-1]:133 value =cm_display[x, y]134 svalue = "{:0.0f}".format(value)135
136 base_color = cmap(value /cm_display.max())137 text_color =find_text_color(base_color)138
139 if cm_display[x, y] ==0:140 text_color = "0.75"
141
142 cx, cy = x + 0.5, y + 0.5
143 (144 cy,145 cx,146 svalue,147 va="center",148 ha="center",149 color=text_color150 )151 lc = "k" if xticklabels[x] == yticklabels[y] else "w"
152 (lc)153
154 vmin = 0.00001
155 vmax =cm_display.max()156
157 (158 X,159 Y,160 cm_display,161 vmin=vmin,162 vmax=vmax,163 edgecolor=edgecolors,164 cmap=cmap,165 linewidth="0.01",166 )167
168 #()
169 ("/data/domon/confusion_matrix.png")