{"cells":[{"metadata":{"_uuid":"75ba011a5cda52db2d167e75b84056b644ec8d51"},"cell_type":"markdown","source":"##### **Installing Libraries**"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np \nimport pandas as pd \nimport matplotlib.pyplot as plt\n%matplotlib inline \n\nimport seaborn as sns\nfrom keras.utils import to_categorical  \n\nimport os\nimport cv2 \nfrom subprocess import check_output\nprint(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c52014240e6f425e79109cfb4575941eba5704a2","scrolled":true},"cell_type":"code","source":"temp_df=pd.read_csv('../input/diabetic-retinopathy-detection/trainLabels.csv.zip') \nprint(temp_df.head()) \nimage=temp_df['image'].str.split('_',n=1,expand=True)  \ndf = pd.DataFrame()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['eye_side']=list(image[1]) \ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['patient_id']=list(image[0])\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['path']='../input/diabetic-retinopathy-detection/' \ndf['path']=df['path'].str.cat(temp_df['image']+'.jpeg') \ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['level']=temp_df['level']\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df['level_cat'] = df['level'].map(lambda x: to_categorical(x, 1+df['level'].max()))\ndf.head()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"3a19b4836926d19a2dcf33a87901c66aadbb354f"},"cell_type":"markdown","source":"**Visualization**\n"},{"metadata":{"trusted":true,"_uuid":"624db2a543159b9a9ccfe2a02036fc755927bb8d","scrolled":true},"cell_type":"code","source":"sizes = df['level'].values \nprint(sizes[0:5])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"5c1d2931363854e96d6e0623a7e750f8f640d31d"},"cell_type":"code","source":"sns.distplot(sizes, kde=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"50cee6f84bec0ab61acc2d715a9c94911b92fb12"},"cell_type":"code","source":"pd.value_counts(sizes) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"44b0d93a24fe74e7ab50ae44f80e8a2f056d3992"},"cell_type":"code","source":"sum_E=0\nfor i in range (1,5):\n    L1_df=pd.DataFrame()\n    L1_df =df [df.level==i]\n    x=len(L1_df)\n    sum_E=x+sum_E\nprint(sum_E)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"960b877a59081a2445f343cc84473f152a58276c"},"cell_type":"markdown","source":"**loading my saving Binary data**"},{"metadata":{"trusted":true,"scrolled":true,"_uuid":"ab834012666408e5568e484721784baad278b651"},"cell_type":"code","source":"B_df=pd.read_csv('../input/prepossessed-arrays-of-binary-data/1000_Binary Dataframe')\nB_df=B_df.drop('Unnamed: 0',axis=1)\nB_df.head(10)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c4780a38f50a2fde101dfb4dcdb3787c74e578c1"},"cell_type":"code","source":"sizes =B_df['level'].values\nsns.distplot(sizes, kde=False); # Visualizing levels in dataset","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"a6da57f88204abf9fa7635edb1c43b3e0919449f"},"cell_type":"markdown","source":"**loading My numpy array which I saved**"},{"metadata":{"trusted":true,"_uuid":"3c831d9a6bd26e2daf869fe63f331140a05a1c04"},"cell_type":"code","source":"Binary_90 = np.load('../input/prepossessed-arrays-of-binary-data/1000_Binary_images_data_90.npz')\nX_90=Binary_90['a']\nBinary_128 = np.load('../input/prepossessed-arrays-of-binary-data/1000_Binary_images_data_128.npz')\nX_128=Binary_128['a']\nBinary_264 = np.load('../input/prepossessed-arrays-of-binary-data/1000_Binary_images_data_264.npz')\nX_264=Binary_264['a']\ny=B_df['level'].values\n\n\nprint(X_90.shape)\nprint(X_128.shape)\nprint(X_264.shape)\nprint(y.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7315b6c277900108ec972a851987109ac5b62840"},"cell_type":"code","source":"print(\"Shape before reshaping X_90\" +str(X_90.shape))\nX_90=X_90.reshape(1000,90,90,3)\nprint(\"Shape after reshaping X_90\" +str(X_90.shape))\nprint(\"\\n\\n\")\n\nprint(\"Shape before reshaping X_128\" +str(X_128.shape))\nX_128=X_128.reshape(1000,128,128,3)\nprint(\"Shape after reshaping X_128\" +str(X_128.shape))\nprint(\"\\n\\n\")\n\nprint(\"Shape before reshaping X_264\" +str(X_264.shape))\nX_264=X_264.reshape(1000,264,264,3)\nprint(\"Shape after reshaping X_264\" +str(X_264.shape))\n","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"bc7d08ede0dc563bd221e6004aa8898bae6d5c9e"},"cell_type":"markdown","source":"**Confirming that image path on 1st index of data frame is same as the image at 1st index of the Np Arrays**"},{"metadata":{"trusted":true,"_uuid":"9632d11c1430af93ff6f7b2e63d45ea2b266264e"},"cell_type":"code","source":"plt.title(\"128*128*3 Image\")\nplt.imshow(X_128[1])\nplt.show()\n\nplt.title(\"264*264*3 Image\")\nplt.imshow(X_264[1])\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"e769cdf35a7cddeeefd8ce29ea71e7e9a6bea9f8"},"cell_type":"markdown","source":"**Its seem to be same now thats good for us**"},{"metadata":{"_uuid":"a3605da2dd2e8140f7b14fa5b12bdeb488280052"},"cell_type":"markdown","source":"**Now I have my X and Y. Now its time for spliting and training**"},{"metadata":{"trusted":true,"_uuid":"9947540f03908f2340b1de637fd306f15c52d455"},"cell_type":"code","source":"y.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e08529b5824b56a61fd1cc99c985c12345906258"},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(\n    X_128,y, test_size=0.10, random_state=42)\ny_train = to_categorical(y_train, num_classes=2)\ny_test_Categorical=to_categorical(y_test)\ny_categorical =to_categorical(y)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"295eb6aff84b1018e66376d105ead5990e55d7cf"},"cell_type":"markdown","source":"## CNN Model"},{"metadata":{"trusted":true,"_uuid":"f448c61a56313d50de76aa71a032b79169397f44"},"cell_type":"code","source":"from keras.models import Sequential,Model\nfrom keras.layers import Conv2D,MaxPooling2D,Dense,Flatten,Dropout,Activation\nfrom keras import losses\nfrom keras.optimizers import Adam, Adagrad\nfrom keras.callbacks import EarlyStopping\nfrom keras import regularizers\nfrom sklearn.model_selection import GridSearchCV\nimport keras\n#import talos as ta","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"1b611e55d174313671d5eb5c3e1653f157218459"},"cell_type":"markdown","source":"**Talos Model For HyperParameter Optimization**"},{"metadata":{"trusted":true,"_uuid":"36badd189ef2fb415aeffb4803ed766fa4d492a9"},"cell_type":"code","source":"\ndef Talos_Model(X_train, y_train, X_test, y_test, params):\n    #parameters defined\n    lr = params['lr']\n    epochs=params['epochs']\n    dropout_rate=params['dropout']\n    optimizer=params['optimizer']\n    loss=params['loss']\n    last_activation=params['last_activation']\n    activation=params['activation']\n    clipnorm=params['clipnorm']\n    decay=params['decay']\n    momentum=params['momentum']\n    l1=params['l1']\n    l2=params['l2']\n    No_of_CONV_and_Maxpool_layers=params['No_of_CONV_and_Maxpool_layers']\n    No_of_Dense_Layers =params['No_of_Dense_Layers']\n    No_of_Units_in_dense_layers=params['No_of_Units_in_dense_layers']\n    Kernal_Size=params['Kernal_Size']\n    Conv2d_filters=params['Conv2d_filters']\n    pool_size_p=params['pool_size']\n    padding_p=params['padding']\n    \n    model=Sequential()\n    \n    for i in range(0,No_of_CONV_and_Maxpool_layers):\n        model.add(Conv2D(Conv2d_filters, Kernal_Size ,padding=padding_p))\n        model.add(Activation(activation))\n        model.add(MaxPooling2D(pool_size=pool_size_p,strides=(2,2)))\n    \n    \n    model.add(Flatten())\n    \n    for i in range (0,No_of_Dense_Layers):\n        model.add(Dense(units=No_of_Units_in_dense_layers,activation=activation, kernel_regularizer=regularizers.l2(l2),\n                  activity_regularizer=regularizers.l1(l1)))\n    \n    \n    model.add(Dense(units=20,activation=activation))\n    \n    model.add(Dense(units=2,activation=activation))\n    if optimizer==\"Adam\":\n        opt=keras.optimizers.Adam(lr=lr, decay=decay, beta_1=0.9, beta_2=0.999)\n    if optimizer==\"Adagrad\":\n        opt=keras.optimizers.Adagrad(lr=lr, epsilon=None, decay=decay)\n    if optimizer==\"sgd\":\n        opt=keras.optimizers.SGD(lr=lr, momentum=momentum, decay=decay, nesterov=False)\n    \n    model.compile(loss=loss,optimizer=opt,\n                 metrics=['accuracy'])\n    \n    out = model.fit(X_train, y_train, epochs=params['epochs'])\n\n    return out,model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"358358559fd08bf1270875e1ca43915894f4d072"},"cell_type":"code","source":"params = {'lr': (0.1, 0.01,1 ),\n     'epochs': [10,5,15],\n     'dropout': (0, 0.40, 0.8),\n     'optimizer': [\"Adam\",\"Adagrad\",\"sgd\"],\n     'loss': [\"binary_crossentropy\",\"mean_squared_error\",\"mean_absolute_error\"],\n     'last_activation': [\"softmax\",\"sigmoid\"],\n     'activation' :[\"relu\",\"selu\",\"linear\"],\n     'clipnorm':(0.0,0.5,1),\n     'decay':(1e-6,1e-4,1e-2),\n     'momentum':(0.9,0.5,0.2),\n     'l1': (0.01,0.001,0.0001),\n     'l2': (0.01,0.001,0.0001),\n     'No_of_CONV_and_Maxpool_layers':[2,3],\n     'No_of_Dense_Layers': [2,3,4],\n     'No_of_Units_in_dense_layers':[128,64,32,256],\n     'Kernal_Size':[(2,2),(4,4),(6,6)],\n     'Conv2d_filters':[60,40,80,120],\n     'pool_size':[(2,2),(4,4)],\n     'padding':[\"valid\",\"same\"]\n    }","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"99270f00dfbe4315b472e374f6c49988bf9f6b71"},"cell_type":"markdown","source":"**Randomized Search For Hyperparameter tuning**"},{"metadata":{"trusted":true,"_uuid":"172cc2216ae33cc288cd8dfb6cb12ab1d762b68b"},"cell_type":"code","source":"\ndef Randomized_Model(lr=0.01,dropout=0.5,optimizer=\"adam\",loss='mean_squared_error',\n                    last_activation=\"softmax\",activation=\"relu\",clipnorm=0.1,\n                    decay=1e-2,momentum=0.5,l1=0.01,l2=0.001,No_of_CONV_and_Maxpool_layers=3,\n                    No_of_Dense_Layers=3,No_of_Units_in_dense_layers=24,Conv2d_filters=60):\n       \n    \n    \n    #model sequential\n    model=Sequential()\n    \n    for i in range(0,No_of_CONV_and_Maxpool_layers):\n        model.add(Conv2D(Conv2d_filters, (2,2) ,padding=\"same\"))\n        model.add(Activation(activation))\n        model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))\n    \n    \n    model.add(Flatten())\n    \n    for i in range (0,No_of_Dense_Layers):\n        model.add(Dense(units=No_of_Units_in_dense_layers,activation=activation, kernel_regularizer=regularizers.l2(l2),\n                  activity_regularizer=regularizers.l1(l1)))\n    \n    model.add(Dropout(dropout))\n    model.add(Dense(units=20,activation=activation))\n    \n    model.add(Dense(units=2,activation=activation))\n    if optimizer==\"Adam\":\n        opt=keras.optimizers.Adam(lr=lr, decay=decay, beta_1=0.9, beta_2=0.999)\n    if optimizer==\"Adagrad\":\n        opt=keras.optimizers.Adagrad(lr=lr, epsilon=None, decay=decay)\n    if optimizer==\"sgd\":\n        opt=keras.optimizers.SGD(lr=lr, momentum=momentum, decay=decay, nesterov=False)\n    \n    model.compile(loss=loss,optimizer=opt,\n                 metrics=['accuracy'])\n    \n    \n\n    return model","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"fdfc5be86a0e060f0cf09a5aef262d0afd6f6a70"},"cell_type":"markdown","source":"**Parameters of Randomized Search**"},{"metadata":{"trusted":true,"_uuid":"d9f91b57dc9936c42dcdde953dac7031999acd81"},"cell_type":"code","source":"\n\nparams = {'lr': (0.1, 0.01,1,0.001 ),\n     'epochs': [10,5,15,30],\n     'dropout': (0, 0.40, 0.8),\n     'optimizer': [\"Adam\",\"Adagrad\",\"sgd\"],\n     'loss': [\"binary_crossentropy\",\"mean_squared_error\",\"mean_absolute_error\"],\n     'last_activation': [\"softmax\",\"sigmoid\"],\n     'activation' :[\"relu\",\"selu\",\"linear\"],\n     'clipnorm':(0.0,0.5,1),\n     'decay':(1e-6,1e-4,1e-2),\n     'momentum':(0.9,0.5,0.2),\n     'l1': (0.01,0.001,0.0001),\n     'l2': (0.01,0.001,0.0001),\n     'No_of_CONV_and_Maxpool_layers':[2,3],\n     'No_of_Dense_Layers': [2,3,4,5],\n     'No_of_Units_in_dense_layers':[128,64,32,256],\n     \n     'Conv2d_filters':[60,40,80,120,220]\n     \n     \n    }\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"1733ab33fa158b7094409b9a2baf67fda6f42fa1","_kg_hide-output":true},"cell_type":"code","source":"from keras.wrappers.scikit_learn import KerasClassifier\nfrom sklearn.model_selection import RandomizedSearchCV, KFold\nfrom sklearn.metrics import make_scorer\n# model class to use in the scikit random search CV \nmodel = KerasClassifier(build_fn=Randomized_Model, epochs=10, batch_size=20, verbose=1)\ngrid = RandomizedSearchCV(estimator=model, cv=KFold(3), param_distributions=params, \n                          verbose=20,  n_iter=10, n_jobs=1)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"48f586502c8b81b5ace354be9aac4210e8ab83c2","_kg_hide-output":true},"cell_type":"code","source":"grid_result = grid.fit(X_train, y_train)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"3579cc3b86fa17ff2b42cf815ba374fe9f7bd77c"},"cell_type":"markdown","source":"**Best Params of Randomized search**"},{"metadata":{"trusted":true,"_uuid":"5395aa0cd00cdc8d31358558d27a403e2b5ec557"},"cell_type":"code","source":"best_params=grid_result.best_params_\nbest_params","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"414baf56512334fab8c2fdd35534ba472175ce89"},"cell_type":"code","source":"\nfrom sklearn.metrics import accuracy_score\n\ny=grid_result.predict(X_test)\nrandom=accuracy_score(y, y_test)\nprint(\"Base Accuracy \",random)\n\nbest_random = grid_result.best_estimator_\ny1=best_random.predict(X_test)\nBest=accuracy_score(y1, y_test)\nprint(\"Best Accuracy \" ,Best)\n\n\nprint('Improvement of {:0.2f}%.'.format( 100 * (Best - random) / random))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b6da09f65eaf59710c2ec0201f7257b780856588"},"cell_type":"code","source":"def Best_param_Model(best_params):\n       \n    lr=best_params[\"lr\"]\n    dropout=best_params[\"dropout\"]\n    optimizer=best_params[\"optimizer\"]\n    loss=best_params[\"loss\"]\n    last_activation=best_params[\"last_activation\"]\n    activation=best_params[\"activation\"]\n    clipnorm=best_params[\"clipnorm\"]\n    decay=best_params[\"decay\"]\n    momentum=best_params[\"momentum\"]\n    l1=best_params[\"l1\"]\n    l2=best_params[\"l2\"]\n    No_of_CONV_and_Maxpool_layers=best_params[\"No_of_CONV_and_Maxpool_layers\"]\n    No_of_Dense_Layers=best_params[\"No_of_Dense_Layers\"]\n    No_of_Units_in_dense_layers=best_params[\"No_of_Units_in_dense_layers\"]\n    Conv2d_filters=best_params[\"Conv2d_filters\"]\n    \n    #model sequential\n    model=Sequential()\n    \n    for i in range(0,No_of_CONV_and_Maxpool_layers):\n        model.add(Conv2D(Conv2d_filters, (2,2) ,padding=\"same\"))\n        model.add(Activation(activation))\n        model.add(MaxPooling2D(pool_size=(2,2),strides=(2,2)))\n    \n    \n    model.add(Flatten())\n    \n    for i in range (0,No_of_Dense_Layers):\n        model.add(Dense(units=No_of_Units_in_dense_layers,activation=activation, kernel_regularizer=regularizers.l2(l2),\n                  activity_regularizer=regularizers.l1(l1)))\n    \n    \n    model.add(Dense(units=20,activation=activation))\n    \n    model.add(Dense(units=2,activation=activation))\n    if optimizer==\"Adam\":\n        opt=keras.optimizers.Adam(lr=lr, decay=decay, beta_1=0.9, beta_2=0.999)\n    if optimizer==\"Adagrad\":\n        opt=keras.optimizers.Adagrad(lr=lr, epsilon=None, decay=decay)\n    if optimizer==\"sgd\":\n        opt=keras.optimizers.SGD(lr=lr, momentum=momentum, decay=decay, nesterov=False)\n    \n    model.compile(loss=loss,optimizer=opt,\n                 metrics=['accuracy'])\n    \n    \n\n    return model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d44860874f77e57d6097dfe2e8a508577fc1c8d0","_kg_hide-output":true},"cell_type":"code","source":"\nBinary_model=Best_param_Model(best_params)\nhistory =Binary_model.fit(X_train, y_train, epochs=100, validation_data=(X_test,y_test_Categorical))\n\n# Plot training & validation accuracy values\nplt.plot(history.history['acc'])\nplt.plot(history.history['val_acc'])\n\n\nplt.title('Model accuracy')\nplt.ylabel('Accuracy')\nplt.xlabel('Epoch')\nplt.legend(['Train', 'Test'], loc='upper left')\nplt.show()\n\n# Plot training & validation loss values\nplt.plot(history.history['loss'])\nplt.plot(history.history['val_loss'])\n\nplt.title('Model loss')\nplt.ylabel('Loss')\nplt.xlabel('Epoch')\nplt.legend(['Train', 'Test'], loc='upper left')\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2455607daf304f9c4f31cf4000f1a8152ea2aea0"},"cell_type":"code","source":"Binary_model.evaluate(X_test,y_test_Categorical)","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"c4a94e221c52734002a8854909da7fdce98d2d40"},"cell_type":"markdown","source":"**Visualizing my CNN model**"},{"metadata":{"trusted":true,"_uuid":"fa21ffdc50acfb243ee5ede6945dad7959f49bbc"},"cell_type":"code","source":"y=B_df['level'].values\nfrom sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(\n    X_128,y, test_size=0.10, random_state=42)\ny_train = to_categorical(y_train, num_classes=2)\ny_test_Categorical=to_categorical(y_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9701d9d546a13ec669d58b28e5466696131d8062","scrolled":true,"_kg_hide-output":true},"cell_type":"code","source":"\nmodel = Sequential()\nmodel.add(Conv2D(16,kernel_size = (5,5),activation = 'relu', activity_regularizer=regularizers.l2(1e-8)))\nmodel.add(Conv2D(32,kernel_size = (5,5),activation = 'relu', activity_regularizer = regularizers.l2(1e-8)))\nmodel.add(MaxPooling2D(3,3))\nmodel.add(Conv2D(64,kernel_size = (5,5),activation = 'relu', activity_regularizer = regularizers.l2(1e-8)))\nmodel.add(MaxPooling2D(3,3))\nmodel.add(Conv2D(128,activation = 'relu',kernel_size = (3,3),activity_regularizer = regularizers.l2(1e-8)))\nmodel.add(Flatten())\nmodel.add(Dropout(0.4))\nmodel.add(Dense(64,activation = 'tanh',activity_regularizer = regularizers.l2(1e-8)))\nmodel.add(Dropout(0.2))\nmodel.add(Dense(16,activation = 'tanh',activity_regularizer = regularizers.l2(1e-8)))\nmodel.add(Dropout(0.2))\nmodel.add(Dense(2,activation = 'softmax'))\nmodel.compile(loss=keras.losses.binary_crossentropy, optimizer=\"adam\", metrics=[\"accuracy\"])\nmodel.fit(X_train,y_train, epochs = 10 ,batch_size = 16,validation_data=(X_test,y_test_Categorical))\nmodel.summary()\n","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"3803469addf95c901556379672e89b2ce527d364"},"cell_type":"markdown","source":"Accuracy Measures\n[Helping Material](http://comprna.upf.edu/courses/Master_AGB/2_ClassificationAlgorithms/Lecture_Accuracy.pdf)"},{"metadata":{"trusted":true,"_uuid":"458012a41631422880d372941458b0f633751dfc"},"cell_type":"code","source":"from sklearn.metrics import confusion_matrix\nprediction=model.predict(X_test)\ny_pred=[]\nfor i in prediction:\n    y_pred.append(i.argmax())\ny_pred=np.asarray(y_pred)\ntrue_negative,false_positive,false_negative,true_positive=confusion_matrix(y_test, y_pred).ravel()\n\nprint(\"true_negative: \",true_negative)\nprint(\"false_positive: \",false_positive)\nprint(\"false_negative: \",false_negative)\nprint(\"true_positive: \",true_positive)\nprint(\"\\n\\n Accuracy Measures\\n\\n\")\nSensitivity=true_positive/(true_positive+false_negative)\nprint(\"Sensitivity: \",Sensitivity)\n\nFalse_Positive_Rate=false_positive/(false_positive+true_negative)\nprint(\"False_Positive_Rate: \",False_Positive_Rate)\n\nSpecificity=true_negative/(false_positive + true_negative)\nprint(\"Specificity: \",Specificity)\n\n#FDR à 0 means that very few of our predictions are wrong\nFalse_Discovery_Rate=false_positive/(false_positive+true_positive)\nprint(\"False_Discovery_Rate: \",False_Discovery_Rate)\n\nPositive_Predictive_Value =true_positive/(true_positive+false_positive)\nprint(\"Positive_Predictive_Value: \",Positive_Predictive_Value)\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"79b3e2128244f39f30951b1c8666005f38a1b32c"},"cell_type":"code","source":"a=np.expand_dims( X_train[10],axis=0)\na.shape\nlayer_outputs = [layer.output for layer in model.layers]\nactivation_model = Model(inputs=model.input, outputs=layer_outputs)\nactivations = activation_model.predict(a)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"beaf8921ae1e14443593369db699a718a3e1fb6a","_kg_hide-input":false,"_kg_hide-output":false},"cell_type":"code","source":"top_layer = model.layers[0]\nplt.imshow(top_layer.get_weights()[0][:, :, :,15 ])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d0f57d2b784f5c3fb18b13c76c1f8ff0e314f6df"},"cell_type":"markdown","source":"**Acheiving 76% accuracy till now on 1000 examples**"}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}