{"cells":[{"metadata":{"trusted":true,"_uuid":"ecc5e640f2f9bac41b7310a65cffb42765904606"},"cell_type":"code","source":"# initiating gpu using tensorflow.\nimport tensorflow as tf\nfrom keras.backend.tensorflow_backend import set_session\nconfig = tf.ConfigProto()\nconfig.gpu_options.allow_growth = True\nconfig.log_device_placement = True\nsess = tf.Session(config=config)\nset_session(sess)","execution_count":28,"outputs":[]},{"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 os\nimport matplotlib.pyplot as plt\nimport cv2\nimport random\n%matplotlib inline","execution_count":29,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"12a3872f53b366f09d253fcbae33dac60ccc7be6"},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nfrom keras.utils import to_categorical\nfrom keras.models import Sequential\nfrom keras.layers.core import Dense, Dropout, Flatten, Activation\nfrom keras.layers import Conv2D, MaxPooling2D\nfrom keras.datasets import cifar10\nfrom keras.utils import np_utils\nfrom keras.layers.normalization import BatchNormalization\nfrom keras.callbacks import EarlyStopping\nfrom keras.models import load_model\nimport keras","execution_count":30,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"03f8da13d3bea5750798214e86a10b22053a8c8d"},"cell_type":"code","source":"train = '../input/train/'\ntest = '../input/test/'\nimg_size1 = 96\nimg_size2 = 96","execution_count":31,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"cancer_files_train = pd.read_csv('../input/train_labels.csv')","execution_count":32,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"33eaab95442396bfd64640254a002800e4e3d6e9"},"cell_type":"code","source":"cancer_files_train.head()","execution_count":33,"outputs":[{"output_type":"execute_result","execution_count":33,"data":{"text/plain":"                                         id  label\n0  f38a6374c348f90b587e046aac6079959adf3835      0\n1  c18f2d887b7ae4f6742ee445113fa1aef383ed77      1\n2  755db6279dae599ebb4d39a9123cce439965282d      0\n3  bc3f0c64fb968ff4a8bd33af6971ecae77c75e08      0\n4  068aba587a4950175d04c680d38943fd488d6a9d      0","text/html":"<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>id</th>\n      <th>label</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>f38a6374c348f90b587e046aac6079959adf3835</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>c18f2d887b7ae4f6742ee445113fa1aef383ed77</td>\n      <td>1</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>755db6279dae599ebb4d39a9123cce439965282d</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>bc3f0c64fb968ff4a8bd33af6971ecae77c75e08</td>\n      <td>0</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>068aba587a4950175d04c680d38943fd488d6a9d</td>\n      <td>0</td>\n    </tr>\n  </tbody>\n</table>\n</div>"},"metadata":{}}]},{"metadata":{"trusted":true,"_uuid":"dae76ffec03ebdc066b2281d5d9bf5beee8e3aa0"},"cell_type":"code","source":"for i in range(len(cancer_files_train)):\n        img_array = cv2.imread(os.path.join(train,cancer_files_train['id'][i]+'.tif'),cv2.IMREAD_GRAYSCALE)\n        plt.imshow(img_array, cmap='gray')\n        plt.show()\n        break","execution_count":34,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{"trusted":true,"_uuid":"3389720e0e83b505de068be05d3b036ea6e260be"},"cell_type":"code","source":"# creating a training dataset.\ntraining_data = []\ni = 0\ndef create_training_data():\n    for i in range(len(cancer_files_train)):\n            img_array = cv2.imread(os.path.join(train,cancer_files_train['id'][i]+'.tif'),cv2.IMREAD_GRAYSCALE)\n            new_img = cv2.resize(img_array,(img_size2,img_size1))\n            training_data.append([\n                new_img,cancer_files_train['label'][i]])","execution_count":35,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ac2d365f77d8f483390497ea8a355e7607ee2e40"},"cell_type":"code","source":"# Creating a test dataset.\ntesting_data = []\ni = 0\ndef create_testing_data():        \n    for img in os.listdir(test):\n        img_array = cv2.imread(os.path.join(test,img),cv2.IMREAD_GRAYSCALE)\n        new_img = cv2.resize(img_array,(img_size2,img_size1))\n        testing_data.append([img,\n            new_img])","execution_count":36,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c43b9d34a2844dd96b273060d42a477009397ebc"},"cell_type":"code","source":"create_training_data()","execution_count":37,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"d99dd3a89f772c0322e39187831e5df2401bfd13"},"cell_type":"code","source":"create_testing_data()","execution_count":38,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"03d140fe25af715386a78d9e73add9df97e29a80"},"cell_type":"code","source":"print(len(training_data))\nprint(len(testing_data))","execution_count":39,"outputs":[{"output_type":"stream","text":"220025\n57458\n","name":"stdout"}]},{"metadata":{"trusted":true,"_uuid":"71b634e74269d6a243bcd4d6341d43869456a356"},"cell_type":"code","source":"random.shuffle(training_data)","execution_count":40,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"9574a158dd053cf26b7dfc3c3cde9474184d8f9a"},"cell_type":"code","source":"x = []\ny = []\n\nfor features, label in training_data:\n    x.append(features)\n    y.append(label)\n\nX = np.array(x).reshape(-1,img_size2,img_size1,1)","execution_count":41,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e975948ace25c994714ca8901920189fd62c9a57"},"cell_type":"code","source":"X.shape","execution_count":42,"outputs":[{"output_type":"execute_result","execution_count":42,"data":{"text/plain":"(220025, 96, 96, 1)"},"metadata":{}}]},{"metadata":{"trusted":true,"_uuid":"3ca973f31e58d7c10aaacee52c1b625a2eceb8da"},"cell_type":"code","source":"x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=50)\n\nY_train = np_utils.to_categorical(y_train,num_classes=2)\nY_test = np_utils.to_categorical(y_test,num_classes=2)","execution_count":43,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"935629bab099b295e4ba1edbda48e0d544305194"},"cell_type":"code","source":"model = Sequential()","execution_count":57,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"56e0c31768ed4687bfdcb4b445fa23f75f94b676"},"cell_type":"code","source":"model.add(Conv2D(32,kernel_size=(3,3),strides=1,activation='relu',input_shape=(img_size1,img_size1,1)))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(32,kernel_size=(3,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization(axis = 3))\nmodel.add(MaxPooling2D(pool_size=(2,2),padding='same'))\nmodel.add(Dropout(0.3))","execution_count":58,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"cdc19e1b3912591d1a3c52d628aecc303b4241f9"},"cell_type":"code","source":"model.add(Conv2D(64,kernel_size=(3,3),strides=2,activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(64,kernel_size=(3,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization(axis = 3))\nmodel.add(MaxPooling2D(pool_size=(2,2),padding='same'))\nmodel.add(Dropout(0.3))\n","execution_count":59,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"ff29d433ebeb479792f84928b227673f4f5392ec","_kg_hide-input":false},"cell_type":"code","source":"model.add(Conv2D(128,kernel_size=(3,3),strides=1,activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(128,kernel_size=(3,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization(axis = 3))\nmodel.add(MaxPooling2D(pool_size=(2,2),padding='same'))\nmodel.add(Dropout(0.5))","execution_count":60,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.add(Conv2D(256,kernel_size=(3,3),strides=1,activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(256,kernel_size=(3,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization(axis = 3))\nmodel.add(MaxPooling2D(pool_size=(2,2),padding='same'))\nmodel.add(Dropout(0.5))","execution_count":61,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.add(Conv2D(512,kernel_size=(3,3),strides=1,activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(512,kernel_size=(3,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization(axis = 3))\nmodel.add(MaxPooling2D(pool_size=(2,2),padding='same'))\nmodel.add(Dropout(0.5))","execution_count":62,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.add(Conv2D(1024,kernel_size=(3,3),strides=1,activation='relu',padding='same'))\nmodel.add(BatchNormalization())\nmodel.add(Conv2D(1024,kernel_size=(3,3),activation='relu',padding='same'))\nmodel.add(BatchNormalization(axis = 3))\nmodel.add(MaxPooling2D(pool_size=(2,2),padding='same'))\nmodel.add(Dropout(0.5))","execution_count":63,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a991b259860f104423db98da71ad7d92bbd33847"},"cell_type":"code","source":"model.add(Flatten())\nmodel.add(Dense(units = 512,activation='relu'))\nmodel.add(BatchNormalization())\nmodel.add(Dropout(0.5))\nmodel.add(Dense(units = 128,activation='relu'))\nmodel.add(Dropout(0.25))\nmodel.add(Dense(2,activation='softmax'))","execution_count":64,"outputs":[]},{"metadata":{"trusted":true,"scrolled":true,"_uuid":"077e4fe3c495caf6bd6959dfb2c0e1b7292b1c51"},"cell_type":"code","source":"model.summary()","execution_count":65,"outputs":[{"output_type":"stream","text":"_________________________________________________________________\nLayer (type)                 Output Shape              Param #   \n=================================================================\nconv2d_25 (Conv2D)           (None, 94, 94, 32)        320       \n_________________________________________________________________\nbatch_normalization_26 (Batc (None, 94, 94, 32)        128       \n_________________________________________________________________\nconv2d_26 (Conv2D)           (None, 94, 94, 32)        9248      \n_________________________________________________________________\nbatch_normalization_27 (Batc (None, 94, 94, 32)        128       \n_________________________________________________________________\nmax_pooling2d_13 (MaxPooling (None, 47, 47, 32)        0         \n_________________________________________________________________\ndropout_15 (Dropout)         (None, 47, 47, 32)        0         \n_________________________________________________________________\nconv2d_27 (Conv2D)           (None, 24, 24, 64)        18496     \n_________________________________________________________________\nbatch_normalization_28 (Batc (None, 24, 24, 64)        256       \n_________________________________________________________________\nconv2d_28 (Conv2D)           (None, 24, 24, 64)        36928     \n_________________________________________________________________\nbatch_normalization_29 (Batc (None, 24, 24, 64)        256       \n_________________________________________________________________\nmax_pooling2d_14 (MaxPooling (None, 12, 12, 64)        0         \n_________________________________________________________________\ndropout_16 (Dropout)         (None, 12, 12, 64)        0         \n_________________________________________________________________\nconv2d_29 (Conv2D)           (None, 12, 12, 128)       73856     \n_________________________________________________________________\nbatch_normalization_30 (Batc (None, 12, 12, 128)       512       \n_________________________________________________________________\nconv2d_30 (Conv2D)           (None, 12, 12, 128)       147584    \n_________________________________________________________________\nbatch_normalization_31 (Batc (None, 12, 12, 128)       512       \n_________________________________________________________________\nmax_pooling2d_15 (MaxPooling (None, 6, 6, 128)         0         \n_________________________________________________________________\ndropout_17 (Dropout)         (None, 6, 6, 128)         0         \n_________________________________________________________________\nconv2d_31 (Conv2D)           (None, 6, 6, 256)         295168    \n_________________________________________________________________\nbatch_normalization_32 (Batc (None, 6, 6, 256)         1024      \n_________________________________________________________________\nconv2d_32 (Conv2D)           (None, 6, 6, 256)         590080    \n_________________________________________________________________\nbatch_normalization_33 (Batc (None, 6, 6, 256)         1024      \n_________________________________________________________________\nmax_pooling2d_16 (MaxPooling (None, 3, 3, 256)         0         \n_________________________________________________________________\ndropout_18 (Dropout)         (None, 3, 3, 256)         0         \n_________________________________________________________________\nconv2d_33 (Conv2D)           (None, 3, 3, 512)         1180160   \n_________________________________________________________________\nbatch_normalization_34 (Batc (None, 3, 3, 512)         2048      \n_________________________________________________________________\nconv2d_34 (Conv2D)           (None, 3, 3, 512)         2359808   \n_________________________________________________________________\nbatch_normalization_35 (Batc (None, 3, 3, 512)         2048      \n_________________________________________________________________\nmax_pooling2d_17 (MaxPooling (None, 2, 2, 512)         0         \n_________________________________________________________________\ndropout_19 (Dropout)         (None, 2, 2, 512)         0         \n_________________________________________________________________\nconv2d_35 (Conv2D)           (None, 2, 2, 1024)        4719616   \n_________________________________________________________________\nbatch_normalization_36 (Batc (None, 2, 2, 1024)        4096      \n_________________________________________________________________\nconv2d_36 (Conv2D)           (None, 2, 2, 1024)        9438208   \n_________________________________________________________________\nbatch_normalization_37 (Batc (None, 2, 2, 1024)        4096      \n_________________________________________________________________\nmax_pooling2d_18 (MaxPooling (None, 1, 1, 1024)        0         \n_________________________________________________________________\ndropout_20 (Dropout)         (None, 1, 1, 1024)        0         \n_________________________________________________________________\nflatten_2 (Flatten)          (None, 1024)              0         \n_________________________________________________________________\ndense_4 (Dense)              (None, 512)               524800    \n_________________________________________________________________\nbatch_normalization_38 (Batc (None, 512)               2048      \n_________________________________________________________________\ndropout_21 (Dropout)         (None, 512)               0         \n_________________________________________________________________\ndense_5 (Dense)              (None, 128)               65664     \n_________________________________________________________________\ndropout_22 (Dropout)         (None, 128)               0         \n_________________________________________________________________\ndense_6 (Dense)              (None, 2)                 258       \n=================================================================\nTotal params: 19,478,370\nTrainable params: 19,469,282\nNon-trainable params: 9,088\n_________________________________________________________________\n","name":"stdout"}]},{"metadata":{"trusted":true,"_uuid":"d51fcf2950e39736ff6573a4d7222685ac963c4d"},"cell_type":"code","source":"model.compile(loss='categorical_crossentropy',metrics=['accuracy'],optimizer='adam')","execution_count":66,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4289cf083fd6c3b08624f51bf870562436ac0969"},"cell_type":"code","source":"callbacks = [EarlyStopping(monitor='val_acc',patience=5)]","execution_count":67,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f2b73ccd630565afbd5adb5b28c8f6111fe40dc6"},"cell_type":"code","source":"batch_size = 25\nn_epochs = 100\nresults = model.fit(x_train,Y_train,batch_size=batch_size,epochs=n_epochs,verbose=1,validation_data=(x_test,Y_test))","execution_count":70,"outputs":[{"output_type":"stream","text":"Train on 154017 samples, validate on 66008 samples\nEpoch 1/100\n154017/154017 [==============================] - 257s 2ms/step - loss: 0.2011 - acc: 0.9250 - val_loss: 0.2196 - val_acc: 0.9094\nEpoch 2/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1875 - acc: 0.9304 - val_loss: 0.2369 - val_acc: 0.9064\nEpoch 3/100\n154017/154017 [==============================] - 254s 2ms/step - loss: 0.1837 - acc: 0.9318 - val_loss: 0.2755 - val_acc: 0.8996\nEpoch 4/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1800 - acc: 0.9328 - val_loss: 0.1958 - val_acc: 0.9249\nEpoch 5/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1761 - acc: 0.9353 - val_loss: 0.1747 - val_acc: 0.9284\nEpoch 6/100\n154017/154017 [==============================] - 254s 2ms/step - loss: 0.1695 - acc: 0.9381 - val_loss: 0.1913 - val_acc: 0.9252\nEpoch 7/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1681 - acc: 0.9382 - val_loss: 0.1828 - val_acc: 0.9334\nEpoch 8/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1624 - acc: 0.9401 - val_loss: 0.4403 - val_acc: 0.8180\nEpoch 9/100\n154017/154017 [==============================] - 254s 2ms/step - loss: 0.1594 - acc: 0.9413 - val_loss: 0.2170 - val_acc: 0.9183\nEpoch 10/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1620 - acc: 0.9399 - val_loss: 0.2405 - val_acc: 0.9107\nEpoch 11/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1500 - acc: 0.9452 - val_loss: 0.1607 - val_acc: 0.9417\nEpoch 12/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1526 - acc: 0.9442 - val_loss: 0.1649 - val_acc: 0.9389\nEpoch 13/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1505 - acc: 0.9450 - val_loss: 0.2054 - val_acc: 0.9190\nEpoch 14/100\n154017/154017 [==============================] - 255s 2ms/step - loss: 0.1475 - acc: 0.9473 - val_loss: 0.2181 - val_acc: 0.9114\nEpoch 15/100\n 82875/154017 [===============>..............] - ETA: 1:47 - loss: 0.1466 - acc: 0.9464","name":"stdout"},{"output_type":"error","ename":"KeyboardInterrupt","evalue":"","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)","\u001b[0;32m<ipython-input-70-ac16288cbbc8>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0mbatch_size\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m25\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0mn_epochs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m100\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mresults\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_train\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mY_train\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbatch_size\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mn_epochs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mvalidation_data\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx_test\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mY_test\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, **kwargs)\u001b[0m\n\u001b[1;32m   1037\u001b[0m                                         \u001b[0minitial_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minitial_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1038\u001b[0m                                         \u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msteps_per_epoch\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1039\u001b[0;31m                                         validation_steps=validation_steps)\n\u001b[0m\u001b[1;32m   1040\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1041\u001b[0m     def evaluate(self, x=None, y=None,\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/keras/engine/training_arrays.py\u001b[0m in \u001b[0;36mfit_loop\u001b[0;34m(model, f, ins, out_labels, batch_size, epochs, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics, initial_epoch, steps_per_epoch, validation_steps)\u001b[0m\n\u001b[1;32m    197\u001b[0m                     \u001b[0mins_batch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mins_batch\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    198\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 199\u001b[0;31m                 \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mins_batch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    200\u001b[0m                 \u001b[0mouts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mto_list\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mouts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    201\u001b[0m                 \u001b[0;32mfor\u001b[0m \u001b[0ml\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mout_labels\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mouts\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m   2713\u001b[0m                 \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_legacy_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2714\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2715\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2716\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2717\u001b[0m             \u001b[0;32mif\u001b[0m \u001b[0mpy_any\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mis_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py\u001b[0m in \u001b[0;36m_call\u001b[0;34m(self, inputs)\u001b[0m\n\u001b[1;32m   2673\u001b[0m             \u001b[0mfetched\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_callable_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0marray_vals\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun_metadata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2674\u001b[0m         \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2675\u001b[0;31m             \u001b[0mfetched\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_callable_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0marray_vals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m   2676\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0mfetched\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   2677\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/opt/conda/lib/python3.6/site-packages/tensorflow/python/client/session.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1437\u001b[0m           ret = tf_session.TF_SessionRunCallable(\n\u001b[1;32m   1438\u001b[0m               \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_session\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_handle\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1439\u001b[0;31m               run_metadata_ptr)\n\u001b[0m\u001b[1;32m   1440\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mrun_metadata\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1441\u001b[0m           \u001b[0mproto_data\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtf_session\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTF_GetBuffer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrun_metadata_ptr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mKeyboardInterrupt\u001b[0m: "]}]},{"metadata":{"trusted":true,"_uuid":"b0d0c1078be91d54486e99b13bf5f80db0431a13"},"cell_type":"code","source":"model.save_weights('./cell_classification_lr_weights.h5', overwrite=True)","execution_count":77,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"4d3d7d28a3d46357daf6f1a37bd52e99e2787eb2"},"cell_type":"code","source":"model.save('./cell_classification_lr.h5')","execution_count":78,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b20be091aa8159998f17a74b03b52f05ab632545"},"cell_type":"code","source":"model = load_model('../working/cell_classification_lr.h5')","execution_count":73,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"b749fe26be6a45ca2df128f8a7e269654b1b233c"},"cell_type":"code","source":"test_data = np.array(testing_data[0][1]).reshape(-1,img_size2,img_size1,1)","execution_count":74,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f7352e4b9992d0149e20ecf3f4ba4797b0464b1d"},"cell_type":"code","source":"preds = model.predict(test_data)","execution_count":75,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"preds","execution_count":76,"outputs":[{"output_type":"execute_result","execution_count":76,"data":{"text/plain":"array([[0.96848035, 0.03151963]], dtype=float32)"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}