{"cells":[{"metadata":{},"cell_type":"markdown","source":"## Load modules"},{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"%matplotlib inline\nimport os\nimport glob\nimport numpy as np \nimport matplotlib.pyplot as plt\n\nimport pydicom as dicom\nimport nibabel as nib","execution_count":1,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"### Set path"},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"train_image_folder = \"../input/train-images/image/\"\ntrain_label_folder = \"../input/train-labels/label/\"\n\nsample_list = os.listdir(train_image_folder)[: 10]","execution_count":2,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample_list","execution_count":3,"outputs":[{"output_type":"execute_result","execution_count":3,"data":{"text/plain":"['mfms4vpcpzpmtff0f806l0m8llrh56tg',\n 'hmvsa0loxh3ek2y8rzmcyb6zrrh9mwyp',\n 'j195u4tvcp7282km7sdq8rjailjeiwt0',\n 'yr8uhc0tdp01x3yh4y6f7diofbp3i5rb',\n 'mb2eh536dir6krz3fyrdmhwrzk9ddbta']"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"def load_dicom_volume(src_dir, suffix='*.dcm'):\n    \"\"\"Load DICOM volume and get meta data.\n    \"\"\"\n\n    # Read dicom files from the source directory\n    # Sort the dicom slices in their respective order by slice location\n    dicom_scans = [dicom.read_file(sp) \\\n                   for sp in glob.glob(os.path.join(src_dir, suffix))]\n    # dicom_scans.sort(key=lambda s: float(s.SliceLocation))\n    dicom_scans.sort(key=lambda s: float(s[(0x0020, 0x0032)][2]))\n\n    # Convert to int16, should be possible as values should always be low enough\n    # Volume image is in z, y, x order\n    volume_image = np.stack([ds.pixel_array \\\n                             for ds in dicom_scans]).astype(np.int16)\n\n    # Get data info\n    # spacing = list(dicom_scans[0].PixelSpacing) + [dicom_scans[0].SliceThickness]\n    # spacing = list(map(float, spacing))\n    # patient_position = list(map(float, dicom_scans[0].ImagePositionPatient))\n    # info_dict = {\"PatientPosition\" : patient_position, 'Spacing': spacing}\n    \n    return volume_image\n\ndef load_label(label_fpath):\n    label_data = nib.load(label_fpath)\n    label_array = label_data.get_fdata()\n    return np.transpose(label_array, axes=(2, 1, 0))","execution_count":4,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"volume_image = load_dicom_volume(os.path.join(train_image_folder, sample_list[0]))\nlabel_array = load_label(os.path.join(train_label_folder, sample_list[0] + '.nii.gz'))","execution_count":5,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"_slice = 66\n\nplt.imshow(volume_image[_slice, :, :], cmap='gray')\nplt.show()\nplt.imshow(label_array[_slice, :, :], cmap='gray')\nplt.show()","execution_count":6,"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}},{"output_type":"display_data","data":{"text/plain":"<Figure size 432x288 with 1 Axes>","image/png":"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\n"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"volume_image_list = [load_dicom_volume(os.path.join(train_image_folder, sample_name)) for sample_name in sample_list]\nlabel_array_list = [load_label(os.path.join(train_label_folder, sample_name + '.nii.gz')) for sample_name in sample_list]","execution_count":7,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_image = np.vstack([volume_image for volume_image in volume_image_list]).astype(np.float)\ntrain_image = train_image.reshape(train_image.shape + (1,))\n\ntrain_label = np.vstack([label_array for label_array in label_array_list]).astype(np.float)\ntrain_label = train_label.reshape(train_label.shape + (1,))\ntrain_label = train_label[: train_image.shape[0]]","execution_count":8,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"markdown","source":"## Try to apply UNet "},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.models import Model\nfrom keras import layers as klayers\nfrom keras.optimizers import Adam\nfrom keras import backend as K\n\n# Make sure keras running on GPU\nK.tensorflow_backend._get_available_gpus()","execution_count":9,"outputs":[{"output_type":"stream","text":"Using TensorFlow backend.\n","name":"stderr"},{"output_type":"execute_result","execution_count":9,"data":{"text/plain":"['/job:localhost/replica:0/task:0/device:GPU:0']"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"### Check GPU"},{"metadata":{"trusted":true},"cell_type":"code","source":"from tensorflow.python.client import device_lib\ndevice_lib.list_local_devices()","execution_count":10,"outputs":[{"output_type":"execute_result","execution_count":10,"data":{"text/plain":"[name: \"/device:CPU:0\"\n device_type: \"CPU\"\n memory_limit: 268435456\n locality {\n }\n incarnation: 3351392130992565083, name: \"/device:XLA_CPU:0\"\n device_type: \"XLA_CPU\"\n memory_limit: 17179869184\n locality {\n }\n incarnation: 6246669848906055486\n physical_device_desc: \"device: XLA_CPU device\", name: \"/device:XLA_GPU:0\"\n device_type: \"XLA_GPU\"\n memory_limit: 17179869184\n locality {\n }\n incarnation: 3271084349161025598\n physical_device_desc: \"device: XLA_GPU device\", name: \"/device:GPU:0\"\n device_type: \"GPU\"\n memory_limit: 15856546612\n locality {\n   bus_id: 1\n   links {\n   }\n }\n incarnation: 4378265818577717484\n physical_device_desc: \"device: 0, name: Tesla P100-PCIE-16GB, pci bus id: 0000:00:04.0, compute capability: 6.0\"]"},"metadata":{}}]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Loss function"},{"metadata":{"trusted":true},"cell_type":"code","source":"def dice_coefficient(y_true, y_pred, smooth=1.0):\n    y_true_f = K.flatten(y_true)\n    y_pred_f = K.flatten(y_pred)\n    intersection = K.sum(y_true_f * y_pred_f)\n    return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)\n\n\ndef dice_coefficient_loss(y_true, y_pred):\n    return 1 - dice_coefficient(y_true, y_pred)","execution_count":11,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## Model architecture"},{"metadata":{"trusted":true},"cell_type":"code","source":"def unet(pretrained_weights=None, input_size=[512, 512, 1], depth=3, init_filter=8, \n         filter_size=3, padding='same', pool_size=[2, 2], strides=[2, 2]):\n    \n    inputs = klayers.Input(input_size)\n    \n    current_layer = inputs\n    encoding_layers = []\n    \n    # Encoder path\n    for d in range(depth + 1):\n        num_filters = init_filter * 2 ** d\n        \n        conv = klayers.Conv2D(num_filters, filter_size, padding=padding, kernel_initializer='he_normal')(current_layer)\n        conv = klayers.BatchNormalization()(conv)\n        conv = klayers.Activation('relu')(conv)\n        conv = klayers.Conv2D(num_filters * 2, filter_size, padding=padding, kernel_initializer='he_normal')(conv)\n        conv = klayers.BatchNormalization()(conv)\n        conv = klayers.Activation('relu')(conv)\n        encoding_layers.append(conv)\n    \n        pool = klayers.MaxPooling2D(pool_size=pool_size)(conv)\n        \n        if d == depth:\n            # Bridge\n            current_layer = conv\n        else:\n            current_layer = pool\n\n        \n    # Decoder path\n    for d in range(depth, 0, -1):\n        num_filters = init_filter * 2 ** d\n        up = klayers.Deconvolution2D(num_filters * 2, pool_size, strides=strides)(current_layer)\n\n        crop_layer = encoding_layers[d - 1]\n        # Calculate two layers shape\n        up_shape = np.array(up._keras_shape[1:-1])\n        conv_shape = np.array(crop_layer._keras_shape[1:-1])\n\n        # Calculate crop size of left and right\n        crop_left = (conv_shape - up_shape) // 2\n\n        crop_right = (conv_shape - up_shape) // 2 + (conv_shape - up_shape) % 2\n        crop_sizes = tuple(zip(crop_left, crop_right))\n\n        crop = klayers.Cropping2D(cropping=crop_sizes)(crop_layer)\n\n        # Concatenate\n        up = klayers.Concatenate(axis=-1)([crop, up])\n        conv = klayers.Conv2D(num_filters, filter_size, padding=padding, kernel_initializer='he_normal')(up)\n        conv = klayers.BatchNormalization()(conv)\n        conv = klayers.Activation('relu')(conv)\n        conv = klayers.Conv2D(num_filters, filter_size, padding=padding, kernel_initializer='he_normal')(conv)\n        conv = klayers.BatchNormalization()(conv)\n        conv = klayers.Activation('relu')(conv)\n        \n        current_layer = conv\n    \n    \n    outputs = klayers.Conv2D(1, 1, padding=padding, kernel_initializer='he_normal')(current_layer)\n    outputs = klayers.Activation('sigmoid')(outputs)\n    model = Model(inputs=inputs, outputs=outputs)\n\n    if(pretrained_weights):\n        model.load_weights(pretrained_weights)\n\n    return model","execution_count":12,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = unet(depth=3)\nmodel.compile(optimizer=Adam(lr=1e-4), loss=dice_coefficient_loss, metrics=[dice_coefficient, 'accuracy'])\nprint(model.summary())","execution_count":13,"outputs":[{"output_type":"stream","text":"WARNING:tensorflow:From /opt/conda/lib/python3.6/site-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.\nInstructions for updating:\nColocations handled automatically by placer.\n__________________________________________________________________________________________________\nLayer (type)                    Output Shape         Param #     Connected to                     \n==================================================================================================\ninput_1 (InputLayer)            (None, 512, 512, 1)  0                                            \n__________________________________________________________________________________________________\nconv2d_1 (Conv2D)               (None, 512, 512, 8)  80          input_1[0][0]                    \n__________________________________________________________________________________________________\nbatch_normalization_1 (BatchNor (None, 512, 512, 8)  32          conv2d_1[0][0]                   \n__________________________________________________________________________________________________\nactivation_1 (Activation)       (None, 512, 512, 8)  0           batch_normalization_1[0][0]      \n__________________________________________________________________________________________________\nconv2d_2 (Conv2D)               (None, 512, 512, 16) 1168        activation_1[0][0]               \n__________________________________________________________________________________________________\nbatch_normalization_2 (BatchNor (None, 512, 512, 16) 64          conv2d_2[0][0]                   \n__________________________________________________________________________________________________\nactivation_2 (Activation)       (None, 512, 512, 16) 0           batch_normalization_2[0][0]      \n__________________________________________________________________________________________________\nmax_pooling2d_1 (MaxPooling2D)  (None, 256, 256, 16) 0           activation_2[0][0]               \n__________________________________________________________________________________________________\nconv2d_3 (Conv2D)               (None, 256, 256, 16) 2320        max_pooling2d_1[0][0]            \n__________________________________________________________________________________________________\nbatch_normalization_3 (BatchNor (None, 256, 256, 16) 64          conv2d_3[0][0]                   \n__________________________________________________________________________________________________\nactivation_3 (Activation)       (None, 256, 256, 16) 0           batch_normalization_3[0][0]      \n__________________________________________________________________________________________________\nconv2d_4 (Conv2D)               (None, 256, 256, 32) 4640        activation_3[0][0]               \n__________________________________________________________________________________________________\nbatch_normalization_4 (BatchNor (None, 256, 256, 32) 128         conv2d_4[0][0]                   \n__________________________________________________________________________________________________\nactivation_4 (Activation)       (None, 256, 256, 32) 0           batch_normalization_4[0][0]      \n__________________________________________________________________________________________________\nmax_pooling2d_2 (MaxPooling2D)  (None, 128, 128, 32) 0           activation_4[0][0]               \n__________________________________________________________________________________________________\nconv2d_5 (Conv2D)               (None, 128, 128, 32) 9248        max_pooling2d_2[0][0]            \n__________________________________________________________________________________________________\nbatch_normalization_5 (BatchNor (None, 128, 128, 32) 128         conv2d_5[0][0]                   \n__________________________________________________________________________________________________\nactivation_5 (Activation)       (None, 128, 128, 32) 0           batch_normalization_5[0][0]      \n__________________________________________________________________________________________________\nconv2d_6 (Conv2D)               (None, 128, 128, 64) 18496       activation_5[0][0]               \n__________________________________________________________________________________________________\nbatch_normalization_6 (BatchNor (None, 128, 128, 64) 256         conv2d_6[0][0]                   \n__________________________________________________________________________________________________\nactivation_6 (Activation)       (None, 128, 128, 64) 0           batch_normalization_6[0][0]      \n__________________________________________________________________________________________________\nmax_pooling2d_3 (MaxPooling2D)  (None, 64, 64, 64)   0           activation_6[0][0]               \n__________________________________________________________________________________________________\nconv2d_7 (Conv2D)               (None, 64, 64, 64)   36928       max_pooling2d_3[0][0]            \n__________________________________________________________________________________________________\nbatch_normalization_7 (BatchNor (None, 64, 64, 64)   256         conv2d_7[0][0]                   \n__________________________________________________________________________________________________\nactivation_7 (Activation)       (None, 64, 64, 64)   0           batch_normalization_7[0][0]      \n__________________________________________________________________________________________________\nconv2d_8 (Conv2D)               (None, 64, 64, 128)  73856       activation_7[0][0]               \n__________________________________________________________________________________________________\nbatch_normalization_8 (BatchNor (None, 64, 64, 128)  512         conv2d_8[0][0]                   \n__________________________________________________________________________________________________\nactivation_8 (Activation)       (None, 64, 64, 128)  0           batch_normalization_8[0][0]      \n__________________________________________________________________________________________________\ncropping2d_1 (Cropping2D)       (None, 128, 128, 64) 0           activation_6[0][0]               \n__________________________________________________________________________________________________\nconv2d_transpose_1 (Conv2DTrans (None, 128, 128, 128 65664       activation_8[0][0]               \n__________________________________________________________________________________________________\nconcatenate_1 (Concatenate)     (None, 128, 128, 192 0           cropping2d_1[0][0]               \n                                                                 conv2d_transpose_1[0][0]         \n__________________________________________________________________________________________________\nconv2d_9 (Conv2D)               (None, 128, 128, 64) 110656      concatenate_1[0][0]              \n__________________________________________________________________________________________________\nbatch_normalization_9 (BatchNor (None, 128, 128, 64) 256         conv2d_9[0][0]                   \n__________________________________________________________________________________________________\nactivation_9 (Activation)       (None, 128, 128, 64) 0           batch_normalization_9[0][0]      \n__________________________________________________________________________________________________\nconv2d_10 (Conv2D)              (None, 128, 128, 64) 36928       activation_9[0][0]               \n__________________________________________________________________________________________________\nbatch_normalization_10 (BatchNo (None, 128, 128, 64) 256         conv2d_10[0][0]                  \n__________________________________________________________________________________________________\nactivation_10 (Activation)      (None, 128, 128, 64) 0           batch_normalization_10[0][0]     \n__________________________________________________________________________________________________\ncropping2d_2 (Cropping2D)       (None, 256, 256, 32) 0           activation_4[0][0]               \n__________________________________________________________________________________________________\nconv2d_transpose_2 (Conv2DTrans (None, 256, 256, 64) 16448       activation_10[0][0]              \n__________________________________________________________________________________________________\nconcatenate_2 (Concatenate)     (None, 256, 256, 96) 0           cropping2d_2[0][0]               \n                                                                 conv2d_transpose_2[0][0]         \n__________________________________________________________________________________________________\nconv2d_11 (Conv2D)              (None, 256, 256, 32) 27680       concatenate_2[0][0]              \n__________________________________________________________________________________________________\nbatch_normalization_11 (BatchNo (None, 256, 256, 32) 128         conv2d_11[0][0]                  \n__________________________________________________________________________________________________\nactivation_11 (Activation)      (None, 256, 256, 32) 0           batch_normalization_11[0][0]     \n__________________________________________________________________________________________________\nconv2d_12 (Conv2D)              (None, 256, 256, 32) 9248        activation_11[0][0]              \n__________________________________________________________________________________________________\nbatch_normalization_12 (BatchNo (None, 256, 256, 32) 128         conv2d_12[0][0]                  \n__________________________________________________________________________________________________\nactivation_12 (Activation)      (None, 256, 256, 32) 0           batch_normalization_12[0][0]     \n__________________________________________________________________________________________________\ncropping2d_3 (Cropping2D)       (None, 512, 512, 16) 0           activation_2[0][0]               \n__________________________________________________________________________________________________\nconv2d_transpose_3 (Conv2DTrans (None, 512, 512, 32) 4128        activation_12[0][0]              \n__________________________________________________________________________________________________\nconcatenate_3 (Concatenate)     (None, 512, 512, 48) 0           cropping2d_3[0][0]               \n                                                                 conv2d_transpose_3[0][0]         \n__________________________________________________________________________________________________\nconv2d_13 (Conv2D)              (None, 512, 512, 16) 6928        concatenate_3[0][0]              \n__________________________________________________________________________________________________\nbatch_normalization_13 (BatchNo (None, 512, 512, 16) 64          conv2d_13[0][0]                  \n__________________________________________________________________________________________________\nactivation_13 (Activation)      (None, 512, 512, 16) 0           batch_normalization_13[0][0]     \n__________________________________________________________________________________________________\nconv2d_14 (Conv2D)              (None, 512, 512, 16) 2320        activation_13[0][0]              \n__________________________________________________________________________________________________\nbatch_normalization_14 (BatchNo (None, 512, 512, 16) 64          conv2d_14[0][0]                  \n__________________________________________________________________________________________________\nactivation_14 (Activation)      (None, 512, 512, 16) 0           batch_normalization_14[0][0]     \n__________________________________________________________________________________________________\nconv2d_15 (Conv2D)              (None, 512, 512, 1)  17          activation_14[0][0]              \n__________________________________________________________________________________________________\nactivation_15 (Activation)      (None, 512, 512, 1)  0           conv2d_15[0][0]                  \n==================================================================================================\nTotal params: 429,089\nTrainable params: 427,921\nNon-trainable params: 1,168\n__________________________________________________________________________________________________\nNone\n","name":"stdout"}]},{"metadata":{"trusted":true},"cell_type":"code","source":"history = model.fit(train_image, train_label,\n                    batch_size=4,\n                    epochs=5,\n                    verbose=1,\n                    validation_split=0.1)","execution_count":14,"outputs":[{"output_type":"stream","text":"Train on 625 samples, validate on 70 samples\nEpoch 1/50\n625/625 [==============================] - 29s 47ms/step - loss: 0.9982 - dice_coefficient: 0.0018 - acc: 0.5680 - val_loss: 0.9977 - val_dice_coefficient: 0.0023 - val_acc: 0.7621\nEpoch 2/50\n625/625 [==============================] - 21s 33ms/step - loss: 0.9973 - dice_coefficient: 0.0027 - acc: 0.8713 - val_loss: 0.9968 - val_dice_coefficient: 0.0032 - val_acc: 0.9287\nEpoch 3/50\n252/625 [===========>..................] - ETA: 11s - loss: 0.9972 - dice_coefficient: 0.0028 - acc: 0.9417","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-14-4e478120b176>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      3\u001b[0m                     \u001b[0mepochs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m50\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      4\u001b[0m                     \u001b[0mverbose\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m                     validation_split=0.1)\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},"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.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}