Spaces:
Sleeping
Sleeping
Upload 16 files
Browse files- Cancer detection using cnn.ipynb +0 -0
- Final cancer detection using cnn.ipynb +554 -0
- Final resnet50.ipynb +1060 -0
- VGG 16.ipynb +1219 -0
- Xception.ipynb +0 -0
- bottleneck_fc_model.h5 +3 -0
- bottleneck_features_trains.npy +3 -0
- bottleneck_features_validations.npy +3 -0
- can.png +0 -0
- cancer detection new.ipynb +1404 -0
- cancer detection using transfer learning.ipynb +0 -0
- main.py +15 -0
- minor.docx +0 -0
- model.h5 +3 -0
- nonc.png +0 -0
Cancer detection using cnn.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
Final cancer detection using cnn.ipynb
ADDED
|
@@ -0,0 +1,554 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": 36,
|
| 6 |
+
"metadata": {},
|
| 7 |
+
"outputs": [
|
| 8 |
+
{
|
| 9 |
+
"data": {
|
| 10 |
+
"text/plain": [
|
| 11 |
+
"(1, 50, 50, 3)"
|
| 12 |
+
]
|
| 13 |
+
},
|
| 14 |
+
"execution_count": 36,
|
| 15 |
+
"metadata": {},
|
| 16 |
+
"output_type": "execute_result"
|
| 17 |
+
}
|
| 18 |
+
],
|
| 19 |
+
"source": [
|
| 20 |
+
"from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img\n",
|
| 21 |
+
"\n",
|
| 22 |
+
"datagen = ImageDataGenerator(\n",
|
| 23 |
+
" rotation_range=40,\n",
|
| 24 |
+
" width_shift_range=0.2,\n",
|
| 25 |
+
" height_shift_range=0.2,\n",
|
| 26 |
+
" shear_range=0.2,\n",
|
| 27 |
+
" zoom_range=0.2,\n",
|
| 28 |
+
" horizontal_flip=True,\n",
|
| 29 |
+
" fill_mode='nearest')\n",
|
| 30 |
+
"img = load_img('./breast-histopathology-images/8867/cancer/8867_idx5_x451_y851_class1.png') # this is a PIL image\n",
|
| 31 |
+
"x = img_to_array(img) # this is a Numpy array with shape (300, 300, 3)\n",
|
| 32 |
+
"x = x.reshape((1,) + x.shape) # this is a Numpy array with shape (1, 300, 300, 3)\n",
|
| 33 |
+
"x.shape\n",
|
| 34 |
+
"\n",
|
| 35 |
+
"# the .flow() command below generates batches of randomly transformed images\n",
|
| 36 |
+
"# and saves the results to the `preview/` directory\n"
|
| 37 |
+
]
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"cell_type": "code",
|
| 41 |
+
"execution_count": 37,
|
| 42 |
+
"metadata": {},
|
| 43 |
+
"outputs": [],
|
| 44 |
+
"source": [
|
| 45 |
+
"from keras.models import Sequential\n",
|
| 46 |
+
"from keras.layers import Conv2D, MaxPooling2D\n",
|
| 47 |
+
"from keras.layers import Activation, Dropout, Flatten, Dense\n",
|
| 48 |
+
"\n",
|
| 49 |
+
"model = Sequential()\n",
|
| 50 |
+
"model.add(Conv2D(32, (3, 3), input_shape=(300, 300, 3)))\n",
|
| 51 |
+
"model.add(Activation('relu'))\n",
|
| 52 |
+
"model.add(MaxPooling2D(pool_size=(2, 2)))\n",
|
| 53 |
+
"\n",
|
| 54 |
+
"model.add(Conv2D(32, (3, 3)))\n",
|
| 55 |
+
"model.add(Activation('relu'))\n",
|
| 56 |
+
"model.add(MaxPooling2D(pool_size=(2, 2)))\n",
|
| 57 |
+
"\n",
|
| 58 |
+
"model.add(Conv2D(64, (3, 3)))\n",
|
| 59 |
+
"model.add(Activation('relu'))\n",
|
| 60 |
+
"model.add(MaxPooling2D(pool_size=(2, 2)))\n",
|
| 61 |
+
"\n",
|
| 62 |
+
"# the model so far outputs 3D feature maps (height, width, features)\n",
|
| 63 |
+
"\n",
|
| 64 |
+
"model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors\n",
|
| 65 |
+
"model.add(Dense(64))\n",
|
| 66 |
+
"model.add(Activation('relu'))\n",
|
| 67 |
+
"model.add(Dropout(0.5))\n",
|
| 68 |
+
"model.add(Dense(1))\n",
|
| 69 |
+
"model.add(Activation('sigmoid'))\n",
|
| 70 |
+
"# COMPILE\n",
|
| 71 |
+
"model.compile(loss='binary_crossentropy',\n",
|
| 72 |
+
" optimizer='rmsprop',\n",
|
| 73 |
+
" metrics=['accuracy'])"
|
| 74 |
+
]
|
| 75 |
+
},
|
| 76 |
+
{
|
| 77 |
+
"cell_type": "code",
|
| 78 |
+
"execution_count": 38,
|
| 79 |
+
"metadata": {},
|
| 80 |
+
"outputs": [
|
| 81 |
+
{
|
| 82 |
+
"name": "stdout",
|
| 83 |
+
"output_type": "stream",
|
| 84 |
+
"text": [
|
| 85 |
+
"Found 324 images belonging to 2 classes.\n",
|
| 86 |
+
"Found 150 images belonging to 2 classes.\n"
|
| 87 |
+
]
|
| 88 |
+
}
|
| 89 |
+
],
|
| 90 |
+
"source": [
|
| 91 |
+
"batch_size = 16\n",
|
| 92 |
+
"\n",
|
| 93 |
+
"# this is the augmentation configuration we will use for training\n",
|
| 94 |
+
"train_datagen = ImageDataGenerator(\n",
|
| 95 |
+
" rescale=1./255,\n",
|
| 96 |
+
" shear_range=0.2,\n",
|
| 97 |
+
" zoom_range=0.2,\n",
|
| 98 |
+
" horizontal_flip=True)\n",
|
| 99 |
+
"\n",
|
| 100 |
+
"# this is the augmentation configuration we will use for testing:\n",
|
| 101 |
+
"# only rescaling\n",
|
| 102 |
+
"test_datagen = ImageDataGenerator(rescale=1./255)\n",
|
| 103 |
+
"\n",
|
| 104 |
+
"# this is a generator that will read pictures found in subfolers of 'data/train', and indefinitely generate\n",
|
| 105 |
+
"# batches of augmented image data\n",
|
| 106 |
+
"train_generator = train_datagen.flow_from_directory(\n",
|
| 107 |
+
" './breast-histopathology-images/8867/', # this is the target directory\n",
|
| 108 |
+
" target_size=(300, 300), # all images will be resized to 300x300\n",
|
| 109 |
+
" batch_size=batch_size,\n",
|
| 110 |
+
" class_mode='binary') # since we use binary_crossentropy loss, we need binary labels\n",
|
| 111 |
+
"\n",
|
| 112 |
+
"# this is a similar generator, for validation data\n",
|
| 113 |
+
"validation_generator = test_datagen.flow_from_directory(\n",
|
| 114 |
+
" './breast-histopathology-images/8914/',\n",
|
| 115 |
+
" target_size=(300, 300),\n",
|
| 116 |
+
" batch_size=batch_size,\n",
|
| 117 |
+
" class_mode='binary')"
|
| 118 |
+
]
|
| 119 |
+
},
|
| 120 |
+
{
|
| 121 |
+
"cell_type": "code",
|
| 122 |
+
"execution_count": 39,
|
| 123 |
+
"metadata": {},
|
| 124 |
+
"outputs": [
|
| 125 |
+
{
|
| 126 |
+
"name": "stdout",
|
| 127 |
+
"output_type": "stream",
|
| 128 |
+
"text": [
|
| 129 |
+
"Epoch 1/10\n",
|
| 130 |
+
"50/50 [==============================] - 33s 658ms/step - loss: 0.9435 - accuracy: 0.5554 - val_loss: 0.9200 - val_accuracy: 0.5000\n",
|
| 131 |
+
"Epoch 2/10\n",
|
| 132 |
+
"50/50 [==============================] - 28s 567ms/step - loss: 0.7255 - accuracy: 0.6165 - val_loss: 0.3352 - val_accuracy: 0.7800\n",
|
| 133 |
+
"Epoch 3/10\n",
|
| 134 |
+
"50/50 [==============================] - 29s 580ms/step - loss: 0.6499 - accuracy: 0.7343 - val_loss: 0.6659 - val_accuracy: 0.8467\n",
|
| 135 |
+
"Epoch 4/10\n",
|
| 136 |
+
"50/50 [==============================] - 29s 580ms/step - loss: 0.4055 - accuracy: 0.8647 - val_loss: 0.4627 - val_accuracy: 0.6733\n",
|
| 137 |
+
"Epoch 5/10\n",
|
| 138 |
+
"50/50 [==============================] - 29s 580ms/step - loss: 0.5732 - accuracy: 0.8544 - val_loss: 0.3741 - val_accuracy: 0.8600\n",
|
| 139 |
+
"Epoch 6/10\n",
|
| 140 |
+
"50/50 [==============================] - 29s 588ms/step - loss: 0.3830 - accuracy: 0.8992 - val_loss: 0.9654 - val_accuracy: 0.8533\n",
|
| 141 |
+
"Epoch 7/10\n",
|
| 142 |
+
"50/50 [==============================] - 29s 580ms/step - loss: 0.4289 - accuracy: 0.9227 - val_loss: 0.3504 - val_accuracy: 0.6600\n",
|
| 143 |
+
"Epoch 8/10\n",
|
| 144 |
+
"50/50 [==============================] - 29s 580ms/step - loss: 0.2207 - accuracy: 0.9317 - val_loss: 0.6380 - val_accuracy: 0.8467\n",
|
| 145 |
+
"Epoch 9/10\n",
|
| 146 |
+
"50/50 [==============================] - 29s 581ms/step - loss: 0.2558 - accuracy: 0.9214 - val_loss: 0.2585 - val_accuracy: 0.8267\n",
|
| 147 |
+
"Epoch 10/10\n",
|
| 148 |
+
"50/50 [==============================] - 29s 579ms/step - loss: 0.2553 - accuracy: 0.9332 - val_loss: 0.1356 - val_accuracy: 0.8400\n"
|
| 149 |
+
]
|
| 150 |
+
}
|
| 151 |
+
],
|
| 152 |
+
"source": [
|
| 153 |
+
"# TRAINING\n",
|
| 154 |
+
"hist = model.fit_generator(\n",
|
| 155 |
+
" train_generator,\n",
|
| 156 |
+
" steps_per_epoch=800 // batch_size,\n",
|
| 157 |
+
" epochs=10,\n",
|
| 158 |
+
" validation_data=validation_generator,\n",
|
| 159 |
+
" validation_steps=160 // batch_size)\n",
|
| 160 |
+
"\n",
|
| 161 |
+
"model.save_weights('50_epochs.h5') # always save your weights after training or during training"
|
| 162 |
+
]
|
| 163 |
+
},
|
| 164 |
+
{
|
| 165 |
+
"cell_type": "code",
|
| 166 |
+
"execution_count": 40,
|
| 167 |
+
"metadata": {},
|
| 168 |
+
"outputs": [],
|
| 169 |
+
"source": [
|
| 170 |
+
"import matplotlib.pyplot as plt\n",
|
| 171 |
+
"acc = hist.history['accuracy']\n",
|
| 172 |
+
"val_acc = hist.history['val_accuracy']\n",
|
| 173 |
+
"loss = hist.history['loss']\n",
|
| 174 |
+
"val_loss = hist.history['val_loss']"
|
| 175 |
+
]
|
| 176 |
+
},
|
| 177 |
+
{
|
| 178 |
+
"cell_type": "code",
|
| 179 |
+
"execution_count": 41,
|
| 180 |
+
"metadata": {},
|
| 181 |
+
"outputs": [
|
| 182 |
+
{
|
| 183 |
+
"data": {
|
| 184 |
+
"image/png": "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\n",
|
| 185 |
+
"text/plain": [
|
| 186 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 187 |
+
]
|
| 188 |
+
},
|
| 189 |
+
"metadata": {
|
| 190 |
+
"needs_background": "light"
|
| 191 |
+
},
|
| 192 |
+
"output_type": "display_data"
|
| 193 |
+
}
|
| 194 |
+
],
|
| 195 |
+
"source": [
|
| 196 |
+
"plt.plot(acc,label='accuracy')\n",
|
| 197 |
+
"plt.plot(val_acc,label='val_acc')\n",
|
| 198 |
+
"plt.legend()\n",
|
| 199 |
+
"plt.show()"
|
| 200 |
+
]
|
| 201 |
+
},
|
| 202 |
+
{
|
| 203 |
+
"cell_type": "code",
|
| 204 |
+
"execution_count": 42,
|
| 205 |
+
"metadata": {},
|
| 206 |
+
"outputs": [
|
| 207 |
+
{
|
| 208 |
+
"data": {
|
| 209 |
+
"image/png": "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\n",
|
| 210 |
+
"text/plain": [
|
| 211 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 212 |
+
]
|
| 213 |
+
},
|
| 214 |
+
"metadata": {
|
| 215 |
+
"needs_background": "light"
|
| 216 |
+
},
|
| 217 |
+
"output_type": "display_data"
|
| 218 |
+
}
|
| 219 |
+
],
|
| 220 |
+
"source": [
|
| 221 |
+
"plt.plot(loss,label='loss')\n",
|
| 222 |
+
"plt.plot(val_loss,label= 'val_loss')\n",
|
| 223 |
+
"plt.legend()\n",
|
| 224 |
+
"plt.show()"
|
| 225 |
+
]
|
| 226 |
+
},
|
| 227 |
+
{
|
| 228 |
+
"cell_type": "code",
|
| 229 |
+
"execution_count": 43,
|
| 230 |
+
"metadata": {},
|
| 231 |
+
"outputs": [
|
| 232 |
+
{
|
| 233 |
+
"name": "stdout",
|
| 234 |
+
"output_type": "stream",
|
| 235 |
+
"text": [
|
| 236 |
+
"cancer\n"
|
| 237 |
+
]
|
| 238 |
+
}
|
| 239 |
+
],
|
| 240 |
+
"source": [
|
| 241 |
+
"from keras.preprocessing import image\n",
|
| 242 |
+
"import numpy as np\n",
|
| 243 |
+
"test_image = \\\n",
|
| 244 |
+
" image.load_img('./test/8864_idx5_x1801_y2451_class1.png',\n",
|
| 245 |
+
" target_size=(300,300))\n",
|
| 246 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 247 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 248 |
+
"result = model.predict(test_image)\n",
|
| 249 |
+
"train_generator.class_indices\n",
|
| 250 |
+
"if result[0][0] == 1:\n",
|
| 251 |
+
" print('noncancer')\n",
|
| 252 |
+
"else:\n",
|
| 253 |
+
" print('cancer')"
|
| 254 |
+
]
|
| 255 |
+
},
|
| 256 |
+
{
|
| 257 |
+
"cell_type": "code",
|
| 258 |
+
"execution_count": 44,
|
| 259 |
+
"metadata": {},
|
| 260 |
+
"outputs": [
|
| 261 |
+
{
|
| 262 |
+
"name": "stdout",
|
| 263 |
+
"output_type": "stream",
|
| 264 |
+
"text": [
|
| 265 |
+
"cancer\n"
|
| 266 |
+
]
|
| 267 |
+
}
|
| 268 |
+
],
|
| 269 |
+
"source": [
|
| 270 |
+
"test_image = \\\n",
|
| 271 |
+
" image.load_img('./test/8864_idx5_x201_y2301_class0.png',\n",
|
| 272 |
+
" target_size=(300,300))\n",
|
| 273 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 274 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 275 |
+
"result = model.predict(test_image)\n",
|
| 276 |
+
"train_generator.class_indices\n",
|
| 277 |
+
"if result[0][0] == 1:\n",
|
| 278 |
+
" print('noncancer')\n",
|
| 279 |
+
"else:\n",
|
| 280 |
+
" print('cancer')"
|
| 281 |
+
]
|
| 282 |
+
},
|
| 283 |
+
{
|
| 284 |
+
"cell_type": "code",
|
| 285 |
+
"execution_count": 45,
|
| 286 |
+
"metadata": {},
|
| 287 |
+
"outputs": [
|
| 288 |
+
{
|
| 289 |
+
"name": "stdout",
|
| 290 |
+
"output_type": "stream",
|
| 291 |
+
"text": [
|
| 292 |
+
"noncancer\n"
|
| 293 |
+
]
|
| 294 |
+
}
|
| 295 |
+
],
|
| 296 |
+
"source": [
|
| 297 |
+
"test_image = \\\n",
|
| 298 |
+
" image.load_img('./test/8864_idx5_x51_y2201_class0.png',\n",
|
| 299 |
+
" target_size=(300,300))\n",
|
| 300 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 301 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 302 |
+
"result = model.predict(test_image)\n",
|
| 303 |
+
"train_generator.class_indices\n",
|
| 304 |
+
"if result[0][0] == 1:\n",
|
| 305 |
+
" print('noncancer')\n",
|
| 306 |
+
"else:\n",
|
| 307 |
+
" print('cancer')"
|
| 308 |
+
]
|
| 309 |
+
},
|
| 310 |
+
{
|
| 311 |
+
"cell_type": "code",
|
| 312 |
+
"execution_count": 46,
|
| 313 |
+
"metadata": {},
|
| 314 |
+
"outputs": [
|
| 315 |
+
{
|
| 316 |
+
"name": "stdout",
|
| 317 |
+
"output_type": "stream",
|
| 318 |
+
"text": [
|
| 319 |
+
"noncancer\n"
|
| 320 |
+
]
|
| 321 |
+
}
|
| 322 |
+
],
|
| 323 |
+
"source": [
|
| 324 |
+
"test_image = \\\n",
|
| 325 |
+
" image.load_img('./test/8864_idx5_x601_y2151_class0.png',\n",
|
| 326 |
+
" target_size=(300,300))\n",
|
| 327 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 328 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 329 |
+
"result = model.predict(test_image)\n",
|
| 330 |
+
"train_generator.class_indices\n",
|
| 331 |
+
"if result[0][0] == 1:\n",
|
| 332 |
+
" print('noncancer')\n",
|
| 333 |
+
"else:\n",
|
| 334 |
+
" print('cancer')"
|
| 335 |
+
]
|
| 336 |
+
},
|
| 337 |
+
{
|
| 338 |
+
"cell_type": "code",
|
| 339 |
+
"execution_count": 47,
|
| 340 |
+
"metadata": {},
|
| 341 |
+
"outputs": [
|
| 342 |
+
{
|
| 343 |
+
"name": "stdout",
|
| 344 |
+
"output_type": "stream",
|
| 345 |
+
"text": [
|
| 346 |
+
"cancer\n"
|
| 347 |
+
]
|
| 348 |
+
}
|
| 349 |
+
],
|
| 350 |
+
"source": [
|
| 351 |
+
"test_image = \\\n",
|
| 352 |
+
" image.load_img('./test/8864_idx5_x1701_y2651_class1.png',\n",
|
| 353 |
+
" target_size=(300,300))\n",
|
| 354 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 355 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 356 |
+
"result = model.predict(test_image)\n",
|
| 357 |
+
"train_generator.class_indices\n",
|
| 358 |
+
"if result[0][0] == 1:\n",
|
| 359 |
+
" print('noncancer')\n",
|
| 360 |
+
"else:\n",
|
| 361 |
+
" print('cancer')"
|
| 362 |
+
]
|
| 363 |
+
},
|
| 364 |
+
{
|
| 365 |
+
"cell_type": "code",
|
| 366 |
+
"execution_count": null,
|
| 367 |
+
"metadata": {},
|
| 368 |
+
"outputs": [],
|
| 369 |
+
"source": []
|
| 370 |
+
},
|
| 371 |
+
{
|
| 372 |
+
"cell_type": "code",
|
| 373 |
+
"execution_count": null,
|
| 374 |
+
"metadata": {},
|
| 375 |
+
"outputs": [],
|
| 376 |
+
"source": []
|
| 377 |
+
},
|
| 378 |
+
{
|
| 379 |
+
"cell_type": "code",
|
| 380 |
+
"execution_count": null,
|
| 381 |
+
"metadata": {},
|
| 382 |
+
"outputs": [],
|
| 383 |
+
"source": []
|
| 384 |
+
},
|
| 385 |
+
{
|
| 386 |
+
"cell_type": "code",
|
| 387 |
+
"execution_count": null,
|
| 388 |
+
"metadata": {},
|
| 389 |
+
"outputs": [],
|
| 390 |
+
"source": []
|
| 391 |
+
},
|
| 392 |
+
{
|
| 393 |
+
"cell_type": "code",
|
| 394 |
+
"execution_count": null,
|
| 395 |
+
"metadata": {},
|
| 396 |
+
"outputs": [],
|
| 397 |
+
"source": []
|
| 398 |
+
},
|
| 399 |
+
{
|
| 400 |
+
"cell_type": "code",
|
| 401 |
+
"execution_count": null,
|
| 402 |
+
"metadata": {},
|
| 403 |
+
"outputs": [],
|
| 404 |
+
"source": []
|
| 405 |
+
},
|
| 406 |
+
{
|
| 407 |
+
"cell_type": "code",
|
| 408 |
+
"execution_count": null,
|
| 409 |
+
"metadata": {},
|
| 410 |
+
"outputs": [],
|
| 411 |
+
"source": []
|
| 412 |
+
},
|
| 413 |
+
{
|
| 414 |
+
"cell_type": "code",
|
| 415 |
+
"execution_count": null,
|
| 416 |
+
"metadata": {},
|
| 417 |
+
"outputs": [],
|
| 418 |
+
"source": []
|
| 419 |
+
},
|
| 420 |
+
{
|
| 421 |
+
"cell_type": "code",
|
| 422 |
+
"execution_count": null,
|
| 423 |
+
"metadata": {},
|
| 424 |
+
"outputs": [],
|
| 425 |
+
"source": []
|
| 426 |
+
},
|
| 427 |
+
{
|
| 428 |
+
"cell_type": "code",
|
| 429 |
+
"execution_count": null,
|
| 430 |
+
"metadata": {},
|
| 431 |
+
"outputs": [],
|
| 432 |
+
"source": []
|
| 433 |
+
},
|
| 434 |
+
{
|
| 435 |
+
"cell_type": "code",
|
| 436 |
+
"execution_count": null,
|
| 437 |
+
"metadata": {},
|
| 438 |
+
"outputs": [],
|
| 439 |
+
"source": []
|
| 440 |
+
},
|
| 441 |
+
{
|
| 442 |
+
"cell_type": "code",
|
| 443 |
+
"execution_count": null,
|
| 444 |
+
"metadata": {},
|
| 445 |
+
"outputs": [],
|
| 446 |
+
"source": []
|
| 447 |
+
},
|
| 448 |
+
{
|
| 449 |
+
"cell_type": "code",
|
| 450 |
+
"execution_count": null,
|
| 451 |
+
"metadata": {},
|
| 452 |
+
"outputs": [],
|
| 453 |
+
"source": []
|
| 454 |
+
},
|
| 455 |
+
{
|
| 456 |
+
"cell_type": "code",
|
| 457 |
+
"execution_count": null,
|
| 458 |
+
"metadata": {},
|
| 459 |
+
"outputs": [],
|
| 460 |
+
"source": []
|
| 461 |
+
},
|
| 462 |
+
{
|
| 463 |
+
"cell_type": "code",
|
| 464 |
+
"execution_count": null,
|
| 465 |
+
"metadata": {},
|
| 466 |
+
"outputs": [],
|
| 467 |
+
"source": []
|
| 468 |
+
},
|
| 469 |
+
{
|
| 470 |
+
"cell_type": "code",
|
| 471 |
+
"execution_count": null,
|
| 472 |
+
"metadata": {},
|
| 473 |
+
"outputs": [],
|
| 474 |
+
"source": []
|
| 475 |
+
},
|
| 476 |
+
{
|
| 477 |
+
"cell_type": "code",
|
| 478 |
+
"execution_count": null,
|
| 479 |
+
"metadata": {},
|
| 480 |
+
"outputs": [],
|
| 481 |
+
"source": []
|
| 482 |
+
},
|
| 483 |
+
{
|
| 484 |
+
"cell_type": "code",
|
| 485 |
+
"execution_count": null,
|
| 486 |
+
"metadata": {},
|
| 487 |
+
"outputs": [],
|
| 488 |
+
"source": []
|
| 489 |
+
},
|
| 490 |
+
{
|
| 491 |
+
"cell_type": "code",
|
| 492 |
+
"execution_count": null,
|
| 493 |
+
"metadata": {},
|
| 494 |
+
"outputs": [],
|
| 495 |
+
"source": []
|
| 496 |
+
},
|
| 497 |
+
{
|
| 498 |
+
"cell_type": "code",
|
| 499 |
+
"execution_count": null,
|
| 500 |
+
"metadata": {},
|
| 501 |
+
"outputs": [],
|
| 502 |
+
"source": []
|
| 503 |
+
},
|
| 504 |
+
{
|
| 505 |
+
"cell_type": "code",
|
| 506 |
+
"execution_count": null,
|
| 507 |
+
"metadata": {},
|
| 508 |
+
"outputs": [],
|
| 509 |
+
"source": []
|
| 510 |
+
},
|
| 511 |
+
{
|
| 512 |
+
"cell_type": "code",
|
| 513 |
+
"execution_count": null,
|
| 514 |
+
"metadata": {},
|
| 515 |
+
"outputs": [],
|
| 516 |
+
"source": []
|
| 517 |
+
},
|
| 518 |
+
{
|
| 519 |
+
"cell_type": "code",
|
| 520 |
+
"execution_count": null,
|
| 521 |
+
"metadata": {},
|
| 522 |
+
"outputs": [],
|
| 523 |
+
"source": []
|
| 524 |
+
},
|
| 525 |
+
{
|
| 526 |
+
"cell_type": "code",
|
| 527 |
+
"execution_count": null,
|
| 528 |
+
"metadata": {},
|
| 529 |
+
"outputs": [],
|
| 530 |
+
"source": []
|
| 531 |
+
}
|
| 532 |
+
],
|
| 533 |
+
"metadata": {
|
| 534 |
+
"kernelspec": {
|
| 535 |
+
"display_name": "Python 3",
|
| 536 |
+
"language": "python",
|
| 537 |
+
"name": "python3"
|
| 538 |
+
},
|
| 539 |
+
"language_info": {
|
| 540 |
+
"codemirror_mode": {
|
| 541 |
+
"name": "ipython",
|
| 542 |
+
"version": 3
|
| 543 |
+
},
|
| 544 |
+
"file_extension": ".py",
|
| 545 |
+
"mimetype": "text/x-python",
|
| 546 |
+
"name": "python",
|
| 547 |
+
"nbconvert_exporter": "python",
|
| 548 |
+
"pygments_lexer": "ipython3",
|
| 549 |
+
"version": "3.7.3"
|
| 550 |
+
}
|
| 551 |
+
},
|
| 552 |
+
"nbformat": 4,
|
| 553 |
+
"nbformat_minor": 2
|
| 554 |
+
}
|
Final resnet50.ipynb
ADDED
|
@@ -0,0 +1,1060 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": 68,
|
| 6 |
+
"metadata": {},
|
| 7 |
+
"outputs": [],
|
| 8 |
+
"source": [
|
| 9 |
+
"from keras.applications.resnet50 import ResNet50\n",
|
| 10 |
+
"from keras.preprocessing import image\n",
|
| 11 |
+
"from keras.applications.resnet50 import preprocess_input, decode_predictions\n",
|
| 12 |
+
"from keras.preprocessing.image import ImageDataGenerator\n",
|
| 13 |
+
"from keras.optimizers import Adam\n",
|
| 14 |
+
"from keras.layers import *\n",
|
| 15 |
+
"import tensorflow as tf\n",
|
| 16 |
+
"import numpy as np\n",
|
| 17 |
+
"from keras.models import Model\n",
|
| 18 |
+
"import keras\n",
|
| 19 |
+
"from keras.optimizers import SGD\n",
|
| 20 |
+
"from keras.callbacks import Callback, ModelCheckpoint, ReduceLROnPlateau, TensorBoard\n"
|
| 21 |
+
]
|
| 22 |
+
},
|
| 23 |
+
{
|
| 24 |
+
"cell_type": "code",
|
| 25 |
+
"execution_count": 69,
|
| 26 |
+
"metadata": {},
|
| 27 |
+
"outputs": [],
|
| 28 |
+
"source": [
|
| 29 |
+
"base_model = ResNet50(include_top = False,weights = 'imagenet',input_shape = (224,224,3))\n"
|
| 30 |
+
]
|
| 31 |
+
},
|
| 32 |
+
{
|
| 33 |
+
"cell_type": "code",
|
| 34 |
+
"execution_count": 70,
|
| 35 |
+
"metadata": {},
|
| 36 |
+
"outputs": [],
|
| 37 |
+
"source": [
|
| 38 |
+
"for layer in base_model.layers:\n",
|
| 39 |
+
" layer.trainable = False"
|
| 40 |
+
]
|
| 41 |
+
},
|
| 42 |
+
{
|
| 43 |
+
"cell_type": "code",
|
| 44 |
+
"execution_count": 71,
|
| 45 |
+
"metadata": {},
|
| 46 |
+
"outputs": [
|
| 47 |
+
{
|
| 48 |
+
"name": "stdout",
|
| 49 |
+
"output_type": "stream",
|
| 50 |
+
"text": [
|
| 51 |
+
"Model: \"model_7\"\n",
|
| 52 |
+
"__________________________________________________________________________________________________\n",
|
| 53 |
+
"Layer (type) Output Shape Param # Connected to \n",
|
| 54 |
+
"==================================================================================================\n",
|
| 55 |
+
"input_10 (InputLayer) (None, 224, 224, 3) 0 \n",
|
| 56 |
+
"__________________________________________________________________________________________________\n",
|
| 57 |
+
"conv1_pad (ZeroPadding2D) (None, 230, 230, 3) 0 input_10[0][0] \n",
|
| 58 |
+
"__________________________________________________________________________________________________\n",
|
| 59 |
+
"conv1 (Conv2D) (None, 112, 112, 64) 9472 conv1_pad[0][0] \n",
|
| 60 |
+
"__________________________________________________________________________________________________\n",
|
| 61 |
+
"bn_conv1 (BatchNormalization) (None, 112, 112, 64) 256 conv1[0][0] \n",
|
| 62 |
+
"__________________________________________________________________________________________________\n",
|
| 63 |
+
"activation_442 (Activation) (None, 112, 112, 64) 0 bn_conv1[0][0] \n",
|
| 64 |
+
"__________________________________________________________________________________________________\n",
|
| 65 |
+
"pool1_pad (ZeroPadding2D) (None, 114, 114, 64) 0 activation_442[0][0] \n",
|
| 66 |
+
"__________________________________________________________________________________________________\n",
|
| 67 |
+
"max_pooling2d_10 (MaxPooling2D) (None, 56, 56, 64) 0 pool1_pad[0][0] \n",
|
| 68 |
+
"__________________________________________________________________________________________________\n",
|
| 69 |
+
"res2a_branch2a (Conv2D) (None, 56, 56, 64) 4160 max_pooling2d_10[0][0] \n",
|
| 70 |
+
"__________________________________________________________________________________________________\n",
|
| 71 |
+
"bn2a_branch2a (BatchNormalizati (None, 56, 56, 64) 256 res2a_branch2a[0][0] \n",
|
| 72 |
+
"__________________________________________________________________________________________________\n",
|
| 73 |
+
"activation_443 (Activation) (None, 56, 56, 64) 0 bn2a_branch2a[0][0] \n",
|
| 74 |
+
"__________________________________________________________________________________________________\n",
|
| 75 |
+
"res2a_branch2b (Conv2D) (None, 56, 56, 64) 36928 activation_443[0][0] \n",
|
| 76 |
+
"__________________________________________________________________________________________________\n",
|
| 77 |
+
"bn2a_branch2b (BatchNormalizati (None, 56, 56, 64) 256 res2a_branch2b[0][0] \n",
|
| 78 |
+
"__________________________________________________________________________________________________\n",
|
| 79 |
+
"activation_444 (Activation) (None, 56, 56, 64) 0 bn2a_branch2b[0][0] \n",
|
| 80 |
+
"__________________________________________________________________________________________________\n",
|
| 81 |
+
"res2a_branch2c (Conv2D) (None, 56, 56, 256) 16640 activation_444[0][0] \n",
|
| 82 |
+
"__________________________________________________________________________________________________\n",
|
| 83 |
+
"res2a_branch1 (Conv2D) (None, 56, 56, 256) 16640 max_pooling2d_10[0][0] \n",
|
| 84 |
+
"__________________________________________________________________________________________________\n",
|
| 85 |
+
"bn2a_branch2c (BatchNormalizati (None, 56, 56, 256) 1024 res2a_branch2c[0][0] \n",
|
| 86 |
+
"__________________________________________________________________________________________________\n",
|
| 87 |
+
"bn2a_branch1 (BatchNormalizatio (None, 56, 56, 256) 1024 res2a_branch1[0][0] \n",
|
| 88 |
+
"__________________________________________________________________________________________________\n",
|
| 89 |
+
"add_145 (Add) (None, 56, 56, 256) 0 bn2a_branch2c[0][0] \n",
|
| 90 |
+
" bn2a_branch1[0][0] \n",
|
| 91 |
+
"__________________________________________________________________________________________________\n",
|
| 92 |
+
"activation_445 (Activation) (None, 56, 56, 256) 0 add_145[0][0] \n",
|
| 93 |
+
"__________________________________________________________________________________________________\n",
|
| 94 |
+
"res2b_branch2a (Conv2D) (None, 56, 56, 64) 16448 activation_445[0][0] \n",
|
| 95 |
+
"__________________________________________________________________________________________________\n",
|
| 96 |
+
"bn2b_branch2a (BatchNormalizati (None, 56, 56, 64) 256 res2b_branch2a[0][0] \n",
|
| 97 |
+
"__________________________________________________________________________________________________\n",
|
| 98 |
+
"activation_446 (Activation) (None, 56, 56, 64) 0 bn2b_branch2a[0][0] \n",
|
| 99 |
+
"__________________________________________________________________________________________________\n",
|
| 100 |
+
"res2b_branch2b (Conv2D) (None, 56, 56, 64) 36928 activation_446[0][0] \n",
|
| 101 |
+
"__________________________________________________________________________________________________\n",
|
| 102 |
+
"bn2b_branch2b (BatchNormalizati (None, 56, 56, 64) 256 res2b_branch2b[0][0] \n",
|
| 103 |
+
"__________________________________________________________________________________________________\n",
|
| 104 |
+
"activation_447 (Activation) (None, 56, 56, 64) 0 bn2b_branch2b[0][0] \n",
|
| 105 |
+
"__________________________________________________________________________________________________\n",
|
| 106 |
+
"res2b_branch2c (Conv2D) (None, 56, 56, 256) 16640 activation_447[0][0] \n",
|
| 107 |
+
"__________________________________________________________________________________________________\n",
|
| 108 |
+
"bn2b_branch2c (BatchNormalizati (None, 56, 56, 256) 1024 res2b_branch2c[0][0] \n",
|
| 109 |
+
"__________________________________________________________________________________________________\n",
|
| 110 |
+
"add_146 (Add) (None, 56, 56, 256) 0 bn2b_branch2c[0][0] \n",
|
| 111 |
+
" activation_445[0][0] \n",
|
| 112 |
+
"__________________________________________________________________________________________________\n",
|
| 113 |
+
"activation_448 (Activation) (None, 56, 56, 256) 0 add_146[0][0] \n",
|
| 114 |
+
"__________________________________________________________________________________________________\n",
|
| 115 |
+
"res2c_branch2a (Conv2D) (None, 56, 56, 64) 16448 activation_448[0][0] \n",
|
| 116 |
+
"__________________________________________________________________________________________________\n",
|
| 117 |
+
"bn2c_branch2a (BatchNormalizati (None, 56, 56, 64) 256 res2c_branch2a[0][0] \n",
|
| 118 |
+
"__________________________________________________________________________________________________\n",
|
| 119 |
+
"activation_449 (Activation) (None, 56, 56, 64) 0 bn2c_branch2a[0][0] \n",
|
| 120 |
+
"__________________________________________________________________________________________________\n",
|
| 121 |
+
"res2c_branch2b (Conv2D) (None, 56, 56, 64) 36928 activation_449[0][0] \n",
|
| 122 |
+
"__________________________________________________________________________________________________\n",
|
| 123 |
+
"bn2c_branch2b (BatchNormalizati (None, 56, 56, 64) 256 res2c_branch2b[0][0] \n",
|
| 124 |
+
"__________________________________________________________________________________________________\n",
|
| 125 |
+
"activation_450 (Activation) (None, 56, 56, 64) 0 bn2c_branch2b[0][0] \n",
|
| 126 |
+
"__________________________________________________________________________________________________\n",
|
| 127 |
+
"res2c_branch2c (Conv2D) (None, 56, 56, 256) 16640 activation_450[0][0] \n",
|
| 128 |
+
"__________________________________________________________________________________________________\n",
|
| 129 |
+
"bn2c_branch2c (BatchNormalizati (None, 56, 56, 256) 1024 res2c_branch2c[0][0] \n",
|
| 130 |
+
"__________________________________________________________________________________________________\n",
|
| 131 |
+
"add_147 (Add) (None, 56, 56, 256) 0 bn2c_branch2c[0][0] \n",
|
| 132 |
+
" activation_448[0][0] \n",
|
| 133 |
+
"__________________________________________________________________________________________________\n",
|
| 134 |
+
"activation_451 (Activation) (None, 56, 56, 256) 0 add_147[0][0] \n",
|
| 135 |
+
"__________________________________________________________________________________________________\n",
|
| 136 |
+
"res3a_branch2a (Conv2D) (None, 28, 28, 128) 32896 activation_451[0][0] \n",
|
| 137 |
+
"__________________________________________________________________________________________________\n",
|
| 138 |
+
"bn3a_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3a_branch2a[0][0] \n",
|
| 139 |
+
"__________________________________________________________________________________________________\n",
|
| 140 |
+
"activation_452 (Activation) (None, 28, 28, 128) 0 bn3a_branch2a[0][0] \n",
|
| 141 |
+
"__________________________________________________________________________________________________\n",
|
| 142 |
+
"res3a_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_452[0][0] \n",
|
| 143 |
+
"__________________________________________________________________________________________________\n",
|
| 144 |
+
"bn3a_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3a_branch2b[0][0] \n",
|
| 145 |
+
"__________________________________________________________________________________________________\n",
|
| 146 |
+
"activation_453 (Activation) (None, 28, 28, 128) 0 bn3a_branch2b[0][0] \n",
|
| 147 |
+
"__________________________________________________________________________________________________\n",
|
| 148 |
+
"res3a_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_453[0][0] \n",
|
| 149 |
+
"__________________________________________________________________________________________________\n",
|
| 150 |
+
"res3a_branch1 (Conv2D) (None, 28, 28, 512) 131584 activation_451[0][0] \n",
|
| 151 |
+
"__________________________________________________________________________________________________\n",
|
| 152 |
+
"bn3a_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3a_branch2c[0][0] \n",
|
| 153 |
+
"__________________________________________________________________________________________________\n",
|
| 154 |
+
"bn3a_branch1 (BatchNormalizatio (None, 28, 28, 512) 2048 res3a_branch1[0][0] \n",
|
| 155 |
+
"__________________________________________________________________________________________________\n",
|
| 156 |
+
"add_148 (Add) (None, 28, 28, 512) 0 bn3a_branch2c[0][0] \n",
|
| 157 |
+
" bn3a_branch1[0][0] \n",
|
| 158 |
+
"__________________________________________________________________________________________________\n",
|
| 159 |
+
"activation_454 (Activation) (None, 28, 28, 512) 0 add_148[0][0] \n",
|
| 160 |
+
"__________________________________________________________________________________________________\n",
|
| 161 |
+
"res3b_branch2a (Conv2D) (None, 28, 28, 128) 65664 activation_454[0][0] \n",
|
| 162 |
+
"__________________________________________________________________________________________________\n",
|
| 163 |
+
"bn3b_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3b_branch2a[0][0] \n",
|
| 164 |
+
"__________________________________________________________________________________________________\n",
|
| 165 |
+
"activation_455 (Activation) (None, 28, 28, 128) 0 bn3b_branch2a[0][0] \n",
|
| 166 |
+
"__________________________________________________________________________________________________\n",
|
| 167 |
+
"res3b_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_455[0][0] \n",
|
| 168 |
+
"__________________________________________________________________________________________________\n",
|
| 169 |
+
"bn3b_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3b_branch2b[0][0] \n",
|
| 170 |
+
"__________________________________________________________________________________________________\n",
|
| 171 |
+
"activation_456 (Activation) (None, 28, 28, 128) 0 bn3b_branch2b[0][0] \n",
|
| 172 |
+
"__________________________________________________________________________________________________\n",
|
| 173 |
+
"res3b_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_456[0][0] \n",
|
| 174 |
+
"__________________________________________________________________________________________________\n",
|
| 175 |
+
"bn3b_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3b_branch2c[0][0] \n",
|
| 176 |
+
"__________________________________________________________________________________________________\n",
|
| 177 |
+
"add_149 (Add) (None, 28, 28, 512) 0 bn3b_branch2c[0][0] \n",
|
| 178 |
+
" activation_454[0][0] \n",
|
| 179 |
+
"__________________________________________________________________________________________________\n",
|
| 180 |
+
"activation_457 (Activation) (None, 28, 28, 512) 0 add_149[0][0] \n",
|
| 181 |
+
"__________________________________________________________________________________________________\n",
|
| 182 |
+
"res3c_branch2a (Conv2D) (None, 28, 28, 128) 65664 activation_457[0][0] \n",
|
| 183 |
+
"__________________________________________________________________________________________________\n",
|
| 184 |
+
"bn3c_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3c_branch2a[0][0] \n",
|
| 185 |
+
"__________________________________________________________________________________________________\n",
|
| 186 |
+
"activation_458 (Activation) (None, 28, 28, 128) 0 bn3c_branch2a[0][0] \n",
|
| 187 |
+
"__________________________________________________________________________________________________\n",
|
| 188 |
+
"res3c_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_458[0][0] \n",
|
| 189 |
+
"__________________________________________________________________________________________________\n",
|
| 190 |
+
"bn3c_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3c_branch2b[0][0] \n",
|
| 191 |
+
"__________________________________________________________________________________________________\n",
|
| 192 |
+
"activation_459 (Activation) (None, 28, 28, 128) 0 bn3c_branch2b[0][0] \n",
|
| 193 |
+
"__________________________________________________________________________________________________\n",
|
| 194 |
+
"res3c_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_459[0][0] \n",
|
| 195 |
+
"__________________________________________________________________________________________________\n",
|
| 196 |
+
"bn3c_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3c_branch2c[0][0] \n",
|
| 197 |
+
"__________________________________________________________________________________________________\n",
|
| 198 |
+
"add_150 (Add) (None, 28, 28, 512) 0 bn3c_branch2c[0][0] \n",
|
| 199 |
+
" activation_457[0][0] \n",
|
| 200 |
+
"__________________________________________________________________________________________________\n",
|
| 201 |
+
"activation_460 (Activation) (None, 28, 28, 512) 0 add_150[0][0] \n",
|
| 202 |
+
"__________________________________________________________________________________________________\n",
|
| 203 |
+
"res3d_branch2a (Conv2D) (None, 28, 28, 128) 65664 activation_460[0][0] \n",
|
| 204 |
+
"__________________________________________________________________________________________________\n",
|
| 205 |
+
"bn3d_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3d_branch2a[0][0] \n",
|
| 206 |
+
"__________________________________________________________________________________________________\n",
|
| 207 |
+
"activation_461 (Activation) (None, 28, 28, 128) 0 bn3d_branch2a[0][0] \n",
|
| 208 |
+
"__________________________________________________________________________________________________\n",
|
| 209 |
+
"res3d_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_461[0][0] \n",
|
| 210 |
+
"__________________________________________________________________________________________________\n",
|
| 211 |
+
"bn3d_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3d_branch2b[0][0] \n",
|
| 212 |
+
"__________________________________________________________________________________________________\n",
|
| 213 |
+
"activation_462 (Activation) (None, 28, 28, 128) 0 bn3d_branch2b[0][0] \n",
|
| 214 |
+
"__________________________________________________________________________________________________\n",
|
| 215 |
+
"res3d_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_462[0][0] \n",
|
| 216 |
+
"__________________________________________________________________________________________________\n",
|
| 217 |
+
"bn3d_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3d_branch2c[0][0] \n",
|
| 218 |
+
"__________________________________________________________________________________________________\n",
|
| 219 |
+
"add_151 (Add) (None, 28, 28, 512) 0 bn3d_branch2c[0][0] \n",
|
| 220 |
+
" activation_460[0][0] \n",
|
| 221 |
+
"__________________________________________________________________________________________________\n",
|
| 222 |
+
"activation_463 (Activation) (None, 28, 28, 512) 0 add_151[0][0] \n",
|
| 223 |
+
"__________________________________________________________________________________________________\n",
|
| 224 |
+
"res4a_branch2a (Conv2D) (None, 14, 14, 256) 131328 activation_463[0][0] \n",
|
| 225 |
+
"__________________________________________________________________________________________________\n",
|
| 226 |
+
"bn4a_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4a_branch2a[0][0] \n",
|
| 227 |
+
"__________________________________________________________________________________________________\n",
|
| 228 |
+
"activation_464 (Activation) (None, 14, 14, 256) 0 bn4a_branch2a[0][0] \n",
|
| 229 |
+
"__________________________________________________________________________________________________\n",
|
| 230 |
+
"res4a_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_464[0][0] \n",
|
| 231 |
+
"__________________________________________________________________________________________________\n",
|
| 232 |
+
"bn4a_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4a_branch2b[0][0] \n",
|
| 233 |
+
"__________________________________________________________________________________________________\n",
|
| 234 |
+
"activation_465 (Activation) (None, 14, 14, 256) 0 bn4a_branch2b[0][0] \n",
|
| 235 |
+
"__________________________________________________________________________________________________\n",
|
| 236 |
+
"res4a_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_465[0][0] \n",
|
| 237 |
+
"__________________________________________________________________________________________________\n",
|
| 238 |
+
"res4a_branch1 (Conv2D) (None, 14, 14, 1024) 525312 activation_463[0][0] \n",
|
| 239 |
+
"__________________________________________________________________________________________________\n",
|
| 240 |
+
"bn4a_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4a_branch2c[0][0] \n",
|
| 241 |
+
"__________________________________________________________________________________________________\n",
|
| 242 |
+
"bn4a_branch1 (BatchNormalizatio (None, 14, 14, 1024) 4096 res4a_branch1[0][0] \n",
|
| 243 |
+
"__________________________________________________________________________________________________\n",
|
| 244 |
+
"add_152 (Add) (None, 14, 14, 1024) 0 bn4a_branch2c[0][0] \n",
|
| 245 |
+
" bn4a_branch1[0][0] \n",
|
| 246 |
+
"__________________________________________________________________________________________________\n",
|
| 247 |
+
"activation_466 (Activation) (None, 14, 14, 1024) 0 add_152[0][0] \n",
|
| 248 |
+
"__________________________________________________________________________________________________\n",
|
| 249 |
+
"res4b_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_466[0][0] \n",
|
| 250 |
+
"__________________________________________________________________________________________________\n",
|
| 251 |
+
"bn4b_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4b_branch2a[0][0] \n",
|
| 252 |
+
"__________________________________________________________________________________________________\n",
|
| 253 |
+
"activation_467 (Activation) (None, 14, 14, 256) 0 bn4b_branch2a[0][0] \n",
|
| 254 |
+
"__________________________________________________________________________________________________\n",
|
| 255 |
+
"res4b_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_467[0][0] \n",
|
| 256 |
+
"__________________________________________________________________________________________________\n",
|
| 257 |
+
"bn4b_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4b_branch2b[0][0] \n",
|
| 258 |
+
"__________________________________________________________________________________________________\n",
|
| 259 |
+
"activation_468 (Activation) (None, 14, 14, 256) 0 bn4b_branch2b[0][0] \n",
|
| 260 |
+
"__________________________________________________________________________________________________\n",
|
| 261 |
+
"res4b_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_468[0][0] \n",
|
| 262 |
+
"__________________________________________________________________________________________________\n",
|
| 263 |
+
"bn4b_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4b_branch2c[0][0] \n",
|
| 264 |
+
"__________________________________________________________________________________________________\n",
|
| 265 |
+
"add_153 (Add) (None, 14, 14, 1024) 0 bn4b_branch2c[0][0] \n",
|
| 266 |
+
" activation_466[0][0] \n",
|
| 267 |
+
"__________________________________________________________________________________________________\n",
|
| 268 |
+
"activation_469 (Activation) (None, 14, 14, 1024) 0 add_153[0][0] \n",
|
| 269 |
+
"__________________________________________________________________________________________________\n",
|
| 270 |
+
"res4c_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_469[0][0] \n",
|
| 271 |
+
"__________________________________________________________________________________________________\n",
|
| 272 |
+
"bn4c_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4c_branch2a[0][0] \n",
|
| 273 |
+
"__________________________________________________________________________________________________\n",
|
| 274 |
+
"activation_470 (Activation) (None, 14, 14, 256) 0 bn4c_branch2a[0][0] \n",
|
| 275 |
+
"__________________________________________________________________________________________________\n",
|
| 276 |
+
"res4c_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_470[0][0] \n",
|
| 277 |
+
"__________________________________________________________________________________________________\n",
|
| 278 |
+
"bn4c_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4c_branch2b[0][0] \n",
|
| 279 |
+
"__________________________________________________________________________________________________\n",
|
| 280 |
+
"activation_471 (Activation) (None, 14, 14, 256) 0 bn4c_branch2b[0][0] \n",
|
| 281 |
+
"__________________________________________________________________________________________________\n",
|
| 282 |
+
"res4c_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_471[0][0] \n",
|
| 283 |
+
"__________________________________________________________________________________________________\n",
|
| 284 |
+
"bn4c_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4c_branch2c[0][0] \n",
|
| 285 |
+
"__________________________________________________________________________________________________\n",
|
| 286 |
+
"add_154 (Add) (None, 14, 14, 1024) 0 bn4c_branch2c[0][0] \n",
|
| 287 |
+
" activation_469[0][0] \n",
|
| 288 |
+
"__________________________________________________________________________________________________\n",
|
| 289 |
+
"activation_472 (Activation) (None, 14, 14, 1024) 0 add_154[0][0] \n",
|
| 290 |
+
"__________________________________________________________________________________________________\n",
|
| 291 |
+
"res4d_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_472[0][0] \n",
|
| 292 |
+
"__________________________________________________________________________________________________\n",
|
| 293 |
+
"bn4d_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4d_branch2a[0][0] \n",
|
| 294 |
+
"__________________________________________________________________________________________________\n",
|
| 295 |
+
"activation_473 (Activation) (None, 14, 14, 256) 0 bn4d_branch2a[0][0] \n",
|
| 296 |
+
"__________________________________________________________________________________________________\n",
|
| 297 |
+
"res4d_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_473[0][0] \n",
|
| 298 |
+
"__________________________________________________________________________________________________\n",
|
| 299 |
+
"bn4d_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4d_branch2b[0][0] \n",
|
| 300 |
+
"__________________________________________________________________________________________________\n",
|
| 301 |
+
"activation_474 (Activation) (None, 14, 14, 256) 0 bn4d_branch2b[0][0] \n",
|
| 302 |
+
"__________________________________________________________________________________________________\n",
|
| 303 |
+
"res4d_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_474[0][0] \n",
|
| 304 |
+
"__________________________________________________________________________________________________\n",
|
| 305 |
+
"bn4d_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4d_branch2c[0][0] \n",
|
| 306 |
+
"__________________________________________________________________________________________________\n",
|
| 307 |
+
"add_155 (Add) (None, 14, 14, 1024) 0 bn4d_branch2c[0][0] \n",
|
| 308 |
+
" activation_472[0][0] \n",
|
| 309 |
+
"__________________________________________________________________________________________________\n",
|
| 310 |
+
"activation_475 (Activation) (None, 14, 14, 1024) 0 add_155[0][0] \n",
|
| 311 |
+
"__________________________________________________________________________________________________\n",
|
| 312 |
+
"res4e_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_475[0][0] \n",
|
| 313 |
+
"__________________________________________________________________________________________________\n",
|
| 314 |
+
"bn4e_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4e_branch2a[0][0] \n",
|
| 315 |
+
"__________________________________________________________________________________________________\n",
|
| 316 |
+
"activation_476 (Activation) (None, 14, 14, 256) 0 bn4e_branch2a[0][0] \n",
|
| 317 |
+
"__________________________________________________________________________________________________\n",
|
| 318 |
+
"res4e_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_476[0][0] \n",
|
| 319 |
+
"__________________________________________________________________________________________________\n",
|
| 320 |
+
"bn4e_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4e_branch2b[0][0] \n",
|
| 321 |
+
"__________________________________________________________________________________________________\n",
|
| 322 |
+
"activation_477 (Activation) (None, 14, 14, 256) 0 bn4e_branch2b[0][0] \n",
|
| 323 |
+
"__________________________________________________________________________________________________\n",
|
| 324 |
+
"res4e_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_477[0][0] \n",
|
| 325 |
+
"__________________________________________________________________________________________________\n",
|
| 326 |
+
"bn4e_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4e_branch2c[0][0] \n",
|
| 327 |
+
"__________________________________________________________________________________________________\n",
|
| 328 |
+
"add_156 (Add) (None, 14, 14, 1024) 0 bn4e_branch2c[0][0] \n",
|
| 329 |
+
" activation_475[0][0] \n",
|
| 330 |
+
"__________________________________________________________________________________________________\n",
|
| 331 |
+
"activation_478 (Activation) (None, 14, 14, 1024) 0 add_156[0][0] \n",
|
| 332 |
+
"__________________________________________________________________________________________________\n",
|
| 333 |
+
"res4f_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_478[0][0] \n",
|
| 334 |
+
"__________________________________________________________________________________________________\n",
|
| 335 |
+
"bn4f_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4f_branch2a[0][0] \n",
|
| 336 |
+
"__________________________________________________________________________________________________\n",
|
| 337 |
+
"activation_479 (Activation) (None, 14, 14, 256) 0 bn4f_branch2a[0][0] \n",
|
| 338 |
+
"__________________________________________________________________________________________________\n",
|
| 339 |
+
"res4f_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_479[0][0] \n",
|
| 340 |
+
"__________________________________________________________________________________________________\n",
|
| 341 |
+
"bn4f_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4f_branch2b[0][0] \n",
|
| 342 |
+
"__________________________________________________________________________________________________\n",
|
| 343 |
+
"activation_480 (Activation) (None, 14, 14, 256) 0 bn4f_branch2b[0][0] \n",
|
| 344 |
+
"__________________________________________________________________________________________________\n",
|
| 345 |
+
"res4f_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_480[0][0] \n",
|
| 346 |
+
"__________________________________________________________________________________________________\n",
|
| 347 |
+
"bn4f_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4f_branch2c[0][0] \n",
|
| 348 |
+
"__________________________________________________________________________________________________\n",
|
| 349 |
+
"add_157 (Add) (None, 14, 14, 1024) 0 bn4f_branch2c[0][0] \n",
|
| 350 |
+
" activation_478[0][0] \n",
|
| 351 |
+
"__________________________________________________________________________________________________\n",
|
| 352 |
+
"activation_481 (Activation) (None, 14, 14, 1024) 0 add_157[0][0] \n",
|
| 353 |
+
"__________________________________________________________________________________________________\n",
|
| 354 |
+
"res5a_branch2a (Conv2D) (None, 7, 7, 512) 524800 activation_481[0][0] \n",
|
| 355 |
+
"__________________________________________________________________________________________________\n",
|
| 356 |
+
"bn5a_branch2a (BatchNormalizati (None, 7, 7, 512) 2048 res5a_branch2a[0][0] \n",
|
| 357 |
+
"__________________________________________________________________________________________________\n",
|
| 358 |
+
"activation_482 (Activation) (None, 7, 7, 512) 0 bn5a_branch2a[0][0] \n",
|
| 359 |
+
"__________________________________________________________________________________________________\n",
|
| 360 |
+
"res5a_branch2b (Conv2D) (None, 7, 7, 512) 2359808 activation_482[0][0] \n",
|
| 361 |
+
"__________________________________________________________________________________________________\n",
|
| 362 |
+
"bn5a_branch2b (BatchNormalizati (None, 7, 7, 512) 2048 res5a_branch2b[0][0] \n",
|
| 363 |
+
"__________________________________________________________________________________________________\n",
|
| 364 |
+
"activation_483 (Activation) (None, 7, 7, 512) 0 bn5a_branch2b[0][0] \n",
|
| 365 |
+
"__________________________________________________________________________________________________\n",
|
| 366 |
+
"res5a_branch2c (Conv2D) (None, 7, 7, 2048) 1050624 activation_483[0][0] \n",
|
| 367 |
+
"__________________________________________________________________________________________________\n",
|
| 368 |
+
"res5a_branch1 (Conv2D) (None, 7, 7, 2048) 2099200 activation_481[0][0] \n",
|
| 369 |
+
"__________________________________________________________________________________________________\n",
|
| 370 |
+
"bn5a_branch2c (BatchNormalizati (None, 7, 7, 2048) 8192 res5a_branch2c[0][0] \n",
|
| 371 |
+
"__________________________________________________________________________________________________\n",
|
| 372 |
+
"bn5a_branch1 (BatchNormalizatio (None, 7, 7, 2048) 8192 res5a_branch1[0][0] \n",
|
| 373 |
+
"__________________________________________________________________________________________________\n",
|
| 374 |
+
"add_158 (Add) (None, 7, 7, 2048) 0 bn5a_branch2c[0][0] \n",
|
| 375 |
+
" bn5a_branch1[0][0] \n",
|
| 376 |
+
"__________________________________________________________________________________________________\n",
|
| 377 |
+
"activation_484 (Activation) (None, 7, 7, 2048) 0 add_158[0][0] \n",
|
| 378 |
+
"__________________________________________________________________________________________________\n",
|
| 379 |
+
"res5b_branch2a (Conv2D) (None, 7, 7, 512) 1049088 activation_484[0][0] \n",
|
| 380 |
+
"__________________________________________________________________________________________________\n",
|
| 381 |
+
"bn5b_branch2a (BatchNormalizati (None, 7, 7, 512) 2048 res5b_branch2a[0][0] \n",
|
| 382 |
+
"__________________________________________________________________________________________________\n",
|
| 383 |
+
"activation_485 (Activation) (None, 7, 7, 512) 0 bn5b_branch2a[0][0] \n",
|
| 384 |
+
"__________________________________________________________________________________________________\n",
|
| 385 |
+
"res5b_branch2b (Conv2D) (None, 7, 7, 512) 2359808 activation_485[0][0] \n",
|
| 386 |
+
"__________________________________________________________________________________________________\n",
|
| 387 |
+
"bn5b_branch2b (BatchNormalizati (None, 7, 7, 512) 2048 res5b_branch2b[0][0] \n",
|
| 388 |
+
"__________________________________________________________________________________________________\n",
|
| 389 |
+
"activation_486 (Activation) (None, 7, 7, 512) 0 bn5b_branch2b[0][0] \n",
|
| 390 |
+
"__________________________________________________________________________________________________\n",
|
| 391 |
+
"res5b_branch2c (Conv2D) (None, 7, 7, 2048) 1050624 activation_486[0][0] \n",
|
| 392 |
+
"__________________________________________________________________________________________________\n",
|
| 393 |
+
"bn5b_branch2c (BatchNormalizati (None, 7, 7, 2048) 8192 res5b_branch2c[0][0] \n",
|
| 394 |
+
"__________________________________________________________________________________________________\n",
|
| 395 |
+
"add_159 (Add) (None, 7, 7, 2048) 0 bn5b_branch2c[0][0] \n",
|
| 396 |
+
" activation_484[0][0] \n",
|
| 397 |
+
"__________________________________________________________________________________________________\n",
|
| 398 |
+
"activation_487 (Activation) (None, 7, 7, 2048) 0 add_159[0][0] \n",
|
| 399 |
+
"__________________________________________________________________________________________________\n",
|
| 400 |
+
"res5c_branch2a (Conv2D) (None, 7, 7, 512) 1049088 activation_487[0][0] \n",
|
| 401 |
+
"__________________________________________________________________________________________________\n",
|
| 402 |
+
"bn5c_branch2a (BatchNormalizati (None, 7, 7, 512) 2048 res5c_branch2a[0][0] \n",
|
| 403 |
+
"__________________________________________________________________________________________________\n",
|
| 404 |
+
"activation_488 (Activation) (None, 7, 7, 512) 0 bn5c_branch2a[0][0] \n",
|
| 405 |
+
"__________________________________________________________________________________________________\n",
|
| 406 |
+
"res5c_branch2b (Conv2D) (None, 7, 7, 512) 2359808 activation_488[0][0] \n",
|
| 407 |
+
"__________________________________________________________________________________________________\n",
|
| 408 |
+
"bn5c_branch2b (BatchNormalizati (None, 7, 7, 512) 2048 res5c_branch2b[0][0] \n",
|
| 409 |
+
"__________________________________________________________________________________________________\n",
|
| 410 |
+
"activation_489 (Activation) (None, 7, 7, 512) 0 bn5c_branch2b[0][0] \n",
|
| 411 |
+
"__________________________________________________________________________________________________\n",
|
| 412 |
+
"res5c_branch2c (Conv2D) (None, 7, 7, 2048) 1050624 activation_489[0][0] \n",
|
| 413 |
+
"__________________________________________________________________________________________________\n",
|
| 414 |
+
"bn5c_branch2c (BatchNormalizati (None, 7, 7, 2048) 8192 res5c_branch2c[0][0] \n",
|
| 415 |
+
"__________________________________________________________________________________________________\n",
|
| 416 |
+
"add_160 (Add) (None, 7, 7, 2048) 0 bn5c_branch2c[0][0] \n",
|
| 417 |
+
" activation_487[0][0] \n",
|
| 418 |
+
"__________________________________________________________________________________________________\n",
|
| 419 |
+
"activation_490 (Activation) (None, 7, 7, 2048) 0 add_160[0][0] \n",
|
| 420 |
+
"__________________________________________________________________________________________________\n",
|
| 421 |
+
"global_average_pooling2d_8 (Glo (None, 2048) 0 activation_490[0][0] \n",
|
| 422 |
+
"__________________________________________________________________________________________________\n",
|
| 423 |
+
"dense_19 (Dense) (None, 256) 524544 global_average_pooling2d_8[0][0] \n",
|
| 424 |
+
"__________________________________________________________________________________________________\n",
|
| 425 |
+
"dropout_13 (Dropout) (None, 256) 0 dense_19[0][0] \n",
|
| 426 |
+
"__________________________________________________________________________________________________\n",
|
| 427 |
+
"dense_20 (Dense) (None, 128) 32896 dropout_13[0][0] \n",
|
| 428 |
+
"__________________________________________________________________________________________________\n",
|
| 429 |
+
"dropout_14 (Dropout) (None, 128) 0 dense_20[0][0] \n",
|
| 430 |
+
"__________________________________________________________________________________________________\n",
|
| 431 |
+
"dense_21 (Dense) (None, 64) 8256 dropout_14[0][0] \n",
|
| 432 |
+
"__________________________________________________________________________________________________\n",
|
| 433 |
+
"dropout_15 (Dropout) (None, 64) 0 dense_21[0][0] \n",
|
| 434 |
+
"__________________________________________________________________________________________________\n",
|
| 435 |
+
"dense_22 (Dense) (None, 2) 130 dropout_15[0][0] \n",
|
| 436 |
+
"==================================================================================================\n",
|
| 437 |
+
"Total params: 24,153,538\n",
|
| 438 |
+
"Trainable params: 565,826\n",
|
| 439 |
+
"Non-trainable params: 23,587,712\n",
|
| 440 |
+
"__________________________________________________________________________________________________\n"
|
| 441 |
+
]
|
| 442 |
+
}
|
| 443 |
+
],
|
| 444 |
+
"source": [
|
| 445 |
+
"x = base_model.output\n",
|
| 446 |
+
"x = GlobalAveragePooling2D()(x)\n",
|
| 447 |
+
"x = Dense(256,activation='relu')(x)\n",
|
| 448 |
+
"x = Dropout(0.5)(x)\n",
|
| 449 |
+
"x = Dense(128,activation='relu')(x)\n",
|
| 450 |
+
"x = Dropout(0.5)(x)\n",
|
| 451 |
+
"x = Dense(64,activation='relu')(x)\n",
|
| 452 |
+
"x = Dropout(0.5)(x)\n",
|
| 453 |
+
"x = Dense(2,activation='softmax')(x)\n",
|
| 454 |
+
"\n",
|
| 455 |
+
"\n",
|
| 456 |
+
"model = Model(inputs = base_model.input,outputs = x)\n",
|
| 457 |
+
"model.summary()"
|
| 458 |
+
]
|
| 459 |
+
},
|
| 460 |
+
{
|
| 461 |
+
"cell_type": "code",
|
| 462 |
+
"execution_count": 72,
|
| 463 |
+
"metadata": {},
|
| 464 |
+
"outputs": [
|
| 465 |
+
{
|
| 466 |
+
"name": "stdout",
|
| 467 |
+
"output_type": "stream",
|
| 468 |
+
"text": [
|
| 469 |
+
"Model: \"model_7\"\n",
|
| 470 |
+
"__________________________________________________________________________________________________\n",
|
| 471 |
+
"Layer (type) Output Shape Param # Connected to \n",
|
| 472 |
+
"==================================================================================================\n",
|
| 473 |
+
"input_10 (InputLayer) (None, 224, 224, 3) 0 \n",
|
| 474 |
+
"__________________________________________________________________________________________________\n",
|
| 475 |
+
"conv1_pad (ZeroPadding2D) (None, 230, 230, 3) 0 input_10[0][0] \n",
|
| 476 |
+
"__________________________________________________________________________________________________\n",
|
| 477 |
+
"conv1 (Conv2D) (None, 112, 112, 64) 9472 conv1_pad[0][0] \n",
|
| 478 |
+
"__________________________________________________________________________________________________\n",
|
| 479 |
+
"bn_conv1 (BatchNormalization) (None, 112, 112, 64) 256 conv1[0][0] \n",
|
| 480 |
+
"__________________________________________________________________________________________________\n",
|
| 481 |
+
"activation_442 (Activation) (None, 112, 112, 64) 0 bn_conv1[0][0] \n",
|
| 482 |
+
"__________________________________________________________________________________________________\n",
|
| 483 |
+
"pool1_pad (ZeroPadding2D) (None, 114, 114, 64) 0 activation_442[0][0] \n",
|
| 484 |
+
"__________________________________________________________________________________________________\n",
|
| 485 |
+
"max_pooling2d_10 (MaxPooling2D) (None, 56, 56, 64) 0 pool1_pad[0][0] \n",
|
| 486 |
+
"__________________________________________________________________________________________________\n",
|
| 487 |
+
"res2a_branch2a (Conv2D) (None, 56, 56, 64) 4160 max_pooling2d_10[0][0] \n",
|
| 488 |
+
"__________________________________________________________________________________________________\n",
|
| 489 |
+
"bn2a_branch2a (BatchNormalizati (None, 56, 56, 64) 256 res2a_branch2a[0][0] \n",
|
| 490 |
+
"__________________________________________________________________________________________________\n",
|
| 491 |
+
"activation_443 (Activation) (None, 56, 56, 64) 0 bn2a_branch2a[0][0] \n",
|
| 492 |
+
"__________________________________________________________________________________________________\n",
|
| 493 |
+
"res2a_branch2b (Conv2D) (None, 56, 56, 64) 36928 activation_443[0][0] \n",
|
| 494 |
+
"__________________________________________________________________________________________________\n",
|
| 495 |
+
"bn2a_branch2b (BatchNormalizati (None, 56, 56, 64) 256 res2a_branch2b[0][0] \n",
|
| 496 |
+
"__________________________________________________________________________________________________\n",
|
| 497 |
+
"activation_444 (Activation) (None, 56, 56, 64) 0 bn2a_branch2b[0][0] \n",
|
| 498 |
+
"__________________________________________________________________________________________________\n",
|
| 499 |
+
"res2a_branch2c (Conv2D) (None, 56, 56, 256) 16640 activation_444[0][0] \n",
|
| 500 |
+
"__________________________________________________________________________________________________\n",
|
| 501 |
+
"res2a_branch1 (Conv2D) (None, 56, 56, 256) 16640 max_pooling2d_10[0][0] \n",
|
| 502 |
+
"__________________________________________________________________________________________________\n",
|
| 503 |
+
"bn2a_branch2c (BatchNormalizati (None, 56, 56, 256) 1024 res2a_branch2c[0][0] \n",
|
| 504 |
+
"__________________________________________________________________________________________________\n",
|
| 505 |
+
"bn2a_branch1 (BatchNormalizatio (None, 56, 56, 256) 1024 res2a_branch1[0][0] \n",
|
| 506 |
+
"__________________________________________________________________________________________________\n",
|
| 507 |
+
"add_145 (Add) (None, 56, 56, 256) 0 bn2a_branch2c[0][0] \n",
|
| 508 |
+
" bn2a_branch1[0][0] \n",
|
| 509 |
+
"__________________________________________________________________________________________________\n",
|
| 510 |
+
"activation_445 (Activation) (None, 56, 56, 256) 0 add_145[0][0] \n",
|
| 511 |
+
"__________________________________________________________________________________________________\n",
|
| 512 |
+
"res2b_branch2a (Conv2D) (None, 56, 56, 64) 16448 activation_445[0][0] \n",
|
| 513 |
+
"__________________________________________________________________________________________________\n",
|
| 514 |
+
"bn2b_branch2a (BatchNormalizati (None, 56, 56, 64) 256 res2b_branch2a[0][0] \n",
|
| 515 |
+
"__________________________________________________________________________________________________\n",
|
| 516 |
+
"activation_446 (Activation) (None, 56, 56, 64) 0 bn2b_branch2a[0][0] \n",
|
| 517 |
+
"__________________________________________________________________________________________________\n",
|
| 518 |
+
"res2b_branch2b (Conv2D) (None, 56, 56, 64) 36928 activation_446[0][0] \n",
|
| 519 |
+
"__________________________________________________________________________________________________\n",
|
| 520 |
+
"bn2b_branch2b (BatchNormalizati (None, 56, 56, 64) 256 res2b_branch2b[0][0] \n",
|
| 521 |
+
"__________________________________________________________________________________________________\n",
|
| 522 |
+
"activation_447 (Activation) (None, 56, 56, 64) 0 bn2b_branch2b[0][0] \n",
|
| 523 |
+
"__________________________________________________________________________________________________\n",
|
| 524 |
+
"res2b_branch2c (Conv2D) (None, 56, 56, 256) 16640 activation_447[0][0] \n",
|
| 525 |
+
"__________________________________________________________________________________________________\n",
|
| 526 |
+
"bn2b_branch2c (BatchNormalizati (None, 56, 56, 256) 1024 res2b_branch2c[0][0] \n",
|
| 527 |
+
"__________________________________________________________________________________________________\n",
|
| 528 |
+
"add_146 (Add) (None, 56, 56, 256) 0 bn2b_branch2c[0][0] \n",
|
| 529 |
+
" activation_445[0][0] \n",
|
| 530 |
+
"__________________________________________________________________________________________________\n",
|
| 531 |
+
"activation_448 (Activation) (None, 56, 56, 256) 0 add_146[0][0] \n",
|
| 532 |
+
"__________________________________________________________________________________________________\n",
|
| 533 |
+
"res2c_branch2a (Conv2D) (None, 56, 56, 64) 16448 activation_448[0][0] \n",
|
| 534 |
+
"__________________________________________________________________________________________________\n",
|
| 535 |
+
"bn2c_branch2a (BatchNormalizati (None, 56, 56, 64) 256 res2c_branch2a[0][0] \n",
|
| 536 |
+
"__________________________________________________________________________________________________\n",
|
| 537 |
+
"activation_449 (Activation) (None, 56, 56, 64) 0 bn2c_branch2a[0][0] \n",
|
| 538 |
+
"__________________________________________________________________________________________________\n",
|
| 539 |
+
"res2c_branch2b (Conv2D) (None, 56, 56, 64) 36928 activation_449[0][0] \n",
|
| 540 |
+
"__________________________________________________________________________________________________\n",
|
| 541 |
+
"bn2c_branch2b (BatchNormalizati (None, 56, 56, 64) 256 res2c_branch2b[0][0] \n",
|
| 542 |
+
"__________________________________________________________________________________________________\n",
|
| 543 |
+
"activation_450 (Activation) (None, 56, 56, 64) 0 bn2c_branch2b[0][0] \n",
|
| 544 |
+
"__________________________________________________________________________________________________\n",
|
| 545 |
+
"res2c_branch2c (Conv2D) (None, 56, 56, 256) 16640 activation_450[0][0] \n",
|
| 546 |
+
"__________________________________________________________________________________________________\n",
|
| 547 |
+
"bn2c_branch2c (BatchNormalizati (None, 56, 56, 256) 1024 res2c_branch2c[0][0] \n",
|
| 548 |
+
"__________________________________________________________________________________________________\n",
|
| 549 |
+
"add_147 (Add) (None, 56, 56, 256) 0 bn2c_branch2c[0][0] \n",
|
| 550 |
+
" activation_448[0][0] \n",
|
| 551 |
+
"__________________________________________________________________________________________________\n",
|
| 552 |
+
"activation_451 (Activation) (None, 56, 56, 256) 0 add_147[0][0] \n",
|
| 553 |
+
"__________________________________________________________________________________________________\n",
|
| 554 |
+
"res3a_branch2a (Conv2D) (None, 28, 28, 128) 32896 activation_451[0][0] \n",
|
| 555 |
+
"__________________________________________________________________________________________________\n",
|
| 556 |
+
"bn3a_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3a_branch2a[0][0] \n",
|
| 557 |
+
"__________________________________________________________________________________________________\n",
|
| 558 |
+
"activation_452 (Activation) (None, 28, 28, 128) 0 bn3a_branch2a[0][0] \n",
|
| 559 |
+
"__________________________________________________________________________________________________\n",
|
| 560 |
+
"res3a_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_452[0][0] \n",
|
| 561 |
+
"__________________________________________________________________________________________________\n",
|
| 562 |
+
"bn3a_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3a_branch2b[0][0] \n",
|
| 563 |
+
"__________________________________________________________________________________________________\n",
|
| 564 |
+
"activation_453 (Activation) (None, 28, 28, 128) 0 bn3a_branch2b[0][0] \n",
|
| 565 |
+
"__________________________________________________________________________________________________\n",
|
| 566 |
+
"res3a_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_453[0][0] \n",
|
| 567 |
+
"__________________________________________________________________________________________________\n",
|
| 568 |
+
"res3a_branch1 (Conv2D) (None, 28, 28, 512) 131584 activation_451[0][0] \n",
|
| 569 |
+
"__________________________________________________________________________________________________\n",
|
| 570 |
+
"bn3a_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3a_branch2c[0][0] \n",
|
| 571 |
+
"__________________________________________________________________________________________________\n",
|
| 572 |
+
"bn3a_branch1 (BatchNormalizatio (None, 28, 28, 512) 2048 res3a_branch1[0][0] \n",
|
| 573 |
+
"__________________________________________________________________________________________________\n",
|
| 574 |
+
"add_148 (Add) (None, 28, 28, 512) 0 bn3a_branch2c[0][0] \n",
|
| 575 |
+
" bn3a_branch1[0][0] \n",
|
| 576 |
+
"__________________________________________________________________________________________________\n",
|
| 577 |
+
"activation_454 (Activation) (None, 28, 28, 512) 0 add_148[0][0] \n",
|
| 578 |
+
"__________________________________________________________________________________________________\n",
|
| 579 |
+
"res3b_branch2a (Conv2D) (None, 28, 28, 128) 65664 activation_454[0][0] \n",
|
| 580 |
+
"__________________________________________________________________________________________________\n",
|
| 581 |
+
"bn3b_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3b_branch2a[0][0] \n",
|
| 582 |
+
"__________________________________________________________________________________________________\n",
|
| 583 |
+
"activation_455 (Activation) (None, 28, 28, 128) 0 bn3b_branch2a[0][0] \n",
|
| 584 |
+
"__________________________________________________________________________________________________\n",
|
| 585 |
+
"res3b_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_455[0][0] \n",
|
| 586 |
+
"__________________________________________________________________________________________________\n",
|
| 587 |
+
"bn3b_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3b_branch2b[0][0] \n",
|
| 588 |
+
"__________________________________________________________________________________________________\n",
|
| 589 |
+
"activation_456 (Activation) (None, 28, 28, 128) 0 bn3b_branch2b[0][0] \n",
|
| 590 |
+
"__________________________________________________________________________________________________\n",
|
| 591 |
+
"res3b_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_456[0][0] \n",
|
| 592 |
+
"__________________________________________________________________________________________________\n",
|
| 593 |
+
"bn3b_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3b_branch2c[0][0] \n",
|
| 594 |
+
"__________________________________________________________________________________________________\n",
|
| 595 |
+
"add_149 (Add) (None, 28, 28, 512) 0 bn3b_branch2c[0][0] \n",
|
| 596 |
+
" activation_454[0][0] \n",
|
| 597 |
+
"__________________________________________________________________________________________________\n",
|
| 598 |
+
"activation_457 (Activation) (None, 28, 28, 512) 0 add_149[0][0] \n",
|
| 599 |
+
"__________________________________________________________________________________________________\n",
|
| 600 |
+
"res3c_branch2a (Conv2D) (None, 28, 28, 128) 65664 activation_457[0][0] \n",
|
| 601 |
+
"__________________________________________________________________________________________________\n",
|
| 602 |
+
"bn3c_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3c_branch2a[0][0] \n",
|
| 603 |
+
"__________________________________________________________________________________________________\n",
|
| 604 |
+
"activation_458 (Activation) (None, 28, 28, 128) 0 bn3c_branch2a[0][0] \n",
|
| 605 |
+
"__________________________________________________________________________________________________\n",
|
| 606 |
+
"res3c_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_458[0][0] \n",
|
| 607 |
+
"__________________________________________________________________________________________________\n",
|
| 608 |
+
"bn3c_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3c_branch2b[0][0] \n",
|
| 609 |
+
"__________________________________________________________________________________________________\n",
|
| 610 |
+
"activation_459 (Activation) (None, 28, 28, 128) 0 bn3c_branch2b[0][0] \n",
|
| 611 |
+
"__________________________________________________________________________________________________\n",
|
| 612 |
+
"res3c_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_459[0][0] \n",
|
| 613 |
+
"__________________________________________________________________________________________________\n",
|
| 614 |
+
"bn3c_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3c_branch2c[0][0] \n",
|
| 615 |
+
"__________________________________________________________________________________________________\n",
|
| 616 |
+
"add_150 (Add) (None, 28, 28, 512) 0 bn3c_branch2c[0][0] \n",
|
| 617 |
+
" activation_457[0][0] \n",
|
| 618 |
+
"__________________________________________________________________________________________________\n",
|
| 619 |
+
"activation_460 (Activation) (None, 28, 28, 512) 0 add_150[0][0] \n",
|
| 620 |
+
"__________________________________________________________________________________________________\n",
|
| 621 |
+
"res3d_branch2a (Conv2D) (None, 28, 28, 128) 65664 activation_460[0][0] \n",
|
| 622 |
+
"__________________________________________________________________________________________________\n",
|
| 623 |
+
"bn3d_branch2a (BatchNormalizati (None, 28, 28, 128) 512 res3d_branch2a[0][0] \n",
|
| 624 |
+
"__________________________________________________________________________________________________\n",
|
| 625 |
+
"activation_461 (Activation) (None, 28, 28, 128) 0 bn3d_branch2a[0][0] \n",
|
| 626 |
+
"__________________________________________________________________________________________________\n",
|
| 627 |
+
"res3d_branch2b (Conv2D) (None, 28, 28, 128) 147584 activation_461[0][0] \n",
|
| 628 |
+
"__________________________________________________________________________________________________\n",
|
| 629 |
+
"bn3d_branch2b (BatchNormalizati (None, 28, 28, 128) 512 res3d_branch2b[0][0] \n",
|
| 630 |
+
"__________________________________________________________________________________________________\n",
|
| 631 |
+
"activation_462 (Activation) (None, 28, 28, 128) 0 bn3d_branch2b[0][0] \n",
|
| 632 |
+
"__________________________________________________________________________________________________\n",
|
| 633 |
+
"res3d_branch2c (Conv2D) (None, 28, 28, 512) 66048 activation_462[0][0] \n",
|
| 634 |
+
"__________________________________________________________________________________________________\n",
|
| 635 |
+
"bn3d_branch2c (BatchNormalizati (None, 28, 28, 512) 2048 res3d_branch2c[0][0] \n",
|
| 636 |
+
"__________________________________________________________________________________________________\n",
|
| 637 |
+
"add_151 (Add) (None, 28, 28, 512) 0 bn3d_branch2c[0][0] \n",
|
| 638 |
+
" activation_460[0][0] \n",
|
| 639 |
+
"__________________________________________________________________________________________________\n",
|
| 640 |
+
"activation_463 (Activation) (None, 28, 28, 512) 0 add_151[0][0] \n",
|
| 641 |
+
"__________________________________________________________________________________________________\n",
|
| 642 |
+
"res4a_branch2a (Conv2D) (None, 14, 14, 256) 131328 activation_463[0][0] \n",
|
| 643 |
+
"__________________________________________________________________________________________________\n",
|
| 644 |
+
"bn4a_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4a_branch2a[0][0] \n",
|
| 645 |
+
"__________________________________________________________________________________________________\n",
|
| 646 |
+
"activation_464 (Activation) (None, 14, 14, 256) 0 bn4a_branch2a[0][0] \n",
|
| 647 |
+
"__________________________________________________________________________________________________\n",
|
| 648 |
+
"res4a_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_464[0][0] \n",
|
| 649 |
+
"__________________________________________________________________________________________________\n",
|
| 650 |
+
"bn4a_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4a_branch2b[0][0] \n",
|
| 651 |
+
"__________________________________________________________________________________________________\n",
|
| 652 |
+
"activation_465 (Activation) (None, 14, 14, 256) 0 bn4a_branch2b[0][0] \n",
|
| 653 |
+
"__________________________________________________________________________________________________\n",
|
| 654 |
+
"res4a_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_465[0][0] \n",
|
| 655 |
+
"__________________________________________________________________________________________________\n",
|
| 656 |
+
"res4a_branch1 (Conv2D) (None, 14, 14, 1024) 525312 activation_463[0][0] \n",
|
| 657 |
+
"__________________________________________________________________________________________________\n",
|
| 658 |
+
"bn4a_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4a_branch2c[0][0] \n",
|
| 659 |
+
"__________________________________________________________________________________________________\n",
|
| 660 |
+
"bn4a_branch1 (BatchNormalizatio (None, 14, 14, 1024) 4096 res4a_branch1[0][0] \n",
|
| 661 |
+
"__________________________________________________________________________________________________\n",
|
| 662 |
+
"add_152 (Add) (None, 14, 14, 1024) 0 bn4a_branch2c[0][0] \n",
|
| 663 |
+
" bn4a_branch1[0][0] \n",
|
| 664 |
+
"__________________________________________________________________________________________________\n",
|
| 665 |
+
"activation_466 (Activation) (None, 14, 14, 1024) 0 add_152[0][0] \n",
|
| 666 |
+
"__________________________________________________________________________________________________\n",
|
| 667 |
+
"res4b_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_466[0][0] \n",
|
| 668 |
+
"__________________________________________________________________________________________________\n",
|
| 669 |
+
"bn4b_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4b_branch2a[0][0] \n",
|
| 670 |
+
"__________________________________________________________________________________________________\n",
|
| 671 |
+
"activation_467 (Activation) (None, 14, 14, 256) 0 bn4b_branch2a[0][0] \n",
|
| 672 |
+
"__________________________________________________________________________________________________\n",
|
| 673 |
+
"res4b_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_467[0][0] \n",
|
| 674 |
+
"__________________________________________________________________________________________________\n",
|
| 675 |
+
"bn4b_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4b_branch2b[0][0] \n",
|
| 676 |
+
"__________________________________________________________________________________________________\n",
|
| 677 |
+
"activation_468 (Activation) (None, 14, 14, 256) 0 bn4b_branch2b[0][0] \n",
|
| 678 |
+
"__________________________________________________________________________________________________\n",
|
| 679 |
+
"res4b_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_468[0][0] \n",
|
| 680 |
+
"__________________________________________________________________________________________________\n",
|
| 681 |
+
"bn4b_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4b_branch2c[0][0] \n",
|
| 682 |
+
"__________________________________________________________________________________________________\n",
|
| 683 |
+
"add_153 (Add) (None, 14, 14, 1024) 0 bn4b_branch2c[0][0] \n",
|
| 684 |
+
" activation_466[0][0] \n",
|
| 685 |
+
"__________________________________________________________________________________________________\n",
|
| 686 |
+
"activation_469 (Activation) (None, 14, 14, 1024) 0 add_153[0][0] \n",
|
| 687 |
+
"__________________________________________________________________________________________________\n",
|
| 688 |
+
"res4c_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_469[0][0] \n",
|
| 689 |
+
"__________________________________________________________________________________________________\n",
|
| 690 |
+
"bn4c_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4c_branch2a[0][0] \n",
|
| 691 |
+
"__________________________________________________________________________________________________\n",
|
| 692 |
+
"activation_470 (Activation) (None, 14, 14, 256) 0 bn4c_branch2a[0][0] \n",
|
| 693 |
+
"__________________________________________________________________________________________________\n",
|
| 694 |
+
"res4c_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_470[0][0] \n",
|
| 695 |
+
"__________________________________________________________________________________________________\n",
|
| 696 |
+
"bn4c_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4c_branch2b[0][0] \n",
|
| 697 |
+
"__________________________________________________________________________________________________\n",
|
| 698 |
+
"activation_471 (Activation) (None, 14, 14, 256) 0 bn4c_branch2b[0][0] \n",
|
| 699 |
+
"__________________________________________________________________________________________________\n",
|
| 700 |
+
"res4c_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_471[0][0] \n",
|
| 701 |
+
"__________________________________________________________________________________________________\n",
|
| 702 |
+
"bn4c_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4c_branch2c[0][0] \n",
|
| 703 |
+
"__________________________________________________________________________________________________\n",
|
| 704 |
+
"add_154 (Add) (None, 14, 14, 1024) 0 bn4c_branch2c[0][0] \n",
|
| 705 |
+
" activation_469[0][0] \n",
|
| 706 |
+
"__________________________________________________________________________________________________\n",
|
| 707 |
+
"activation_472 (Activation) (None, 14, 14, 1024) 0 add_154[0][0] \n",
|
| 708 |
+
"__________________________________________________________________________________________________\n",
|
| 709 |
+
"res4d_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_472[0][0] \n",
|
| 710 |
+
"__________________________________________________________________________________________________\n",
|
| 711 |
+
"bn4d_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4d_branch2a[0][0] \n",
|
| 712 |
+
"__________________________________________________________________________________________________\n",
|
| 713 |
+
"activation_473 (Activation) (None, 14, 14, 256) 0 bn4d_branch2a[0][0] \n",
|
| 714 |
+
"__________________________________________________________________________________________________\n",
|
| 715 |
+
"res4d_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_473[0][0] \n",
|
| 716 |
+
"__________________________________________________________________________________________________\n",
|
| 717 |
+
"bn4d_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4d_branch2b[0][0] \n",
|
| 718 |
+
"__________________________________________________________________________________________________\n",
|
| 719 |
+
"activation_474 (Activation) (None, 14, 14, 256) 0 bn4d_branch2b[0][0] \n",
|
| 720 |
+
"__________________________________________________________________________________________________\n",
|
| 721 |
+
"res4d_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_474[0][0] \n",
|
| 722 |
+
"__________________________________________________________________________________________________\n",
|
| 723 |
+
"bn4d_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4d_branch2c[0][0] \n",
|
| 724 |
+
"__________________________________________________________________________________________________\n",
|
| 725 |
+
"add_155 (Add) (None, 14, 14, 1024) 0 bn4d_branch2c[0][0] \n",
|
| 726 |
+
" activation_472[0][0] \n",
|
| 727 |
+
"__________________________________________________________________________________________________\n",
|
| 728 |
+
"activation_475 (Activation) (None, 14, 14, 1024) 0 add_155[0][0] \n",
|
| 729 |
+
"__________________________________________________________________________________________________\n",
|
| 730 |
+
"res4e_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_475[0][0] \n",
|
| 731 |
+
"__________________________________________________________________________________________________\n",
|
| 732 |
+
"bn4e_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4e_branch2a[0][0] \n",
|
| 733 |
+
"__________________________________________________________________________________________________\n",
|
| 734 |
+
"activation_476 (Activation) (None, 14, 14, 256) 0 bn4e_branch2a[0][0] \n",
|
| 735 |
+
"__________________________________________________________________________________________________\n",
|
| 736 |
+
"res4e_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_476[0][0] \n",
|
| 737 |
+
"__________________________________________________________________________________________________\n",
|
| 738 |
+
"bn4e_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4e_branch2b[0][0] \n",
|
| 739 |
+
"__________________________________________________________________________________________________\n",
|
| 740 |
+
"activation_477 (Activation) (None, 14, 14, 256) 0 bn4e_branch2b[0][0] \n",
|
| 741 |
+
"__________________________________________________________________________________________________\n",
|
| 742 |
+
"res4e_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_477[0][0] \n",
|
| 743 |
+
"__________________________________________________________________________________________________\n",
|
| 744 |
+
"bn4e_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4e_branch2c[0][0] \n",
|
| 745 |
+
"__________________________________________________________________________________________________\n",
|
| 746 |
+
"add_156 (Add) (None, 14, 14, 1024) 0 bn4e_branch2c[0][0] \n",
|
| 747 |
+
" activation_475[0][0] \n",
|
| 748 |
+
"__________________________________________________________________________________________________\n",
|
| 749 |
+
"activation_478 (Activation) (None, 14, 14, 1024) 0 add_156[0][0] \n",
|
| 750 |
+
"__________________________________________________________________________________________________\n",
|
| 751 |
+
"res4f_branch2a (Conv2D) (None, 14, 14, 256) 262400 activation_478[0][0] \n",
|
| 752 |
+
"__________________________________________________________________________________________________\n",
|
| 753 |
+
"bn4f_branch2a (BatchNormalizati (None, 14, 14, 256) 1024 res4f_branch2a[0][0] \n",
|
| 754 |
+
"__________________________________________________________________________________________________\n",
|
| 755 |
+
"activation_479 (Activation) (None, 14, 14, 256) 0 bn4f_branch2a[0][0] \n",
|
| 756 |
+
"__________________________________________________________________________________________________\n",
|
| 757 |
+
"res4f_branch2b (Conv2D) (None, 14, 14, 256) 590080 activation_479[0][0] \n",
|
| 758 |
+
"__________________________________________________________________________________________________\n",
|
| 759 |
+
"bn4f_branch2b (BatchNormalizati (None, 14, 14, 256) 1024 res4f_branch2b[0][0] \n",
|
| 760 |
+
"__________________________________________________________________________________________________\n",
|
| 761 |
+
"activation_480 (Activation) (None, 14, 14, 256) 0 bn4f_branch2b[0][0] \n",
|
| 762 |
+
"__________________________________________________________________________________________________\n",
|
| 763 |
+
"res4f_branch2c (Conv2D) (None, 14, 14, 1024) 263168 activation_480[0][0] \n",
|
| 764 |
+
"__________________________________________________________________________________________________\n",
|
| 765 |
+
"bn4f_branch2c (BatchNormalizati (None, 14, 14, 1024) 4096 res4f_branch2c[0][0] \n",
|
| 766 |
+
"__________________________________________________________________________________________________\n",
|
| 767 |
+
"add_157 (Add) (None, 14, 14, 1024) 0 bn4f_branch2c[0][0] \n",
|
| 768 |
+
" activation_478[0][0] \n",
|
| 769 |
+
"__________________________________________________________________________________________________\n",
|
| 770 |
+
"activation_481 (Activation) (None, 14, 14, 1024) 0 add_157[0][0] \n",
|
| 771 |
+
"__________________________________________________________________________________________________\n",
|
| 772 |
+
"res5a_branch2a (Conv2D) (None, 7, 7, 512) 524800 activation_481[0][0] \n",
|
| 773 |
+
"__________________________________________________________________________________________________\n",
|
| 774 |
+
"bn5a_branch2a (BatchNormalizati (None, 7, 7, 512) 2048 res5a_branch2a[0][0] \n",
|
| 775 |
+
"__________________________________________________________________________________________________\n",
|
| 776 |
+
"activation_482 (Activation) (None, 7, 7, 512) 0 bn5a_branch2a[0][0] \n",
|
| 777 |
+
"__________________________________________________________________________________________________\n",
|
| 778 |
+
"res5a_branch2b (Conv2D) (None, 7, 7, 512) 2359808 activation_482[0][0] \n",
|
| 779 |
+
"__________________________________________________________________________________________________\n",
|
| 780 |
+
"bn5a_branch2b (BatchNormalizati (None, 7, 7, 512) 2048 res5a_branch2b[0][0] \n",
|
| 781 |
+
"__________________________________________________________________________________________________\n",
|
| 782 |
+
"activation_483 (Activation) (None, 7, 7, 512) 0 bn5a_branch2b[0][0] \n",
|
| 783 |
+
"__________________________________________________________________________________________________\n",
|
| 784 |
+
"res5a_branch2c (Conv2D) (None, 7, 7, 2048) 1050624 activation_483[0][0] \n",
|
| 785 |
+
"__________________________________________________________________________________________________\n",
|
| 786 |
+
"res5a_branch1 (Conv2D) (None, 7, 7, 2048) 2099200 activation_481[0][0] \n",
|
| 787 |
+
"__________________________________________________________________________________________________\n",
|
| 788 |
+
"bn5a_branch2c (BatchNormalizati (None, 7, 7, 2048) 8192 res5a_branch2c[0][0] \n",
|
| 789 |
+
"__________________________________________________________________________________________________\n",
|
| 790 |
+
"bn5a_branch1 (BatchNormalizatio (None, 7, 7, 2048) 8192 res5a_branch1[0][0] \n",
|
| 791 |
+
"__________________________________________________________________________________________________\n",
|
| 792 |
+
"add_158 (Add) (None, 7, 7, 2048) 0 bn5a_branch2c[0][0] \n",
|
| 793 |
+
" bn5a_branch1[0][0] \n",
|
| 794 |
+
"__________________________________________________________________________________________________\n",
|
| 795 |
+
"activation_484 (Activation) (None, 7, 7, 2048) 0 add_158[0][0] \n",
|
| 796 |
+
"__________________________________________________________________________________________________\n",
|
| 797 |
+
"res5b_branch2a (Conv2D) (None, 7, 7, 512) 1049088 activation_484[0][0] \n",
|
| 798 |
+
"__________________________________________________________________________________________________\n",
|
| 799 |
+
"bn5b_branch2a (BatchNormalizati (None, 7, 7, 512) 2048 res5b_branch2a[0][0] \n",
|
| 800 |
+
"__________________________________________________________________________________________________\n",
|
| 801 |
+
"activation_485 (Activation) (None, 7, 7, 512) 0 bn5b_branch2a[0][0] \n",
|
| 802 |
+
"__________________________________________________________________________________________________\n",
|
| 803 |
+
"res5b_branch2b (Conv2D) (None, 7, 7, 512) 2359808 activation_485[0][0] \n",
|
| 804 |
+
"__________________________________________________________________________________________________\n",
|
| 805 |
+
"bn5b_branch2b (BatchNormalizati (None, 7, 7, 512) 2048 res5b_branch2b[0][0] \n",
|
| 806 |
+
"__________________________________________________________________________________________________\n",
|
| 807 |
+
"activation_486 (Activation) (None, 7, 7, 512) 0 bn5b_branch2b[0][0] \n",
|
| 808 |
+
"__________________________________________________________________________________________________\n",
|
| 809 |
+
"res5b_branch2c (Conv2D) (None, 7, 7, 2048) 1050624 activation_486[0][0] \n",
|
| 810 |
+
"__________________________________________________________________________________________________\n",
|
| 811 |
+
"bn5b_branch2c (BatchNormalizati (None, 7, 7, 2048) 8192 res5b_branch2c[0][0] \n"
|
| 812 |
+
]
|
| 813 |
+
},
|
| 814 |
+
{
|
| 815 |
+
"name": "stdout",
|
| 816 |
+
"output_type": "stream",
|
| 817 |
+
"text": [
|
| 818 |
+
"__________________________________________________________________________________________________\n",
|
| 819 |
+
"add_159 (Add) (None, 7, 7, 2048) 0 bn5b_branch2c[0][0] \n",
|
| 820 |
+
" activation_484[0][0] \n",
|
| 821 |
+
"__________________________________________________________________________________________________\n",
|
| 822 |
+
"activation_487 (Activation) (None, 7, 7, 2048) 0 add_159[0][0] \n",
|
| 823 |
+
"__________________________________________________________________________________________________\n",
|
| 824 |
+
"res5c_branch2a (Conv2D) (None, 7, 7, 512) 1049088 activation_487[0][0] \n",
|
| 825 |
+
"__________________________________________________________________________________________________\n",
|
| 826 |
+
"bn5c_branch2a (BatchNormalizati (None, 7, 7, 512) 2048 res5c_branch2a[0][0] \n",
|
| 827 |
+
"__________________________________________________________________________________________________\n",
|
| 828 |
+
"activation_488 (Activation) (None, 7, 7, 512) 0 bn5c_branch2a[0][0] \n",
|
| 829 |
+
"__________________________________________________________________________________________________\n",
|
| 830 |
+
"res5c_branch2b (Conv2D) (None, 7, 7, 512) 2359808 activation_488[0][0] \n",
|
| 831 |
+
"__________________________________________________________________________________________________\n",
|
| 832 |
+
"bn5c_branch2b (BatchNormalizati (None, 7, 7, 512) 2048 res5c_branch2b[0][0] \n",
|
| 833 |
+
"__________________________________________________________________________________________________\n",
|
| 834 |
+
"activation_489 (Activation) (None, 7, 7, 512) 0 bn5c_branch2b[0][0] \n",
|
| 835 |
+
"__________________________________________________________________________________________________\n",
|
| 836 |
+
"res5c_branch2c (Conv2D) (None, 7, 7, 2048) 1050624 activation_489[0][0] \n",
|
| 837 |
+
"__________________________________________________________________________________________________\n",
|
| 838 |
+
"bn5c_branch2c (BatchNormalizati (None, 7, 7, 2048) 8192 res5c_branch2c[0][0] \n",
|
| 839 |
+
"__________________________________________________________________________________________________\n",
|
| 840 |
+
"add_160 (Add) (None, 7, 7, 2048) 0 bn5c_branch2c[0][0] \n",
|
| 841 |
+
" activation_487[0][0] \n",
|
| 842 |
+
"__________________________________________________________________________________________________\n",
|
| 843 |
+
"activation_490 (Activation) (None, 7, 7, 2048) 0 add_160[0][0] \n",
|
| 844 |
+
"__________________________________________________________________________________________________\n",
|
| 845 |
+
"global_average_pooling2d_8 (Glo (None, 2048) 0 activation_490[0][0] \n",
|
| 846 |
+
"__________________________________________________________________________________________________\n",
|
| 847 |
+
"dense_19 (Dense) (None, 256) 524544 global_average_pooling2d_8[0][0] \n",
|
| 848 |
+
"__________________________________________________________________________________________________\n",
|
| 849 |
+
"dropout_13 (Dropout) (None, 256) 0 dense_19[0][0] \n",
|
| 850 |
+
"__________________________________________________________________________________________________\n",
|
| 851 |
+
"dense_20 (Dense) (None, 128) 32896 dropout_13[0][0] \n",
|
| 852 |
+
"__________________________________________________________________________________________________\n",
|
| 853 |
+
"dropout_14 (Dropout) (None, 128) 0 dense_20[0][0] \n",
|
| 854 |
+
"__________________________________________________________________________________________________\n",
|
| 855 |
+
"dense_21 (Dense) (None, 64) 8256 dropout_14[0][0] \n",
|
| 856 |
+
"__________________________________________________________________________________________________\n",
|
| 857 |
+
"dropout_15 (Dropout) (None, 64) 0 dense_21[0][0] \n",
|
| 858 |
+
"__________________________________________________________________________________________________\n",
|
| 859 |
+
"dense_22 (Dense) (None, 2) 130 dropout_15[0][0] \n",
|
| 860 |
+
"==================================================================================================\n",
|
| 861 |
+
"Total params: 24,153,538\n",
|
| 862 |
+
"Trainable params: 565,826\n",
|
| 863 |
+
"Non-trainable params: 23,587,712\n",
|
| 864 |
+
"__________________________________________________________________________________________________\n"
|
| 865 |
+
]
|
| 866 |
+
}
|
| 867 |
+
],
|
| 868 |
+
"source": [
|
| 869 |
+
"model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n",
|
| 870 |
+
"model.summary()"
|
| 871 |
+
]
|
| 872 |
+
},
|
| 873 |
+
{
|
| 874 |
+
"cell_type": "code",
|
| 875 |
+
"execution_count": 73,
|
| 876 |
+
"metadata": {},
|
| 877 |
+
"outputs": [],
|
| 878 |
+
"source": [
|
| 879 |
+
"# adam = Adam(lr = 0.00003)\n",
|
| 880 |
+
"# model.compile(loss='categorical_crossentropy',optimizer = adam, metrics = ['accuracy'])"
|
| 881 |
+
]
|
| 882 |
+
},
|
| 883 |
+
{
|
| 884 |
+
"cell_type": "code",
|
| 885 |
+
"execution_count": 74,
|
| 886 |
+
"metadata": {},
|
| 887 |
+
"outputs": [],
|
| 888 |
+
"source": [
|
| 889 |
+
"\n",
|
| 890 |
+
"data_generator = ImageDataGenerator(rescale = 1./255,\n",
|
| 891 |
+
" shear_range = 0.2,\n",
|
| 892 |
+
" zoom_range = 0.1,\n",
|
| 893 |
+
" rotation_range = 90,\n",
|
| 894 |
+
" brightness_range = [1.0,1.5],\n",
|
| 895 |
+
" horizontal_flip = True,\n",
|
| 896 |
+
" validation_split=0.2,\n",
|
| 897 |
+
" fill_mode=\"nearest\",\n",
|
| 898 |
+
" preprocessing_function=preprocess_input)\n",
|
| 899 |
+
"valAug = ImageDataGenerator(rescale = 1./255,preprocessing_function=preprocess_input)\n",
|
| 900 |
+
"\n",
|
| 901 |
+
" \n",
|
| 902 |
+
"\n",
|
| 903 |
+
" "
|
| 904 |
+
]
|
| 905 |
+
},
|
| 906 |
+
{
|
| 907 |
+
"cell_type": "code",
|
| 908 |
+
"execution_count": 75,
|
| 909 |
+
"metadata": {},
|
| 910 |
+
"outputs": [
|
| 911 |
+
{
|
| 912 |
+
"name": "stdout",
|
| 913 |
+
"output_type": "stream",
|
| 914 |
+
"text": [
|
| 915 |
+
"Found 934 images belonging to 2 classes.\n",
|
| 916 |
+
"Found 350 images belonging to 2 classes.\n"
|
| 917 |
+
]
|
| 918 |
+
}
|
| 919 |
+
],
|
| 920 |
+
"source": [
|
| 921 |
+
"\n",
|
| 922 |
+
"\n",
|
| 923 |
+
"train_generator = data_generator.flow_from_directory(\n",
|
| 924 |
+
" './breast-histopathology-images/8867/', # this is the target directory\n",
|
| 925 |
+
" target_size=(224, 224), # all images will be resized to 300x300\n",
|
| 926 |
+
" batch_size=32,\n",
|
| 927 |
+
" seed = 42,\n",
|
| 928 |
+
" shuffle = True,\n",
|
| 929 |
+
" class_mode='categorical') # since we use binary_crossentropy loss, we need binary labels\n",
|
| 930 |
+
"\n",
|
| 931 |
+
"# this is a similar generator, for validation data\n",
|
| 932 |
+
"validation_generator = valAug.flow_from_directory(\n",
|
| 933 |
+
" './breast-histopathology-images/8914/',\n",
|
| 934 |
+
" target_size=(224, 224),\n",
|
| 935 |
+
" batch_size=32,\n",
|
| 936 |
+
" seed = 42,\n",
|
| 937 |
+
" shuffle = True,\n",
|
| 938 |
+
" class_mode='categorical')\n"
|
| 939 |
+
]
|
| 940 |
+
},
|
| 941 |
+
{
|
| 942 |
+
"cell_type": "code",
|
| 943 |
+
"execution_count": 76,
|
| 944 |
+
"metadata": {},
|
| 945 |
+
"outputs": [],
|
| 946 |
+
"source": [
|
| 947 |
+
"# learn_control = ReduceLROnPlateau(monitor='val_acc', patience=5)\n",
|
| 948 |
+
"\n",
|
| 949 |
+
"# # Checkpoint\n",
|
| 950 |
+
"# filepath=\"bests.hdf5\"\n",
|
| 951 |
+
"# checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1, save_best_only=True, mode='max')\n",
|
| 952 |
+
"# from keras.callbacks import EarlyStopping, ModelCheckpoint\n",
|
| 953 |
+
"\n",
|
| 954 |
+
"# es_callback = EarlyStopping(monitor='val_acc', patience=5, mode='max')\n",
|
| 955 |
+
"# mc_callback = ModelCheckpoint(filepath='resbestweight.h5', monitor='val_acc', save_best_only=True, mode='max')\n",
|
| 956 |
+
"es_callback = keras.callbacks.EarlyStopping(monitor='val_loss', patience=3)\n"
|
| 957 |
+
]
|
| 958 |
+
},
|
| 959 |
+
{
|
| 960 |
+
"cell_type": "code",
|
| 961 |
+
"execution_count": null,
|
| 962 |
+
"metadata": {},
|
| 963 |
+
"outputs": [
|
| 964 |
+
{
|
| 965 |
+
"name": "stdout",
|
| 966 |
+
"output_type": "stream",
|
| 967 |
+
"text": [
|
| 968 |
+
"Epoch 1/15\n"
|
| 969 |
+
]
|
| 970 |
+
}
|
| 971 |
+
],
|
| 972 |
+
"source": [
|
| 973 |
+
"# TRAINING\n",
|
| 974 |
+
"\n",
|
| 975 |
+
"hist = model.fit_generator(\n",
|
| 976 |
+
" train_generator,\n",
|
| 977 |
+
" steps_per_epoch= 50,\n",
|
| 978 |
+
" epochs=15,\n",
|
| 979 |
+
" validation_data=validation_generator,\n",
|
| 980 |
+
" validation_steps = 50,\n",
|
| 981 |
+
" verbose = 2,\n",
|
| 982 |
+
" callbacks=[es_callback]\n",
|
| 983 |
+
")\n",
|
| 984 |
+
"\n"
|
| 985 |
+
]
|
| 986 |
+
},
|
| 987 |
+
{
|
| 988 |
+
"cell_type": "code",
|
| 989 |
+
"execution_count": null,
|
| 990 |
+
"metadata": {},
|
| 991 |
+
"outputs": [],
|
| 992 |
+
"source": [
|
| 993 |
+
"import matplotlib.pyplot as plt\n",
|
| 994 |
+
"acc = hist.history['accuracy']\n",
|
| 995 |
+
"val_acc = hist.history['val_accuracy']\n",
|
| 996 |
+
"loss = hist.history['loss']\n",
|
| 997 |
+
"val_loss = hist.history['val_loss']"
|
| 998 |
+
]
|
| 999 |
+
},
|
| 1000 |
+
{
|
| 1001 |
+
"cell_type": "code",
|
| 1002 |
+
"execution_count": null,
|
| 1003 |
+
"metadata": {},
|
| 1004 |
+
"outputs": [],
|
| 1005 |
+
"source": [
|
| 1006 |
+
"plt.plot(acc,label='accuracy')\n",
|
| 1007 |
+
"plt.plot(val_acc,label='val_acc')\n",
|
| 1008 |
+
"plt.legend()\n",
|
| 1009 |
+
"plt.show()\n"
|
| 1010 |
+
]
|
| 1011 |
+
},
|
| 1012 |
+
{
|
| 1013 |
+
"cell_type": "code",
|
| 1014 |
+
"execution_count": null,
|
| 1015 |
+
"metadata": {},
|
| 1016 |
+
"outputs": [],
|
| 1017 |
+
"source": [
|
| 1018 |
+
"plt.plot(loss,label='loss')\n",
|
| 1019 |
+
"plt.plot(val_loss,label= 'val_loss')\n",
|
| 1020 |
+
"plt.legend()\n",
|
| 1021 |
+
"plt.show()"
|
| 1022 |
+
]
|
| 1023 |
+
},
|
| 1024 |
+
{
|
| 1025 |
+
"cell_type": "code",
|
| 1026 |
+
"execution_count": null,
|
| 1027 |
+
"metadata": {},
|
| 1028 |
+
"outputs": [],
|
| 1029 |
+
"source": []
|
| 1030 |
+
},
|
| 1031 |
+
{
|
| 1032 |
+
"cell_type": "code",
|
| 1033 |
+
"execution_count": null,
|
| 1034 |
+
"metadata": {},
|
| 1035 |
+
"outputs": [],
|
| 1036 |
+
"source": []
|
| 1037 |
+
}
|
| 1038 |
+
],
|
| 1039 |
+
"metadata": {
|
| 1040 |
+
"kernelspec": {
|
| 1041 |
+
"display_name": "Python 3",
|
| 1042 |
+
"language": "python",
|
| 1043 |
+
"name": "python3"
|
| 1044 |
+
},
|
| 1045 |
+
"language_info": {
|
| 1046 |
+
"codemirror_mode": {
|
| 1047 |
+
"name": "ipython",
|
| 1048 |
+
"version": 3
|
| 1049 |
+
},
|
| 1050 |
+
"file_extension": ".py",
|
| 1051 |
+
"mimetype": "text/x-python",
|
| 1052 |
+
"name": "python",
|
| 1053 |
+
"nbconvert_exporter": "python",
|
| 1054 |
+
"pygments_lexer": "ipython3",
|
| 1055 |
+
"version": "3.7.3"
|
| 1056 |
+
}
|
| 1057 |
+
},
|
| 1058 |
+
"nbformat": 4,
|
| 1059 |
+
"nbformat_minor": 2
|
| 1060 |
+
}
|
VGG 16.ipynb
ADDED
|
@@ -0,0 +1,1219 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": 1,
|
| 6 |
+
"metadata": {},
|
| 7 |
+
"outputs": [
|
| 8 |
+
{
|
| 9 |
+
"name": "stderr",
|
| 10 |
+
"output_type": "stream",
|
| 11 |
+
"text": [
|
| 12 |
+
"Using TensorFlow backend.\n",
|
| 13 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\framework\\dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 14 |
+
" _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
|
| 15 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\framework\\dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 16 |
+
" _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
|
| 17 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\framework\\dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 18 |
+
" _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
|
| 19 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\framework\\dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 20 |
+
" _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
|
| 21 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\framework\\dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 22 |
+
" _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
|
| 23 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\framework\\dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 24 |
+
" np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n",
|
| 25 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 26 |
+
" _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
|
| 27 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 28 |
+
" _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
|
| 29 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 30 |
+
" _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
|
| 31 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 32 |
+
" _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
|
| 33 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 34 |
+
" _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
|
| 35 |
+
"C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
|
| 36 |
+
" np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n"
|
| 37 |
+
]
|
| 38 |
+
}
|
| 39 |
+
],
|
| 40 |
+
"source": [
|
| 41 |
+
"import numpy as np\n",
|
| 42 |
+
"from keras.preprocessing.image import ImageDataGenerator\n",
|
| 43 |
+
"from keras.models import Sequential\n",
|
| 44 |
+
"from keras.layers import Dropout, Flatten, Dense\n",
|
| 45 |
+
"from keras import applications"
|
| 46 |
+
]
|
| 47 |
+
},
|
| 48 |
+
{
|
| 49 |
+
"cell_type": "code",
|
| 50 |
+
"execution_count": 2,
|
| 51 |
+
"metadata": {},
|
| 52 |
+
"outputs": [],
|
| 53 |
+
"source": [
|
| 54 |
+
"img_width, img_height = 50, 50\n",
|
| 55 |
+
"\n",
|
| 56 |
+
"top_model_weights_path = 'bottleneck_fc_model.h5'\n",
|
| 57 |
+
"train_data_dir = './breast-histopathology-images/8867/'\n",
|
| 58 |
+
"validation_data_dir = './breast-histopathology-images/8914/',\n",
|
| 59 |
+
"nb_train_samples = 1422\n",
|
| 60 |
+
"nb_validation_samples = 800\n",
|
| 61 |
+
"epochs = 10\n",
|
| 62 |
+
"batch_size = 16"
|
| 63 |
+
]
|
| 64 |
+
},
|
| 65 |
+
{
|
| 66 |
+
"cell_type": "code",
|
| 67 |
+
"execution_count": 3,
|
| 68 |
+
"metadata": {},
|
| 69 |
+
"outputs": [
|
| 70 |
+
{
|
| 71 |
+
"name": "stdout",
|
| 72 |
+
"output_type": "stream",
|
| 73 |
+
"text": [
|
| 74 |
+
"WARNING:tensorflow:From C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\keras\\backend\\tensorflow_backend.py:4070: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.\n",
|
| 75 |
+
"\n",
|
| 76 |
+
"Found 1422 images belonging to 2 classes.\n",
|
| 77 |
+
"WARNING:tensorflow:From C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\keras\\backend\\tensorflow_backend.py:422: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
|
| 78 |
+
"\n",
|
| 79 |
+
"Found 800 images belonging to 2 classes.\n"
|
| 80 |
+
]
|
| 81 |
+
}
|
| 82 |
+
],
|
| 83 |
+
"source": [
|
| 84 |
+
"datagen = ImageDataGenerator(rescale=1. / 255)\n",
|
| 85 |
+
"\n",
|
| 86 |
+
" # build the VGG16 network\n",
|
| 87 |
+
"model = applications.VGG16(include_top=False, weights='imagenet')\n",
|
| 88 |
+
"\n",
|
| 89 |
+
"generator = datagen.flow_from_directory(\n",
|
| 90 |
+
" './breast-histopathology-images/8867/',\n",
|
| 91 |
+
" target_size=(img_width, img_height),\n",
|
| 92 |
+
" batch_size=batch_size,\n",
|
| 93 |
+
" class_mode=None,\n",
|
| 94 |
+
" shuffle=False)\n",
|
| 95 |
+
"bottleneck_features_train = model.predict_generator(\n",
|
| 96 |
+
" generator, nb_train_samples / batch_size)\n",
|
| 97 |
+
"np.save(open('bottleneck_features_trains.npy', 'wb'),\n",
|
| 98 |
+
" bottleneck_features_train)\n",
|
| 99 |
+
"\n",
|
| 100 |
+
"generator = datagen.flow_from_directory(\n",
|
| 101 |
+
" './breast-histopathology-images/8914/',\n",
|
| 102 |
+
" target_size=(img_width, img_height),\n",
|
| 103 |
+
" batch_size=batch_size,\n",
|
| 104 |
+
" class_mode=None,\n",
|
| 105 |
+
" shuffle=False)\n",
|
| 106 |
+
"bottleneck_features_validation = model.predict_generator(\n",
|
| 107 |
+
" generator, nb_validation_samples / batch_size)\n",
|
| 108 |
+
"np.save(open('bottleneck_features_validations.npy', 'wb'),\n",
|
| 109 |
+
" bottleneck_features_validation)\n",
|
| 110 |
+
"\n"
|
| 111 |
+
]
|
| 112 |
+
},
|
| 113 |
+
{
|
| 114 |
+
"cell_type": "code",
|
| 115 |
+
"execution_count": 4,
|
| 116 |
+
"metadata": {},
|
| 117 |
+
"outputs": [
|
| 118 |
+
{
|
| 119 |
+
"name": "stdout",
|
| 120 |
+
"output_type": "stream",
|
| 121 |
+
"text": [
|
| 122 |
+
"WARNING:tensorflow:From C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\ops\\nn_impl.py:180: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
|
| 123 |
+
"Instructions for updating:\n",
|
| 124 |
+
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
|
| 125 |
+
"Train on 1422 samples, validate on 800 samples\n",
|
| 126 |
+
"Epoch 1/10\n",
|
| 127 |
+
"1422/1422 [==============================] - 2s 1ms/step - loss: 0.6112 - accuracy: 0.6765 - val_loss: 0.6054 - val_accuracy: 0.6438\n",
|
| 128 |
+
"Epoch 2/10\n",
|
| 129 |
+
"1422/1422 [==============================] - 1s 539us/step - loss: 0.5067 - accuracy: 0.7475 - val_loss: 0.5923 - val_accuracy: 0.6675\n",
|
| 130 |
+
"Epoch 3/10\n",
|
| 131 |
+
"1422/1422 [==============================] - 1s 615us/step - loss: 0.4823 - accuracy: 0.7743 - val_loss: 0.6882 - val_accuracy: 0.6662\n",
|
| 132 |
+
"Epoch 4/10\n",
|
| 133 |
+
"1422/1422 [==============================] - 1s 604us/step - loss: 0.4645 - accuracy: 0.7771 - val_loss: 0.6441 - val_accuracy: 0.6862\n",
|
| 134 |
+
"Epoch 5/10\n",
|
| 135 |
+
"1422/1422 [==============================] - 1s 521us/step - loss: 0.4567 - accuracy: 0.7813 - val_loss: 0.6563 - val_accuracy: 0.6787\n",
|
| 136 |
+
"Epoch 6/10\n",
|
| 137 |
+
"1422/1422 [==============================] - 1s 573us/step - loss: 0.4429 - accuracy: 0.7925 - val_loss: 0.6073 - val_accuracy: 0.6975\n",
|
| 138 |
+
"Epoch 7/10\n",
|
| 139 |
+
"1422/1422 [==============================] - 1s 645us/step - loss: 0.4331 - accuracy: 0.7975 - val_loss: 0.6667 - val_accuracy: 0.6963\n",
|
| 140 |
+
"Epoch 8/10\n",
|
| 141 |
+
"1422/1422 [==============================] - 1s 641us/step - loss: 0.4287 - accuracy: 0.8031 - val_loss: 0.6444 - val_accuracy: 0.7050\n",
|
| 142 |
+
"Epoch 9/10\n",
|
| 143 |
+
"1422/1422 [==============================] - 1s 445us/step - loss: 0.4130 - accuracy: 0.8024 - val_loss: 0.6698 - val_accuracy: 0.6900\n",
|
| 144 |
+
"Epoch 10/10\n",
|
| 145 |
+
"1422/1422 [==============================] - 0s 279us/step - loss: 0.4027 - accuracy: 0.8059 - val_loss: 0.6730 - val_accuracy: 0.7025\n"
|
| 146 |
+
]
|
| 147 |
+
}
|
| 148 |
+
],
|
| 149 |
+
"source": [
|
| 150 |
+
"train_data = np.load(open('bottleneck_features_trains.npy','rb'))\n",
|
| 151 |
+
"train_labels = np.array(\n",
|
| 152 |
+
" [0] * int(nb_train_samples / 2) + [1] * int(nb_train_samples / 2))\n",
|
| 153 |
+
"\n",
|
| 154 |
+
"validation_data = np.load(open('bottleneck_features_validations.npy','rb'))\n",
|
| 155 |
+
"validation_labels = np.array(\n",
|
| 156 |
+
" [0] * int(nb_validation_samples / 2) + [1] * int(nb_validation_samples / 2))\n",
|
| 157 |
+
"\n",
|
| 158 |
+
"model = Sequential()\n",
|
| 159 |
+
"model.add(Flatten(input_shape=train_data.shape[1:]))\n",
|
| 160 |
+
"model.add(Dense(256, activation='relu'))\n",
|
| 161 |
+
"model.add(Dropout(0.5))\n",
|
| 162 |
+
"model.add(Dense(1, activation='sigmoid'))\n",
|
| 163 |
+
"\n",
|
| 164 |
+
"model.compile(optimizer='rmsprop',\n",
|
| 165 |
+
" loss='binary_crossentropy', metrics=['accuracy'])\n",
|
| 166 |
+
"\n",
|
| 167 |
+
"hist = model.fit(train_data, train_labels,\n",
|
| 168 |
+
" epochs=10,\n",
|
| 169 |
+
" batch_size=batch_size,\n",
|
| 170 |
+
" validation_data=(validation_data, validation_labels))\n",
|
| 171 |
+
"# model.save_weights(top_model_weights_path)\n"
|
| 172 |
+
]
|
| 173 |
+
},
|
| 174 |
+
{
|
| 175 |
+
"cell_type": "code",
|
| 176 |
+
"execution_count": 5,
|
| 177 |
+
"metadata": {},
|
| 178 |
+
"outputs": [],
|
| 179 |
+
"source": [
|
| 180 |
+
"import matplotlib.pyplot as plt\n",
|
| 181 |
+
"acc = hist.history['accuracy']\n",
|
| 182 |
+
"val_acc = hist.history['val_accuracy']\n",
|
| 183 |
+
"loss = hist.history['loss']\n",
|
| 184 |
+
"val_loss = hist.history['val_loss']"
|
| 185 |
+
]
|
| 186 |
+
},
|
| 187 |
+
{
|
| 188 |
+
"cell_type": "code",
|
| 189 |
+
"execution_count": 6,
|
| 190 |
+
"metadata": {
|
| 191 |
+
"scrolled": true
|
| 192 |
+
},
|
| 193 |
+
"outputs": [
|
| 194 |
+
{
|
| 195 |
+
"data": {
|
| 196 |
+
"image/png": "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\n",
|
| 197 |
+
"text/plain": [
|
| 198 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 199 |
+
]
|
| 200 |
+
},
|
| 201 |
+
"metadata": {
|
| 202 |
+
"needs_background": "light"
|
| 203 |
+
},
|
| 204 |
+
"output_type": "display_data"
|
| 205 |
+
}
|
| 206 |
+
],
|
| 207 |
+
"source": [
|
| 208 |
+
"plt.plot(acc,label='accuracy')\n",
|
| 209 |
+
"plt.plot(val_acc,label='val_acc')\n",
|
| 210 |
+
"plt.legend()\n",
|
| 211 |
+
"plt.show()"
|
| 212 |
+
]
|
| 213 |
+
},
|
| 214 |
+
{
|
| 215 |
+
"cell_type": "code",
|
| 216 |
+
"execution_count": 7,
|
| 217 |
+
"metadata": {},
|
| 218 |
+
"outputs": [
|
| 219 |
+
{
|
| 220 |
+
"data": {
|
| 221 |
+
"image/png": "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\n",
|
| 222 |
+
"text/plain": [
|
| 223 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 224 |
+
]
|
| 225 |
+
},
|
| 226 |
+
"metadata": {
|
| 227 |
+
"needs_background": "light"
|
| 228 |
+
},
|
| 229 |
+
"output_type": "display_data"
|
| 230 |
+
}
|
| 231 |
+
],
|
| 232 |
+
"source": [
|
| 233 |
+
"plt.plot(loss,label='loss')\n",
|
| 234 |
+
"plt.plot(val_loss,label= 'val_loss')\n",
|
| 235 |
+
"plt.legend()\n",
|
| 236 |
+
"plt.show()"
|
| 237 |
+
]
|
| 238 |
+
},
|
| 239 |
+
{
|
| 240 |
+
"cell_type": "code",
|
| 241 |
+
"execution_count": 8,
|
| 242 |
+
"metadata": {},
|
| 243 |
+
"outputs": [
|
| 244 |
+
{
|
| 245 |
+
"name": "stdout",
|
| 246 |
+
"output_type": "stream",
|
| 247 |
+
"text": [
|
| 248 |
+
"[[0.]\n",
|
| 249 |
+
" [0.]\n",
|
| 250 |
+
" [0.]\n",
|
| 251 |
+
" [0.]\n",
|
| 252 |
+
" [0.]\n",
|
| 253 |
+
" [0.]\n",
|
| 254 |
+
" [0.]\n",
|
| 255 |
+
" [0.]\n",
|
| 256 |
+
" [0.]\n",
|
| 257 |
+
" [0.]\n",
|
| 258 |
+
" [0.]\n",
|
| 259 |
+
" [0.]\n",
|
| 260 |
+
" [0.]\n",
|
| 261 |
+
" [0.]\n",
|
| 262 |
+
" [0.]\n",
|
| 263 |
+
" [1.]\n",
|
| 264 |
+
" [0.]\n",
|
| 265 |
+
" [0.]\n",
|
| 266 |
+
" [0.]\n",
|
| 267 |
+
" [1.]\n",
|
| 268 |
+
" [0.]\n",
|
| 269 |
+
" [0.]\n",
|
| 270 |
+
" [0.]\n",
|
| 271 |
+
" [0.]\n",
|
| 272 |
+
" [1.]\n",
|
| 273 |
+
" [1.]\n",
|
| 274 |
+
" [0.]\n",
|
| 275 |
+
" [0.]\n",
|
| 276 |
+
" [0.]\n",
|
| 277 |
+
" [0.]\n",
|
| 278 |
+
" [0.]\n",
|
| 279 |
+
" [0.]\n",
|
| 280 |
+
" [0.]\n",
|
| 281 |
+
" [1.]\n",
|
| 282 |
+
" [0.]\n",
|
| 283 |
+
" [0.]\n",
|
| 284 |
+
" [0.]\n",
|
| 285 |
+
" [0.]\n",
|
| 286 |
+
" [0.]\n",
|
| 287 |
+
" [0.]\n",
|
| 288 |
+
" [0.]\n",
|
| 289 |
+
" [1.]\n",
|
| 290 |
+
" [0.]\n",
|
| 291 |
+
" [0.]\n",
|
| 292 |
+
" [0.]\n",
|
| 293 |
+
" [0.]\n",
|
| 294 |
+
" [1.]\n",
|
| 295 |
+
" [0.]\n",
|
| 296 |
+
" [0.]\n",
|
| 297 |
+
" [0.]\n",
|
| 298 |
+
" [1.]\n",
|
| 299 |
+
" [0.]\n",
|
| 300 |
+
" [0.]\n",
|
| 301 |
+
" [0.]\n",
|
| 302 |
+
" [0.]\n",
|
| 303 |
+
" [0.]\n",
|
| 304 |
+
" [0.]\n",
|
| 305 |
+
" [1.]\n",
|
| 306 |
+
" [1.]\n",
|
| 307 |
+
" [0.]\n",
|
| 308 |
+
" [0.]\n",
|
| 309 |
+
" [1.]\n",
|
| 310 |
+
" [1.]\n",
|
| 311 |
+
" [0.]\n",
|
| 312 |
+
" [0.]\n",
|
| 313 |
+
" [1.]\n",
|
| 314 |
+
" [0.]\n",
|
| 315 |
+
" [0.]\n",
|
| 316 |
+
" [1.]\n",
|
| 317 |
+
" [0.]\n",
|
| 318 |
+
" [0.]\n",
|
| 319 |
+
" [0.]\n",
|
| 320 |
+
" [0.]\n",
|
| 321 |
+
" [0.]\n",
|
| 322 |
+
" [0.]\n",
|
| 323 |
+
" [1.]\n",
|
| 324 |
+
" [0.]\n",
|
| 325 |
+
" [1.]\n",
|
| 326 |
+
" [0.]\n",
|
| 327 |
+
" [0.]\n",
|
| 328 |
+
" [0.]\n",
|
| 329 |
+
" [0.]\n",
|
| 330 |
+
" [1.]\n",
|
| 331 |
+
" [0.]\n",
|
| 332 |
+
" [0.]\n",
|
| 333 |
+
" [0.]\n",
|
| 334 |
+
" [0.]\n",
|
| 335 |
+
" [0.]\n",
|
| 336 |
+
" [1.]\n",
|
| 337 |
+
" [0.]\n",
|
| 338 |
+
" [0.]\n",
|
| 339 |
+
" [0.]\n",
|
| 340 |
+
" [0.]\n",
|
| 341 |
+
" [0.]\n",
|
| 342 |
+
" [0.]\n",
|
| 343 |
+
" [0.]\n",
|
| 344 |
+
" [0.]\n",
|
| 345 |
+
" [0.]\n",
|
| 346 |
+
" [0.]\n",
|
| 347 |
+
" [1.]\n",
|
| 348 |
+
" [1.]\n",
|
| 349 |
+
" [1.]\n",
|
| 350 |
+
" [1.]\n",
|
| 351 |
+
" [0.]\n",
|
| 352 |
+
" [1.]\n",
|
| 353 |
+
" [1.]\n",
|
| 354 |
+
" [0.]\n",
|
| 355 |
+
" [1.]\n",
|
| 356 |
+
" [0.]\n",
|
| 357 |
+
" [0.]\n",
|
| 358 |
+
" [1.]\n",
|
| 359 |
+
" [0.]\n",
|
| 360 |
+
" [0.]\n",
|
| 361 |
+
" [0.]\n",
|
| 362 |
+
" [0.]\n",
|
| 363 |
+
" [0.]\n",
|
| 364 |
+
" [0.]\n",
|
| 365 |
+
" [0.]\n",
|
| 366 |
+
" [1.]\n",
|
| 367 |
+
" [0.]\n",
|
| 368 |
+
" [1.]\n",
|
| 369 |
+
" [0.]\n",
|
| 370 |
+
" [0.]\n",
|
| 371 |
+
" [0.]\n",
|
| 372 |
+
" [0.]\n",
|
| 373 |
+
" [0.]\n",
|
| 374 |
+
" [0.]\n",
|
| 375 |
+
" [0.]\n",
|
| 376 |
+
" [0.]\n",
|
| 377 |
+
" [1.]\n",
|
| 378 |
+
" [0.]\n",
|
| 379 |
+
" [0.]\n",
|
| 380 |
+
" [0.]\n",
|
| 381 |
+
" [0.]\n",
|
| 382 |
+
" [0.]\n",
|
| 383 |
+
" [0.]\n",
|
| 384 |
+
" [0.]\n",
|
| 385 |
+
" [0.]\n",
|
| 386 |
+
" [0.]\n",
|
| 387 |
+
" [0.]\n",
|
| 388 |
+
" [0.]\n",
|
| 389 |
+
" [0.]\n",
|
| 390 |
+
" [1.]\n",
|
| 391 |
+
" [0.]\n",
|
| 392 |
+
" [1.]\n",
|
| 393 |
+
" [0.]\n",
|
| 394 |
+
" [0.]\n",
|
| 395 |
+
" [0.]\n",
|
| 396 |
+
" [1.]\n",
|
| 397 |
+
" [0.]\n",
|
| 398 |
+
" [0.]\n",
|
| 399 |
+
" [0.]\n",
|
| 400 |
+
" [0.]\n",
|
| 401 |
+
" [1.]\n",
|
| 402 |
+
" [1.]\n",
|
| 403 |
+
" [1.]\n",
|
| 404 |
+
" [0.]\n",
|
| 405 |
+
" [0.]\n",
|
| 406 |
+
" [0.]\n",
|
| 407 |
+
" [0.]\n",
|
| 408 |
+
" [0.]\n",
|
| 409 |
+
" [1.]\n",
|
| 410 |
+
" [1.]\n",
|
| 411 |
+
" [1.]\n",
|
| 412 |
+
" [0.]\n",
|
| 413 |
+
" [0.]\n",
|
| 414 |
+
" [1.]\n",
|
| 415 |
+
" [0.]\n",
|
| 416 |
+
" [0.]\n",
|
| 417 |
+
" [1.]\n",
|
| 418 |
+
" [0.]\n",
|
| 419 |
+
" [0.]\n",
|
| 420 |
+
" [0.]\n",
|
| 421 |
+
" [0.]\n",
|
| 422 |
+
" [0.]\n",
|
| 423 |
+
" [0.]\n",
|
| 424 |
+
" [0.]\n",
|
| 425 |
+
" [0.]\n",
|
| 426 |
+
" [0.]\n",
|
| 427 |
+
" [0.]\n",
|
| 428 |
+
" [0.]\n",
|
| 429 |
+
" [0.]\n",
|
| 430 |
+
" [0.]\n",
|
| 431 |
+
" [0.]\n",
|
| 432 |
+
" [0.]\n",
|
| 433 |
+
" [0.]\n",
|
| 434 |
+
" [0.]\n",
|
| 435 |
+
" [0.]\n",
|
| 436 |
+
" [0.]\n",
|
| 437 |
+
" [0.]\n",
|
| 438 |
+
" [0.]\n",
|
| 439 |
+
" [0.]\n",
|
| 440 |
+
" [0.]\n",
|
| 441 |
+
" [0.]\n",
|
| 442 |
+
" [0.]\n",
|
| 443 |
+
" [0.]\n",
|
| 444 |
+
" [0.]\n",
|
| 445 |
+
" [1.]\n",
|
| 446 |
+
" [0.]\n",
|
| 447 |
+
" [0.]\n",
|
| 448 |
+
" [0.]\n",
|
| 449 |
+
" [0.]\n",
|
| 450 |
+
" [1.]\n",
|
| 451 |
+
" [0.]\n",
|
| 452 |
+
" [0.]\n",
|
| 453 |
+
" [1.]\n",
|
| 454 |
+
" [0.]\n",
|
| 455 |
+
" [1.]\n",
|
| 456 |
+
" [1.]\n",
|
| 457 |
+
" [0.]\n",
|
| 458 |
+
" [0.]\n",
|
| 459 |
+
" [0.]\n",
|
| 460 |
+
" [0.]\n",
|
| 461 |
+
" [0.]\n",
|
| 462 |
+
" [0.]\n",
|
| 463 |
+
" [0.]\n",
|
| 464 |
+
" [0.]\n",
|
| 465 |
+
" [0.]\n",
|
| 466 |
+
" [0.]\n",
|
| 467 |
+
" [0.]\n",
|
| 468 |
+
" [0.]\n",
|
| 469 |
+
" [0.]\n",
|
| 470 |
+
" [0.]\n",
|
| 471 |
+
" [0.]\n",
|
| 472 |
+
" [0.]\n",
|
| 473 |
+
" [0.]\n",
|
| 474 |
+
" [1.]\n",
|
| 475 |
+
" [0.]\n",
|
| 476 |
+
" [0.]\n",
|
| 477 |
+
" [1.]\n",
|
| 478 |
+
" [1.]\n",
|
| 479 |
+
" [0.]\n",
|
| 480 |
+
" [0.]\n",
|
| 481 |
+
" [0.]\n",
|
| 482 |
+
" [0.]\n",
|
| 483 |
+
" [0.]\n",
|
| 484 |
+
" [1.]\n",
|
| 485 |
+
" [0.]\n",
|
| 486 |
+
" [1.]\n",
|
| 487 |
+
" [0.]\n",
|
| 488 |
+
" [0.]\n",
|
| 489 |
+
" [0.]\n",
|
| 490 |
+
" [0.]\n",
|
| 491 |
+
" [1.]\n",
|
| 492 |
+
" [1.]\n",
|
| 493 |
+
" [1.]\n",
|
| 494 |
+
" [1.]\n",
|
| 495 |
+
" [1.]\n",
|
| 496 |
+
" [1.]\n",
|
| 497 |
+
" [1.]\n",
|
| 498 |
+
" [0.]\n",
|
| 499 |
+
" [0.]\n",
|
| 500 |
+
" [0.]\n",
|
| 501 |
+
" [0.]\n",
|
| 502 |
+
" [0.]\n",
|
| 503 |
+
" [0.]\n",
|
| 504 |
+
" [0.]\n",
|
| 505 |
+
" [1.]\n",
|
| 506 |
+
" [0.]\n",
|
| 507 |
+
" [0.]\n",
|
| 508 |
+
" [0.]\n",
|
| 509 |
+
" [0.]\n",
|
| 510 |
+
" [1.]\n",
|
| 511 |
+
" [0.]\n",
|
| 512 |
+
" [0.]\n",
|
| 513 |
+
" [0.]\n",
|
| 514 |
+
" [0.]\n",
|
| 515 |
+
" [0.]\n",
|
| 516 |
+
" [0.]\n",
|
| 517 |
+
" [0.]\n",
|
| 518 |
+
" [0.]\n",
|
| 519 |
+
" [0.]\n",
|
| 520 |
+
" [0.]\n",
|
| 521 |
+
" [0.]\n",
|
| 522 |
+
" [0.]\n",
|
| 523 |
+
" [1.]\n",
|
| 524 |
+
" [0.]\n",
|
| 525 |
+
" [0.]\n",
|
| 526 |
+
" [0.]\n",
|
| 527 |
+
" [0.]\n",
|
| 528 |
+
" [0.]\n",
|
| 529 |
+
" [0.]\n",
|
| 530 |
+
" [0.]\n",
|
| 531 |
+
" [0.]\n",
|
| 532 |
+
" [0.]\n",
|
| 533 |
+
" [0.]\n",
|
| 534 |
+
" [0.]\n",
|
| 535 |
+
" [0.]\n",
|
| 536 |
+
" [0.]\n",
|
| 537 |
+
" [0.]\n",
|
| 538 |
+
" [0.]\n",
|
| 539 |
+
" [0.]\n",
|
| 540 |
+
" [0.]\n",
|
| 541 |
+
" [0.]\n",
|
| 542 |
+
" [0.]\n",
|
| 543 |
+
" [0.]\n",
|
| 544 |
+
" [0.]\n",
|
| 545 |
+
" [0.]\n",
|
| 546 |
+
" [0.]\n",
|
| 547 |
+
" [0.]\n",
|
| 548 |
+
" [0.]\n",
|
| 549 |
+
" [0.]\n",
|
| 550 |
+
" [0.]\n",
|
| 551 |
+
" [0.]\n",
|
| 552 |
+
" [0.]\n",
|
| 553 |
+
" [0.]\n",
|
| 554 |
+
" [0.]\n",
|
| 555 |
+
" [0.]\n",
|
| 556 |
+
" [0.]\n",
|
| 557 |
+
" [0.]\n",
|
| 558 |
+
" [0.]\n",
|
| 559 |
+
" [0.]\n",
|
| 560 |
+
" [0.]\n",
|
| 561 |
+
" [0.]\n",
|
| 562 |
+
" [0.]\n",
|
| 563 |
+
" [0.]\n",
|
| 564 |
+
" [0.]\n",
|
| 565 |
+
" [0.]\n",
|
| 566 |
+
" [1.]\n",
|
| 567 |
+
" [0.]\n",
|
| 568 |
+
" [1.]\n",
|
| 569 |
+
" [0.]\n",
|
| 570 |
+
" [0.]\n",
|
| 571 |
+
" [0.]\n",
|
| 572 |
+
" [0.]\n",
|
| 573 |
+
" [0.]\n",
|
| 574 |
+
" [0.]\n",
|
| 575 |
+
" [0.]\n",
|
| 576 |
+
" [0.]\n",
|
| 577 |
+
" [0.]\n",
|
| 578 |
+
" [0.]\n",
|
| 579 |
+
" [0.]\n",
|
| 580 |
+
" [0.]\n",
|
| 581 |
+
" [0.]\n",
|
| 582 |
+
" [1.]\n",
|
| 583 |
+
" [0.]\n",
|
| 584 |
+
" [1.]\n",
|
| 585 |
+
" [0.]\n",
|
| 586 |
+
" [0.]\n",
|
| 587 |
+
" [0.]\n",
|
| 588 |
+
" [0.]\n",
|
| 589 |
+
" [0.]\n",
|
| 590 |
+
" [0.]\n",
|
| 591 |
+
" [0.]\n",
|
| 592 |
+
" [0.]\n",
|
| 593 |
+
" [0.]\n",
|
| 594 |
+
" [0.]\n",
|
| 595 |
+
" [0.]\n",
|
| 596 |
+
" [0.]\n",
|
| 597 |
+
" [1.]\n",
|
| 598 |
+
" [0.]\n",
|
| 599 |
+
" [0.]\n",
|
| 600 |
+
" [0.]\n",
|
| 601 |
+
" [0.]\n",
|
| 602 |
+
" [0.]\n",
|
| 603 |
+
" [0.]\n",
|
| 604 |
+
" [0.]\n",
|
| 605 |
+
" [0.]\n",
|
| 606 |
+
" [0.]\n",
|
| 607 |
+
" [0.]\n",
|
| 608 |
+
" [0.]\n",
|
| 609 |
+
" [0.]\n",
|
| 610 |
+
" [0.]\n",
|
| 611 |
+
" [1.]\n",
|
| 612 |
+
" [0.]\n",
|
| 613 |
+
" [0.]\n",
|
| 614 |
+
" [0.]\n",
|
| 615 |
+
" [0.]\n",
|
| 616 |
+
" [0.]\n",
|
| 617 |
+
" [0.]\n",
|
| 618 |
+
" [0.]\n",
|
| 619 |
+
" [0.]\n",
|
| 620 |
+
" [1.]\n",
|
| 621 |
+
" [0.]\n",
|
| 622 |
+
" [0.]\n",
|
| 623 |
+
" [0.]\n",
|
| 624 |
+
" [0.]\n",
|
| 625 |
+
" [0.]\n",
|
| 626 |
+
" [0.]\n",
|
| 627 |
+
" [0.]\n",
|
| 628 |
+
" [0.]\n",
|
| 629 |
+
" [0.]\n",
|
| 630 |
+
" [0.]\n",
|
| 631 |
+
" [0.]\n",
|
| 632 |
+
" [0.]\n",
|
| 633 |
+
" [0.]\n",
|
| 634 |
+
" [0.]\n",
|
| 635 |
+
" [0.]\n",
|
| 636 |
+
" [0.]\n",
|
| 637 |
+
" [0.]\n",
|
| 638 |
+
" [0.]\n",
|
| 639 |
+
" [0.]\n",
|
| 640 |
+
" [0.]\n",
|
| 641 |
+
" [0.]\n",
|
| 642 |
+
" [0.]\n",
|
| 643 |
+
" [0.]\n",
|
| 644 |
+
" [0.]\n",
|
| 645 |
+
" [0.]\n",
|
| 646 |
+
" [0.]\n",
|
| 647 |
+
" [0.]\n",
|
| 648 |
+
" [0.]\n",
|
| 649 |
+
" [0.]\n",
|
| 650 |
+
" [0.]\n",
|
| 651 |
+
" [1.]\n",
|
| 652 |
+
" [0.]\n",
|
| 653 |
+
" [0.]\n",
|
| 654 |
+
" [0.]\n",
|
| 655 |
+
" [0.]\n",
|
| 656 |
+
" [0.]\n",
|
| 657 |
+
" [0.]\n",
|
| 658 |
+
" [0.]\n",
|
| 659 |
+
" [0.]\n",
|
| 660 |
+
" [0.]\n",
|
| 661 |
+
" [0.]\n",
|
| 662 |
+
" [0.]\n",
|
| 663 |
+
" [0.]\n",
|
| 664 |
+
" [0.]\n",
|
| 665 |
+
" [0.]\n",
|
| 666 |
+
" [0.]\n",
|
| 667 |
+
" [0.]\n",
|
| 668 |
+
" [0.]\n",
|
| 669 |
+
" [0.]\n",
|
| 670 |
+
" [0.]\n",
|
| 671 |
+
" [0.]\n",
|
| 672 |
+
" [0.]\n",
|
| 673 |
+
" [0.]\n",
|
| 674 |
+
" [0.]\n",
|
| 675 |
+
" [0.]\n",
|
| 676 |
+
" [0.]\n",
|
| 677 |
+
" [0.]\n",
|
| 678 |
+
" [0.]\n",
|
| 679 |
+
" [0.]\n",
|
| 680 |
+
" [0.]\n",
|
| 681 |
+
" [0.]\n",
|
| 682 |
+
" [0.]\n",
|
| 683 |
+
" [0.]\n",
|
| 684 |
+
" [0.]\n",
|
| 685 |
+
" [0.]\n",
|
| 686 |
+
" [0.]\n",
|
| 687 |
+
" [0.]\n",
|
| 688 |
+
" [0.]\n",
|
| 689 |
+
" [0.]\n",
|
| 690 |
+
" [0.]\n",
|
| 691 |
+
" [0.]\n",
|
| 692 |
+
" [0.]\n",
|
| 693 |
+
" [0.]\n",
|
| 694 |
+
" [1.]\n",
|
| 695 |
+
" [0.]\n",
|
| 696 |
+
" [0.]\n",
|
| 697 |
+
" [0.]\n",
|
| 698 |
+
" [0.]\n",
|
| 699 |
+
" [1.]\n",
|
| 700 |
+
" [0.]\n",
|
| 701 |
+
" [0.]\n",
|
| 702 |
+
" [0.]\n",
|
| 703 |
+
" [0.]\n",
|
| 704 |
+
" [0.]\n",
|
| 705 |
+
" [0.]\n",
|
| 706 |
+
" [0.]\n",
|
| 707 |
+
" [0.]\n",
|
| 708 |
+
" [0.]\n",
|
| 709 |
+
" [0.]\n",
|
| 710 |
+
" [0.]\n",
|
| 711 |
+
" [1.]\n",
|
| 712 |
+
" [0.]\n",
|
| 713 |
+
" [0.]\n",
|
| 714 |
+
" [0.]\n",
|
| 715 |
+
" [0.]\n",
|
| 716 |
+
" [0.]\n",
|
| 717 |
+
" [0.]\n",
|
| 718 |
+
" [1.]\n",
|
| 719 |
+
" [0.]\n",
|
| 720 |
+
" [1.]\n",
|
| 721 |
+
" [0.]\n",
|
| 722 |
+
" [1.]\n",
|
| 723 |
+
" [0.]\n",
|
| 724 |
+
" [0.]\n",
|
| 725 |
+
" [0.]\n",
|
| 726 |
+
" [0.]\n",
|
| 727 |
+
" [0.]\n",
|
| 728 |
+
" [0.]\n",
|
| 729 |
+
" [0.]\n",
|
| 730 |
+
" [0.]\n",
|
| 731 |
+
" [0.]\n",
|
| 732 |
+
" [0.]\n",
|
| 733 |
+
" [0.]\n",
|
| 734 |
+
" [0.]\n",
|
| 735 |
+
" [0.]\n",
|
| 736 |
+
" [0.]\n",
|
| 737 |
+
" [1.]\n",
|
| 738 |
+
" [0.]\n",
|
| 739 |
+
" [0.]\n",
|
| 740 |
+
" [0.]\n",
|
| 741 |
+
" [0.]\n",
|
| 742 |
+
" [0.]\n",
|
| 743 |
+
" [0.]\n",
|
| 744 |
+
" [0.]\n",
|
| 745 |
+
" [0.]\n",
|
| 746 |
+
" [0.]\n",
|
| 747 |
+
" [0.]\n",
|
| 748 |
+
" [1.]\n",
|
| 749 |
+
" [0.]\n",
|
| 750 |
+
" [0.]\n",
|
| 751 |
+
" [1.]\n",
|
| 752 |
+
" [1.]\n",
|
| 753 |
+
" [1.]\n",
|
| 754 |
+
" [1.]\n",
|
| 755 |
+
" [1.]\n",
|
| 756 |
+
" [1.]\n",
|
| 757 |
+
" [0.]\n",
|
| 758 |
+
" [1.]\n",
|
| 759 |
+
" [1.]\n",
|
| 760 |
+
" [1.]\n",
|
| 761 |
+
" [1.]\n",
|
| 762 |
+
" [1.]\n",
|
| 763 |
+
" [1.]\n",
|
| 764 |
+
" [1.]\n",
|
| 765 |
+
" [0.]\n",
|
| 766 |
+
" [0.]\n",
|
| 767 |
+
" [0.]\n",
|
| 768 |
+
" [1.]\n",
|
| 769 |
+
" [1.]\n",
|
| 770 |
+
" [0.]\n",
|
| 771 |
+
" [1.]\n",
|
| 772 |
+
" [1.]\n",
|
| 773 |
+
" [0.]\n",
|
| 774 |
+
" [0.]\n",
|
| 775 |
+
" [0.]\n",
|
| 776 |
+
" [0.]\n",
|
| 777 |
+
" [0.]\n",
|
| 778 |
+
" [1.]\n",
|
| 779 |
+
" [1.]\n",
|
| 780 |
+
" [1.]\n",
|
| 781 |
+
" [1.]\n",
|
| 782 |
+
" [1.]\n",
|
| 783 |
+
" [1.]\n",
|
| 784 |
+
" [1.]\n",
|
| 785 |
+
" [0.]\n",
|
| 786 |
+
" [1.]\n",
|
| 787 |
+
" [0.]\n",
|
| 788 |
+
" [1.]\n",
|
| 789 |
+
" [1.]\n",
|
| 790 |
+
" [0.]\n",
|
| 791 |
+
" [0.]\n",
|
| 792 |
+
" [1.]\n",
|
| 793 |
+
" [1.]\n",
|
| 794 |
+
" [0.]\n",
|
| 795 |
+
" [1.]\n",
|
| 796 |
+
" [1.]\n",
|
| 797 |
+
" [1.]\n",
|
| 798 |
+
" [0.]\n",
|
| 799 |
+
" [1.]\n",
|
| 800 |
+
" [1.]\n",
|
| 801 |
+
" [1.]\n",
|
| 802 |
+
" [1.]\n",
|
| 803 |
+
" [0.]\n",
|
| 804 |
+
" [0.]\n",
|
| 805 |
+
" [0.]\n",
|
| 806 |
+
" [1.]\n",
|
| 807 |
+
" [0.]\n",
|
| 808 |
+
" [0.]\n",
|
| 809 |
+
" [0.]\n",
|
| 810 |
+
" [1.]\n",
|
| 811 |
+
" [1.]\n",
|
| 812 |
+
" [1.]\n",
|
| 813 |
+
" [0.]\n",
|
| 814 |
+
" [1.]\n",
|
| 815 |
+
" [0.]\n",
|
| 816 |
+
" [0.]\n",
|
| 817 |
+
" [1.]\n",
|
| 818 |
+
" [1.]\n",
|
| 819 |
+
" [1.]\n",
|
| 820 |
+
" [1.]\n",
|
| 821 |
+
" [0.]\n",
|
| 822 |
+
" [1.]\n",
|
| 823 |
+
" [1.]\n",
|
| 824 |
+
" [1.]\n",
|
| 825 |
+
" [1.]\n",
|
| 826 |
+
" [1.]\n",
|
| 827 |
+
" [0.]\n",
|
| 828 |
+
" [1.]\n",
|
| 829 |
+
" [1.]\n",
|
| 830 |
+
" [1.]\n",
|
| 831 |
+
" [1.]\n",
|
| 832 |
+
" [1.]\n",
|
| 833 |
+
" [1.]\n",
|
| 834 |
+
" [1.]\n",
|
| 835 |
+
" [0.]\n",
|
| 836 |
+
" [1.]\n",
|
| 837 |
+
" [1.]\n",
|
| 838 |
+
" [1.]\n",
|
| 839 |
+
" [1.]\n",
|
| 840 |
+
" [1.]\n",
|
| 841 |
+
" [1.]\n",
|
| 842 |
+
" [0.]\n",
|
| 843 |
+
" [1.]\n",
|
| 844 |
+
" [1.]\n",
|
| 845 |
+
" [1.]\n",
|
| 846 |
+
" [1.]\n",
|
| 847 |
+
" [1.]\n",
|
| 848 |
+
" [0.]\n",
|
| 849 |
+
" [1.]\n",
|
| 850 |
+
" [1.]\n",
|
| 851 |
+
" [0.]\n",
|
| 852 |
+
" [1.]\n",
|
| 853 |
+
" [1.]\n",
|
| 854 |
+
" [1.]\n",
|
| 855 |
+
" [1.]\n",
|
| 856 |
+
" [1.]\n",
|
| 857 |
+
" [0.]\n",
|
| 858 |
+
" [0.]\n",
|
| 859 |
+
" [0.]\n",
|
| 860 |
+
" [1.]\n",
|
| 861 |
+
" [1.]\n",
|
| 862 |
+
" [1.]\n",
|
| 863 |
+
" [1.]\n",
|
| 864 |
+
" [1.]\n",
|
| 865 |
+
" [1.]\n",
|
| 866 |
+
" [0.]\n",
|
| 867 |
+
" [1.]\n",
|
| 868 |
+
" [0.]\n",
|
| 869 |
+
" [0.]\n",
|
| 870 |
+
" [0.]\n",
|
| 871 |
+
" [1.]\n",
|
| 872 |
+
" [1.]\n",
|
| 873 |
+
" [1.]\n",
|
| 874 |
+
" [1.]\n",
|
| 875 |
+
" [1.]\n",
|
| 876 |
+
" [0.]\n",
|
| 877 |
+
" [0.]\n",
|
| 878 |
+
" [1.]\n",
|
| 879 |
+
" [1.]\n",
|
| 880 |
+
" [0.]\n",
|
| 881 |
+
" [1.]\n",
|
| 882 |
+
" [1.]\n",
|
| 883 |
+
" [1.]\n",
|
| 884 |
+
" [1.]\n",
|
| 885 |
+
" [1.]\n",
|
| 886 |
+
" [1.]\n",
|
| 887 |
+
" [0.]\n",
|
| 888 |
+
" [1.]\n",
|
| 889 |
+
" [1.]\n",
|
| 890 |
+
" [0.]\n",
|
| 891 |
+
" [1.]\n",
|
| 892 |
+
" [1.]\n",
|
| 893 |
+
" [0.]\n",
|
| 894 |
+
" [0.]\n",
|
| 895 |
+
" [1.]\n",
|
| 896 |
+
" [0.]\n",
|
| 897 |
+
" [0.]\n",
|
| 898 |
+
" [1.]\n",
|
| 899 |
+
" [0.]\n",
|
| 900 |
+
" [1.]\n",
|
| 901 |
+
" [1.]\n",
|
| 902 |
+
" [0.]\n",
|
| 903 |
+
" [0.]\n",
|
| 904 |
+
" [0.]\n",
|
| 905 |
+
" [0.]\n",
|
| 906 |
+
" [0.]\n",
|
| 907 |
+
" [1.]\n",
|
| 908 |
+
" [1.]\n",
|
| 909 |
+
" [1.]\n",
|
| 910 |
+
" [0.]\n",
|
| 911 |
+
" [0.]\n",
|
| 912 |
+
" [0.]\n",
|
| 913 |
+
" [0.]\n",
|
| 914 |
+
" [0.]\n",
|
| 915 |
+
" [0.]\n",
|
| 916 |
+
" [1.]\n",
|
| 917 |
+
" [1.]\n",
|
| 918 |
+
" [1.]\n",
|
| 919 |
+
" [1.]\n",
|
| 920 |
+
" [1.]\n",
|
| 921 |
+
" [1.]\n",
|
| 922 |
+
" [0.]\n",
|
| 923 |
+
" [1.]\n",
|
| 924 |
+
" [0.]\n",
|
| 925 |
+
" [0.]\n",
|
| 926 |
+
" [1.]\n",
|
| 927 |
+
" [1.]\n",
|
| 928 |
+
" [1.]\n",
|
| 929 |
+
" [0.]\n",
|
| 930 |
+
" [0.]\n",
|
| 931 |
+
" [1.]\n",
|
| 932 |
+
" [1.]\n",
|
| 933 |
+
" [1.]\n",
|
| 934 |
+
" [1.]\n",
|
| 935 |
+
" [0.]\n",
|
| 936 |
+
" [0.]\n",
|
| 937 |
+
" [0.]\n",
|
| 938 |
+
" [1.]\n",
|
| 939 |
+
" [1.]\n",
|
| 940 |
+
" [0.]\n",
|
| 941 |
+
" [1.]\n",
|
| 942 |
+
" [1.]\n",
|
| 943 |
+
" [1.]\n",
|
| 944 |
+
" [1.]\n",
|
| 945 |
+
" [1.]\n",
|
| 946 |
+
" [1.]\n",
|
| 947 |
+
" [1.]\n",
|
| 948 |
+
" [0.]\n",
|
| 949 |
+
" [1.]\n",
|
| 950 |
+
" [0.]\n",
|
| 951 |
+
" [0.]\n",
|
| 952 |
+
" [1.]\n",
|
| 953 |
+
" [1.]\n",
|
| 954 |
+
" [1.]\n",
|
| 955 |
+
" [0.]\n",
|
| 956 |
+
" [1.]\n",
|
| 957 |
+
" [1.]\n",
|
| 958 |
+
" [1.]\n",
|
| 959 |
+
" [1.]\n",
|
| 960 |
+
" [1.]\n",
|
| 961 |
+
" [1.]\n",
|
| 962 |
+
" [1.]\n",
|
| 963 |
+
" [1.]\n",
|
| 964 |
+
" [1.]\n",
|
| 965 |
+
" [1.]\n",
|
| 966 |
+
" [1.]\n",
|
| 967 |
+
" [1.]\n",
|
| 968 |
+
" [0.]\n",
|
| 969 |
+
" [0.]\n",
|
| 970 |
+
" [0.]\n",
|
| 971 |
+
" [1.]\n",
|
| 972 |
+
" [1.]\n",
|
| 973 |
+
" [0.]\n",
|
| 974 |
+
" [1.]\n",
|
| 975 |
+
" [0.]\n",
|
| 976 |
+
" [1.]\n",
|
| 977 |
+
" [1.]\n",
|
| 978 |
+
" [1.]\n",
|
| 979 |
+
" [1.]\n",
|
| 980 |
+
" [1.]\n",
|
| 981 |
+
" [1.]\n",
|
| 982 |
+
" [1.]\n",
|
| 983 |
+
" [1.]\n",
|
| 984 |
+
" [1.]\n",
|
| 985 |
+
" [1.]\n",
|
| 986 |
+
" [1.]\n",
|
| 987 |
+
" [1.]\n",
|
| 988 |
+
" [1.]\n",
|
| 989 |
+
" [1.]\n",
|
| 990 |
+
" [1.]\n",
|
| 991 |
+
" [1.]\n",
|
| 992 |
+
" [1.]\n",
|
| 993 |
+
" [1.]\n",
|
| 994 |
+
" [1.]\n",
|
| 995 |
+
" [1.]\n",
|
| 996 |
+
" [1.]\n",
|
| 997 |
+
" [1.]\n",
|
| 998 |
+
" [1.]\n",
|
| 999 |
+
" [1.]\n",
|
| 1000 |
+
" [1.]\n",
|
| 1001 |
+
" [1.]\n",
|
| 1002 |
+
" [1.]\n",
|
| 1003 |
+
" [1.]\n",
|
| 1004 |
+
" [1.]\n",
|
| 1005 |
+
" [1.]\n",
|
| 1006 |
+
" [1.]\n",
|
| 1007 |
+
" [1.]\n",
|
| 1008 |
+
" [1.]\n",
|
| 1009 |
+
" [1.]\n",
|
| 1010 |
+
" [1.]\n",
|
| 1011 |
+
" [1.]\n",
|
| 1012 |
+
" [1.]\n",
|
| 1013 |
+
" [1.]\n",
|
| 1014 |
+
" [1.]\n",
|
| 1015 |
+
" [1.]\n",
|
| 1016 |
+
" [1.]\n",
|
| 1017 |
+
" [1.]\n",
|
| 1018 |
+
" [1.]\n",
|
| 1019 |
+
" [1.]\n",
|
| 1020 |
+
" [1.]\n",
|
| 1021 |
+
" [1.]\n",
|
| 1022 |
+
" [1.]\n",
|
| 1023 |
+
" [1.]\n",
|
| 1024 |
+
" [1.]\n",
|
| 1025 |
+
" [1.]\n",
|
| 1026 |
+
" [1.]\n",
|
| 1027 |
+
" [1.]\n",
|
| 1028 |
+
" [1.]\n",
|
| 1029 |
+
" [1.]\n",
|
| 1030 |
+
" [1.]\n",
|
| 1031 |
+
" [1.]\n",
|
| 1032 |
+
" [1.]\n",
|
| 1033 |
+
" [1.]\n",
|
| 1034 |
+
" [1.]\n",
|
| 1035 |
+
" [1.]\n",
|
| 1036 |
+
" [1.]\n",
|
| 1037 |
+
" [1.]\n",
|
| 1038 |
+
" [1.]\n",
|
| 1039 |
+
" [1.]\n",
|
| 1040 |
+
" [1.]\n",
|
| 1041 |
+
" [1.]\n",
|
| 1042 |
+
" [1.]\n",
|
| 1043 |
+
" [1.]\n",
|
| 1044 |
+
" [1.]\n",
|
| 1045 |
+
" [1.]\n",
|
| 1046 |
+
" [1.]\n",
|
| 1047 |
+
" [1.]]\n"
|
| 1048 |
+
]
|
| 1049 |
+
}
|
| 1050 |
+
],
|
| 1051 |
+
"source": [
|
| 1052 |
+
"preds = np.round(model.predict(validation_data),0)\n",
|
| 1053 |
+
"print(preds)"
|
| 1054 |
+
]
|
| 1055 |
+
},
|
| 1056 |
+
{
|
| 1057 |
+
"cell_type": "code",
|
| 1058 |
+
"execution_count": 21,
|
| 1059 |
+
"metadata": {},
|
| 1060 |
+
"outputs": [
|
| 1061 |
+
{
|
| 1062 |
+
"name": "stdout",
|
| 1063 |
+
"output_type": "stream",
|
| 1064 |
+
"text": [
|
| 1065 |
+
" precision recall f1-score support\n",
|
| 1066 |
+
"\n",
|
| 1067 |
+
" noncancer 0.66 0.83 0.74 400\n",
|
| 1068 |
+
" cancer 0.77 0.57 0.66 400\n",
|
| 1069 |
+
"\n",
|
| 1070 |
+
" micro avg 0.70 0.70 0.70 800\n",
|
| 1071 |
+
" macro avg 0.72 0.70 0.70 800\n",
|
| 1072 |
+
"weighted avg 0.72 0.70 0.70 800\n",
|
| 1073 |
+
"\n"
|
| 1074 |
+
]
|
| 1075 |
+
}
|
| 1076 |
+
],
|
| 1077 |
+
"source": [
|
| 1078 |
+
"from sklearn.metrics import confusion_matrix\n",
|
| 1079 |
+
"from sklearn import metrics\n",
|
| 1080 |
+
"\n",
|
| 1081 |
+
"status = [\"noncancer\",\"cancer\"]\n",
|
| 1082 |
+
"class_metrics = metrics.classification_report(validation_labels,preds,target_names = status)\n",
|
| 1083 |
+
"print(class_metrics)"
|
| 1084 |
+
]
|
| 1085 |
+
},
|
| 1086 |
+
{
|
| 1087 |
+
"cell_type": "code",
|
| 1088 |
+
"execution_count": 16,
|
| 1089 |
+
"metadata": {},
|
| 1090 |
+
"outputs": [
|
| 1091 |
+
{
|
| 1092 |
+
"name": "stdout",
|
| 1093 |
+
"output_type": "stream",
|
| 1094 |
+
"text": [
|
| 1095 |
+
"800/800 [==============================] - 0s 43us/step\n"
|
| 1096 |
+
]
|
| 1097 |
+
},
|
| 1098 |
+
{
|
| 1099 |
+
"data": {
|
| 1100 |
+
"text/plain": [
|
| 1101 |
+
"[0.6735305505990982, 0.706250011920929]"
|
| 1102 |
+
]
|
| 1103 |
+
},
|
| 1104 |
+
"execution_count": 16,
|
| 1105 |
+
"metadata": {},
|
| 1106 |
+
"output_type": "execute_result"
|
| 1107 |
+
}
|
| 1108 |
+
],
|
| 1109 |
+
"source": [
|
| 1110 |
+
"model.evaluate(validation_data,validation_labels)"
|
| 1111 |
+
]
|
| 1112 |
+
},
|
| 1113 |
+
{
|
| 1114 |
+
"cell_type": "code",
|
| 1115 |
+
"execution_count": null,
|
| 1116 |
+
"metadata": {},
|
| 1117 |
+
"outputs": [],
|
| 1118 |
+
"source": []
|
| 1119 |
+
},
|
| 1120 |
+
{
|
| 1121 |
+
"cell_type": "code",
|
| 1122 |
+
"execution_count": null,
|
| 1123 |
+
"metadata": {},
|
| 1124 |
+
"outputs": [],
|
| 1125 |
+
"source": []
|
| 1126 |
+
},
|
| 1127 |
+
{
|
| 1128 |
+
"cell_type": "code",
|
| 1129 |
+
"execution_count": null,
|
| 1130 |
+
"metadata": {},
|
| 1131 |
+
"outputs": [],
|
| 1132 |
+
"source": []
|
| 1133 |
+
},
|
| 1134 |
+
{
|
| 1135 |
+
"cell_type": "code",
|
| 1136 |
+
"execution_count": null,
|
| 1137 |
+
"metadata": {},
|
| 1138 |
+
"outputs": [],
|
| 1139 |
+
"source": []
|
| 1140 |
+
},
|
| 1141 |
+
{
|
| 1142 |
+
"cell_type": "code",
|
| 1143 |
+
"execution_count": null,
|
| 1144 |
+
"metadata": {},
|
| 1145 |
+
"outputs": [],
|
| 1146 |
+
"source": []
|
| 1147 |
+
},
|
| 1148 |
+
{
|
| 1149 |
+
"cell_type": "code",
|
| 1150 |
+
"execution_count": null,
|
| 1151 |
+
"metadata": {},
|
| 1152 |
+
"outputs": [],
|
| 1153 |
+
"source": []
|
| 1154 |
+
},
|
| 1155 |
+
{
|
| 1156 |
+
"cell_type": "code",
|
| 1157 |
+
"execution_count": null,
|
| 1158 |
+
"metadata": {},
|
| 1159 |
+
"outputs": [],
|
| 1160 |
+
"source": []
|
| 1161 |
+
},
|
| 1162 |
+
{
|
| 1163 |
+
"cell_type": "code",
|
| 1164 |
+
"execution_count": null,
|
| 1165 |
+
"metadata": {},
|
| 1166 |
+
"outputs": [],
|
| 1167 |
+
"source": []
|
| 1168 |
+
},
|
| 1169 |
+
{
|
| 1170 |
+
"cell_type": "code",
|
| 1171 |
+
"execution_count": null,
|
| 1172 |
+
"metadata": {},
|
| 1173 |
+
"outputs": [],
|
| 1174 |
+
"source": []
|
| 1175 |
+
},
|
| 1176 |
+
{
|
| 1177 |
+
"cell_type": "code",
|
| 1178 |
+
"execution_count": null,
|
| 1179 |
+
"metadata": {},
|
| 1180 |
+
"outputs": [],
|
| 1181 |
+
"source": []
|
| 1182 |
+
},
|
| 1183 |
+
{
|
| 1184 |
+
"cell_type": "code",
|
| 1185 |
+
"execution_count": null,
|
| 1186 |
+
"metadata": {},
|
| 1187 |
+
"outputs": [],
|
| 1188 |
+
"source": []
|
| 1189 |
+
},
|
| 1190 |
+
{
|
| 1191 |
+
"cell_type": "code",
|
| 1192 |
+
"execution_count": null,
|
| 1193 |
+
"metadata": {},
|
| 1194 |
+
"outputs": [],
|
| 1195 |
+
"source": []
|
| 1196 |
+
}
|
| 1197 |
+
],
|
| 1198 |
+
"metadata": {
|
| 1199 |
+
"kernelspec": {
|
| 1200 |
+
"display_name": "Python 3",
|
| 1201 |
+
"language": "python",
|
| 1202 |
+
"name": "python3"
|
| 1203 |
+
},
|
| 1204 |
+
"language_info": {
|
| 1205 |
+
"codemirror_mode": {
|
| 1206 |
+
"name": "ipython",
|
| 1207 |
+
"version": 3
|
| 1208 |
+
},
|
| 1209 |
+
"file_extension": ".py",
|
| 1210 |
+
"mimetype": "text/x-python",
|
| 1211 |
+
"name": "python",
|
| 1212 |
+
"nbconvert_exporter": "python",
|
| 1213 |
+
"pygments_lexer": "ipython3",
|
| 1214 |
+
"version": "3.7.3"
|
| 1215 |
+
}
|
| 1216 |
+
},
|
| 1217 |
+
"nbformat": 4,
|
| 1218 |
+
"nbformat_minor": 2
|
| 1219 |
+
}
|
Xception.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
bottleneck_fc_model.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:df67e97e0eea9331b6511ea00a81c27d95d06140206f3ecfaecea9caa9d0ea0c
|
| 3 |
+
size 539316
|
bottleneck_features_trains.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:e20c8a54b2b6bab062a9ba7b77334389959cd179eb758f7eb269988238b1d766
|
| 3 |
+
size 2912384
|
bottleneck_features_validations.npy
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:5273fafb03d2e27fa954aa1903b776bd042212cb18c1b14eea49580472e4091f
|
| 3 |
+
size 1638528
|
can.png
ADDED
|
cancer detection new.ipynb
ADDED
|
@@ -0,0 +1,1404 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": 1,
|
| 6 |
+
"metadata": {},
|
| 7 |
+
"outputs": [
|
| 8 |
+
{
|
| 9 |
+
"name": "stderr",
|
| 10 |
+
"output_type": "stream",
|
| 11 |
+
"text": [
|
| 12 |
+
"Using TensorFlow backend.\n"
|
| 13 |
+
]
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"name": "stdout",
|
| 17 |
+
"output_type": "stream",
|
| 18 |
+
"text": [
|
| 19 |
+
"['cancer', 'noncancer']\n",
|
| 20 |
+
"./breast-histopathology-images/8867/cancer\n",
|
| 21 |
+
"./breast-histopathology-images/8867/noncancer\n"
|
| 22 |
+
]
|
| 23 |
+
}
|
| 24 |
+
],
|
| 25 |
+
"source": [
|
| 26 |
+
"from keras.preprocessing import image\n",
|
| 27 |
+
"import os \n",
|
| 28 |
+
"folders = os.listdir(\"./breast-histopathology-images/8867/\")\n",
|
| 29 |
+
"print(folders)\n",
|
| 30 |
+
"\n",
|
| 31 |
+
"image_data = []\n",
|
| 32 |
+
"labels = []\n",
|
| 33 |
+
"\n",
|
| 34 |
+
"\n",
|
| 35 |
+
"label_dict = {\"noncancer\":0,\"cancer\":1}\n",
|
| 36 |
+
"\n",
|
| 37 |
+
"for ix in folders:\n",
|
| 38 |
+
" path = os.path.join(\"./breast-histopathology-images/8867/\",ix)\n",
|
| 39 |
+
" print(path)\n",
|
| 40 |
+
" for im in os.listdir(path):\n",
|
| 41 |
+
" img = image.load_img(os.path.join(path,im),target_size=((224,224)))\n",
|
| 42 |
+
" img_array = image.img_to_array(img)\n",
|
| 43 |
+
" image_data.append(img_array)\n",
|
| 44 |
+
" labels.append(label_dict[ix])"
|
| 45 |
+
]
|
| 46 |
+
},
|
| 47 |
+
{
|
| 48 |
+
"cell_type": "code",
|
| 49 |
+
"execution_count": 2,
|
| 50 |
+
"metadata": {},
|
| 51 |
+
"outputs": [],
|
| 52 |
+
"source": [
|
| 53 |
+
"import random\n",
|
| 54 |
+
"import numpy as np\n",
|
| 55 |
+
"combined = list(zip(image_data,labels))\n",
|
| 56 |
+
"random.shuffle(combined)\n",
|
| 57 |
+
"\n",
|
| 58 |
+
"image_data[:],labels[:] = zip(*combined)"
|
| 59 |
+
]
|
| 60 |
+
},
|
| 61 |
+
{
|
| 62 |
+
"cell_type": "code",
|
| 63 |
+
"execution_count": 3,
|
| 64 |
+
"metadata": {},
|
| 65 |
+
"outputs": [
|
| 66 |
+
{
|
| 67 |
+
"name": "stdout",
|
| 68 |
+
"output_type": "stream",
|
| 69 |
+
"text": [
|
| 70 |
+
"[1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1]\n"
|
| 71 |
+
]
|
| 72 |
+
}
|
| 73 |
+
],
|
| 74 |
+
"source": [
|
| 75 |
+
"print(labels[:15])#First five labels"
|
| 76 |
+
]
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"cell_type": "code",
|
| 80 |
+
"execution_count": 4,
|
| 81 |
+
"metadata": {},
|
| 82 |
+
"outputs": [],
|
| 83 |
+
"source": [
|
| 84 |
+
"from keras.models import Sequential\n",
|
| 85 |
+
"from keras.layers.normalization import BatchNormalization\n",
|
| 86 |
+
"from keras.layers.convolutional import SeparableConv2D\n",
|
| 87 |
+
"from keras.layers.convolutional import MaxPooling2D\n",
|
| 88 |
+
"from keras.layers.core import Activation\n",
|
| 89 |
+
"from keras.layers.core import Flatten\n",
|
| 90 |
+
"from keras.layers.core import Dropout\n",
|
| 91 |
+
"from keras.layers.core import Dense\n",
|
| 92 |
+
"from keras.layers import *"
|
| 93 |
+
]
|
| 94 |
+
},
|
| 95 |
+
{
|
| 96 |
+
"cell_type": "code",
|
| 97 |
+
"execution_count": 5,
|
| 98 |
+
"metadata": {},
|
| 99 |
+
"outputs": [
|
| 100 |
+
{
|
| 101 |
+
"name": "stdout",
|
| 102 |
+
"output_type": "stream",
|
| 103 |
+
"text": [
|
| 104 |
+
"WARNING:tensorflow:From C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\keras\\backend\\tensorflow_backend.py:4070: The name tf.nn.max_pool is deprecated. Please use tf.nn.max_pool2d instead.\n",
|
| 105 |
+
"\n",
|
| 106 |
+
"Model: \"sequential_1\"\n",
|
| 107 |
+
"_________________________________________________________________\n",
|
| 108 |
+
"Layer (type) Output Shape Param # \n",
|
| 109 |
+
"=================================================================\n",
|
| 110 |
+
"conv2d_1 (Conv2D) (None, 48, 48, 32) 896 \n",
|
| 111 |
+
"_________________________________________________________________\n",
|
| 112 |
+
"max_pooling2d_1 (MaxPooling2 (None, 24, 24, 32) 0 \n",
|
| 113 |
+
"_________________________________________________________________\n",
|
| 114 |
+
"dropout_1 (Dropout) (None, 24, 24, 32) 0 \n",
|
| 115 |
+
"_________________________________________________________________\n",
|
| 116 |
+
"conv2d_2 (Conv2D) (None, 22, 22, 64) 18496 \n",
|
| 117 |
+
"_________________________________________________________________\n",
|
| 118 |
+
"max_pooling2d_2 (MaxPooling2 (None, 11, 11, 64) 0 \n",
|
| 119 |
+
"_________________________________________________________________\n",
|
| 120 |
+
"dropout_2 (Dropout) (None, 11, 11, 64) 0 \n",
|
| 121 |
+
"_________________________________________________________________\n",
|
| 122 |
+
"conv2d_3 (Conv2D) (None, 9, 9, 128) 73856 \n",
|
| 123 |
+
"_________________________________________________________________\n",
|
| 124 |
+
"max_pooling2d_3 (MaxPooling2 (None, 4, 4, 128) 0 \n",
|
| 125 |
+
"_________________________________________________________________\n",
|
| 126 |
+
"dropout_3 (Dropout) (None, 4, 4, 128) 0 \n",
|
| 127 |
+
"_________________________________________________________________\n",
|
| 128 |
+
"flatten_1 (Flatten) (None, 2048) 0 \n",
|
| 129 |
+
"_________________________________________________________________\n",
|
| 130 |
+
"dense_1 (Dense) (None, 256) 524544 \n",
|
| 131 |
+
"_________________________________________________________________\n",
|
| 132 |
+
"dropout_4 (Dropout) (None, 256) 0 \n",
|
| 133 |
+
"_________________________________________________________________\n",
|
| 134 |
+
"dense_2 (Dense) (None, 2) 514 \n",
|
| 135 |
+
"=================================================================\n",
|
| 136 |
+
"Total params: 618,306\n",
|
| 137 |
+
"Trainable params: 618,306\n",
|
| 138 |
+
"Non-trainable params: 0\n",
|
| 139 |
+
"_________________________________________________________________\n"
|
| 140 |
+
]
|
| 141 |
+
}
|
| 142 |
+
],
|
| 143 |
+
"source": [
|
| 144 |
+
"#CNN model\n",
|
| 145 |
+
"\n",
|
| 146 |
+
"model = Sequential()\n",
|
| 147 |
+
"model.add(Convolution2D(32,(3,3),activation='relu',input_shape = (50,50,3)))#32 filters each going to be 3*3 matrix \n",
|
| 148 |
+
"#for first we have to give input_shape\n",
|
| 149 |
+
"model.add(MaxPooling2D(2,2))\n",
|
| 150 |
+
"model.add(Dropout(0.25))\n",
|
| 151 |
+
"\n",
|
| 152 |
+
"model.add(Convolution2D(64,(3,3),activation='relu'))#For all layers we dont need to specify input shape\n",
|
| 153 |
+
"model.add(MaxPooling2D(2,2))\n",
|
| 154 |
+
"model.add(Dropout(0.25))\n",
|
| 155 |
+
"\n",
|
| 156 |
+
"model.add(Convolution2D(128,(3,3),activation='relu'))#For all layers we dont need to specify input shape\n",
|
| 157 |
+
"model.add(MaxPooling2D(2,2))\n",
|
| 158 |
+
"model.add(Dropout(0.25))\n",
|
| 159 |
+
"\n",
|
| 160 |
+
"model.add(Flatten())# its not a layer its just a reshaper function,it will make 3d volume to a linear layer\n",
|
| 161 |
+
"model.add(Dense(256,activation='relu'))\n",
|
| 162 |
+
"model.add(Dropout(0.5))\n",
|
| 163 |
+
"model.add(Dense(2,activation = 'softmax'))#dense have value of 10 which means 10 neurons so we can predict output for 10 classes \n",
|
| 164 |
+
"model.summary()\n",
|
| 165 |
+
"\n",
|
| 166 |
+
"#we increase the no. pf filter for complex images ,so we increase the depth by this"
|
| 167 |
+
]
|
| 168 |
+
},
|
| 169 |
+
{
|
| 170 |
+
"cell_type": "code",
|
| 171 |
+
"execution_count": 6,
|
| 172 |
+
"metadata": {},
|
| 173 |
+
"outputs": [
|
| 174 |
+
{
|
| 175 |
+
"name": "stdout",
|
| 176 |
+
"output_type": "stream",
|
| 177 |
+
"text": [
|
| 178 |
+
"(324, 224, 224, 3) (324,)\n"
|
| 179 |
+
]
|
| 180 |
+
}
|
| 181 |
+
],
|
| 182 |
+
"source": [
|
| 183 |
+
"X_train = np.array(image_data)\n",
|
| 184 |
+
"Y_train = np.array(labels)\n",
|
| 185 |
+
"\n",
|
| 186 |
+
"\n",
|
| 187 |
+
"print(X_train.shape,Y_train.shape)"
|
| 188 |
+
]
|
| 189 |
+
},
|
| 190 |
+
{
|
| 191 |
+
"cell_type": "code",
|
| 192 |
+
"execution_count": 7,
|
| 193 |
+
"metadata": {},
|
| 194 |
+
"outputs": [
|
| 195 |
+
{
|
| 196 |
+
"name": "stdout",
|
| 197 |
+
"output_type": "stream",
|
| 198 |
+
"text": [
|
| 199 |
+
"(324, 224, 224, 3)\n",
|
| 200 |
+
"(324, 2)\n"
|
| 201 |
+
]
|
| 202 |
+
}
|
| 203 |
+
],
|
| 204 |
+
"source": [
|
| 205 |
+
"from keras.utils import np_utils\n",
|
| 206 |
+
"\n",
|
| 207 |
+
"Y_train = np_utils.to_categorical(Y_train)\n",
|
| 208 |
+
"print(X_train.shape)\n",
|
| 209 |
+
"print(Y_train.shape)"
|
| 210 |
+
]
|
| 211 |
+
},
|
| 212 |
+
{
|
| 213 |
+
"cell_type": "code",
|
| 214 |
+
"execution_count": 8,
|
| 215 |
+
"metadata": {},
|
| 216 |
+
"outputs": [],
|
| 217 |
+
"source": [
|
| 218 |
+
"#Create the resnet 50 model\n",
|
| 219 |
+
"from keras.optimizers import Adam\n",
|
| 220 |
+
"from keras.preprocessing.image import ImageDataGenerator"
|
| 221 |
+
]
|
| 222 |
+
},
|
| 223 |
+
{
|
| 224 |
+
"cell_type": "code",
|
| 225 |
+
"execution_count": 9,
|
| 226 |
+
"metadata": {},
|
| 227 |
+
"outputs": [],
|
| 228 |
+
"source": [
|
| 229 |
+
"train_imagedata = ImageDataGenerator(\n",
|
| 230 |
+
" rescale=1./255,\n",
|
| 231 |
+
" shear_range=0.2,\n",
|
| 232 |
+
" zoom_range=0.2,\n",
|
| 233 |
+
" horizontal_flip=True)\n",
|
| 234 |
+
"\n",
|
| 235 |
+
"test_imagedata = ImageDataGenerator(rescale=1./255)"
|
| 236 |
+
]
|
| 237 |
+
},
|
| 238 |
+
{
|
| 239 |
+
"cell_type": "code",
|
| 240 |
+
"execution_count": 10,
|
| 241 |
+
"metadata": {},
|
| 242 |
+
"outputs": [
|
| 243 |
+
{
|
| 244 |
+
"name": "stdout",
|
| 245 |
+
"output_type": "stream",
|
| 246 |
+
"text": [
|
| 247 |
+
"Found 324 images belonging to 2 classes.\n",
|
| 248 |
+
"Found 150 images belonging to 2 classes.\n",
|
| 249 |
+
"Found 56 images belonging to 2 classes.\n"
|
| 250 |
+
]
|
| 251 |
+
}
|
| 252 |
+
],
|
| 253 |
+
"source": [
|
| 254 |
+
"training_set = \\\n",
|
| 255 |
+
" train_imagedata.flow_from_directory('.\\\\breast-histopathology-images\\\\8867/',shuffle = True\n",
|
| 256 |
+
" , target_size=(50, 50), batch_size=32, class_mode='categorical')\n",
|
| 257 |
+
"\n",
|
| 258 |
+
"val_set = \\\n",
|
| 259 |
+
" test_imagedata.flow_from_directory('.\\\\breast-histopathology-images\\\\8914/',shuffle = False\n",
|
| 260 |
+
" , target_size=(50, 50), batch_size=32, class_mode='categorical')\n",
|
| 261 |
+
"\n",
|
| 262 |
+
"test_set = \\\n",
|
| 263 |
+
" test_imagedata.flow_from_directory('.\\\\breast-histopathology-images\\\\8917/',shuffle = False\n",
|
| 264 |
+
" , target_size=(50, 50), batch_size=32, class_mode='categorical')\n"
|
| 265 |
+
]
|
| 266 |
+
},
|
| 267 |
+
{
|
| 268 |
+
"cell_type": "code",
|
| 269 |
+
"execution_count": 11,
|
| 270 |
+
"metadata": {},
|
| 271 |
+
"outputs": [],
|
| 272 |
+
"source": [
|
| 273 |
+
"model.compile(loss=\"binary_crossentropy\", optimizer='adam',metrics=[\"accuracy\"])\n"
|
| 274 |
+
]
|
| 275 |
+
},
|
| 276 |
+
{
|
| 277 |
+
"cell_type": "code",
|
| 278 |
+
"execution_count": 12,
|
| 279 |
+
"metadata": {},
|
| 280 |
+
"outputs": [
|
| 281 |
+
{
|
| 282 |
+
"name": "stdout",
|
| 283 |
+
"output_type": "stream",
|
| 284 |
+
"text": [
|
| 285 |
+
"WARNING:tensorflow:From C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\ops\\math_grad.py:1250: add_dispatch_support.<locals>.wrapper (from tensorflow.python.ops.array_ops) is deprecated and will be removed in a future version.\n",
|
| 286 |
+
"Instructions for updating:\n",
|
| 287 |
+
"Use tf.where in 2.0, which has the same broadcast rule as np.where\n",
|
| 288 |
+
"WARNING:tensorflow:From C:\\Users\\AVANISH SINGHAL\\AppData\\Roaming\\Python\\Python37\\site-packages\\keras\\backend\\tensorflow_backend.py:422: The name tf.global_variables is deprecated. Please use tf.compat.v1.global_variables instead.\n",
|
| 289 |
+
"\n",
|
| 290 |
+
"Epoch 1/15\n",
|
| 291 |
+
"1000/1000 [==============================] - 92s 92ms/step - loss: 0.1583 - accuracy: 0.9341 - val_loss: 0.4515 - val_accuracy: 0.7467\n",
|
| 292 |
+
"Epoch 2/15\n",
|
| 293 |
+
"1000/1000 [==============================] - 84s 84ms/step - loss: 0.0679 - accuracy: 0.9756 - val_loss: 1.8259 - val_accuracy: 0.5867\n",
|
| 294 |
+
"Epoch 3/15\n",
|
| 295 |
+
"1000/1000 [==============================] - 78s 78ms/step - loss: 0.0398 - accuracy: 0.9866 - val_loss: 2.0831 - val_accuracy: 0.5733\n",
|
| 296 |
+
"Epoch 4/15\n",
|
| 297 |
+
"1000/1000 [==============================] - 80s 80ms/step - loss: 0.1757 - accuracy: 0.9336 - val_loss: 0.3006 - val_accuracy: 0.7067\n",
|
| 298 |
+
"Epoch 5/15\n",
|
| 299 |
+
"1000/1000 [==============================] - 75s 75ms/step - loss: 0.0990 - accuracy: 0.9622 - val_loss: 0.0912 - val_accuracy: 0.7333\n",
|
| 300 |
+
"Epoch 6/15\n",
|
| 301 |
+
"1000/1000 [==============================] - 76s 76ms/step - loss: 0.0433 - accuracy: 0.9841 - val_loss: 0.6332 - val_accuracy: 0.6867\n",
|
| 302 |
+
"Epoch 7/15\n",
|
| 303 |
+
"1000/1000 [==============================] - 77s 77ms/step - loss: 0.0312 - accuracy: 0.9898 - val_loss: 0.6004 - val_accuracy: 0.6733\n",
|
| 304 |
+
"Epoch 8/15\n",
|
| 305 |
+
"1000/1000 [==============================] - 79s 79ms/step - loss: 0.0510 - accuracy: 0.9828 - val_loss: 0.2405 - val_accuracy: 0.7200\n",
|
| 306 |
+
"Epoch 9/15\n",
|
| 307 |
+
"1000/1000 [==============================] - 79s 79ms/step - loss: 0.0167 - accuracy: 0.9945 - val_loss: 1.3188 - val_accuracy: 0.6267\n",
|
| 308 |
+
"Epoch 10/15\n",
|
| 309 |
+
"1000/1000 [==============================] - 78s 78ms/step - loss: 0.0396 - accuracy: 0.9884 - val_loss: 0.2395 - val_accuracy: 0.7133\n",
|
| 310 |
+
"Epoch 11/15\n",
|
| 311 |
+
"1000/1000 [==============================] - 79s 79ms/step - loss: 0.0206 - accuracy: 0.9940 - val_loss: 0.8288 - val_accuracy: 0.7267\n",
|
| 312 |
+
"Epoch 12/15\n",
|
| 313 |
+
"1000/1000 [==============================] - 80s 80ms/step - loss: 0.0200 - accuracy: 0.9941 - val_loss: 0.3362 - val_accuracy: 0.7600\n",
|
| 314 |
+
"Epoch 13/15\n",
|
| 315 |
+
"1000/1000 [==============================] - 79s 79ms/step - loss: 0.0216 - accuracy: 0.9939 - val_loss: 0.4209 - val_accuracy: 0.7667\n",
|
| 316 |
+
"Epoch 14/15\n",
|
| 317 |
+
"1000/1000 [==============================] - 79s 79ms/step - loss: 0.0158 - accuracy: 0.9956 - val_loss: 1.2731 - val_accuracy: 0.6533\n",
|
| 318 |
+
"Epoch 15/15\n",
|
| 319 |
+
"1000/1000 [==============================] - 79s 79ms/step - loss: 0.0103 - accuracy: 0.9972 - val_loss: 0.5199 - val_accuracy: 0.7000\n"
|
| 320 |
+
]
|
| 321 |
+
}
|
| 322 |
+
],
|
| 323 |
+
"source": [
|
| 324 |
+
"history=model.fit_generator(training_set, steps_per_epoch=1000, epochs=15,\n",
|
| 325 |
+
" validation_data=val_set,\n",
|
| 326 |
+
" validation_steps=30,)"
|
| 327 |
+
]
|
| 328 |
+
},
|
| 329 |
+
{
|
| 330 |
+
"cell_type": "code",
|
| 331 |
+
"execution_count": 13,
|
| 332 |
+
"metadata": {},
|
| 333 |
+
"outputs": [],
|
| 334 |
+
"source": [
|
| 335 |
+
"import matplotlib.pyplot as plt\n",
|
| 336 |
+
"acc = history.history['accuracy']\n",
|
| 337 |
+
"val_acc = history.history['val_accuracy']\n",
|
| 338 |
+
"loss = history.history['loss']\n",
|
| 339 |
+
"val_loss = history.history['val_loss']"
|
| 340 |
+
]
|
| 341 |
+
},
|
| 342 |
+
{
|
| 343 |
+
"cell_type": "code",
|
| 344 |
+
"execution_count": 14,
|
| 345 |
+
"metadata": {},
|
| 346 |
+
"outputs": [
|
| 347 |
+
{
|
| 348 |
+
"data": {
|
| 349 |
+
"image/png": "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\n",
|
| 350 |
+
"text/plain": [
|
| 351 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 352 |
+
]
|
| 353 |
+
},
|
| 354 |
+
"metadata": {
|
| 355 |
+
"needs_background": "light"
|
| 356 |
+
},
|
| 357 |
+
"output_type": "display_data"
|
| 358 |
+
}
|
| 359 |
+
],
|
| 360 |
+
"source": [
|
| 361 |
+
"plt.plot(acc,label='accuracy')\n",
|
| 362 |
+
"plt.plot(val_acc,label='val_acc')\n",
|
| 363 |
+
"plt.legend()\n",
|
| 364 |
+
"plt.show()"
|
| 365 |
+
]
|
| 366 |
+
},
|
| 367 |
+
{
|
| 368 |
+
"cell_type": "code",
|
| 369 |
+
"execution_count": 15,
|
| 370 |
+
"metadata": {},
|
| 371 |
+
"outputs": [
|
| 372 |
+
{
|
| 373 |
+
"data": {
|
| 374 |
+
"image/png": "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\n",
|
| 375 |
+
"text/plain": [
|
| 376 |
+
"<Figure size 432x288 with 1 Axes>"
|
| 377 |
+
]
|
| 378 |
+
},
|
| 379 |
+
"metadata": {
|
| 380 |
+
"needs_background": "light"
|
| 381 |
+
},
|
| 382 |
+
"output_type": "display_data"
|
| 383 |
+
}
|
| 384 |
+
],
|
| 385 |
+
"source": [
|
| 386 |
+
"plt.plot(loss,label='loss')\n",
|
| 387 |
+
"plt.plot(val_loss,label= 'val_loss')\n",
|
| 388 |
+
"plt.legend()\n",
|
| 389 |
+
"plt.show()"
|
| 390 |
+
]
|
| 391 |
+
},
|
| 392 |
+
{
|
| 393 |
+
"cell_type": "code",
|
| 394 |
+
"execution_count": 26,
|
| 395 |
+
"metadata": {},
|
| 396 |
+
"outputs": [
|
| 397 |
+
{
|
| 398 |
+
"name": "stdout",
|
| 399 |
+
"output_type": "stream",
|
| 400 |
+
"text": [
|
| 401 |
+
"noncancer\n"
|
| 402 |
+
]
|
| 403 |
+
}
|
| 404 |
+
],
|
| 405 |
+
"source": [
|
| 406 |
+
"test_image = \\\n",
|
| 407 |
+
" image.load_img('./test/8864_idx5_x1801_y2451_class1.png',\n",
|
| 408 |
+
" target_size=(50,50))\n",
|
| 409 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 410 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 411 |
+
"result = model.predict(test_image)\n",
|
| 412 |
+
"training_set.class_indices\n",
|
| 413 |
+
"if result[0][0] == 1:\n",
|
| 414 |
+
" print('cancer')\n",
|
| 415 |
+
"else:\n",
|
| 416 |
+
" print('noncancer')"
|
| 417 |
+
]
|
| 418 |
+
},
|
| 419 |
+
{
|
| 420 |
+
"cell_type": "code",
|
| 421 |
+
"execution_count": 28,
|
| 422 |
+
"metadata": {},
|
| 423 |
+
"outputs": [
|
| 424 |
+
{
|
| 425 |
+
"name": "stdout",
|
| 426 |
+
"output_type": "stream",
|
| 427 |
+
"text": [
|
| 428 |
+
"0.0\n"
|
| 429 |
+
]
|
| 430 |
+
}
|
| 431 |
+
],
|
| 432 |
+
"source": [
|
| 433 |
+
"test_image = \\\n",
|
| 434 |
+
" image.load_img('./test/8864_idx5_x201_y2351_class0.png',\n",
|
| 435 |
+
" target_size=(50,50))\n",
|
| 436 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 437 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 438 |
+
"result = model.predict(test_image)\n",
|
| 439 |
+
"training_set.class_indices\n",
|
| 440 |
+
"print(result[0][0])"
|
| 441 |
+
]
|
| 442 |
+
},
|
| 443 |
+
{
|
| 444 |
+
"cell_type": "code",
|
| 445 |
+
"execution_count": 23,
|
| 446 |
+
"metadata": {},
|
| 447 |
+
"outputs": [
|
| 448 |
+
{
|
| 449 |
+
"name": "stdout",
|
| 450 |
+
"output_type": "stream",
|
| 451 |
+
"text": [
|
| 452 |
+
"0.0\n"
|
| 453 |
+
]
|
| 454 |
+
}
|
| 455 |
+
],
|
| 456 |
+
"source": [
|
| 457 |
+
"test_image = \\\n",
|
| 458 |
+
" image.load_img('./test/8864_idx5_x201_y2301_class0.png',\n",
|
| 459 |
+
" target_size=(50,50))\n",
|
| 460 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 461 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 462 |
+
"result = model.predict(test_image)\n",
|
| 463 |
+
"print(result[0][0])"
|
| 464 |
+
]
|
| 465 |
+
},
|
| 466 |
+
{
|
| 467 |
+
"cell_type": "code",
|
| 468 |
+
"execution_count": 24,
|
| 469 |
+
"metadata": {},
|
| 470 |
+
"outputs": [
|
| 471 |
+
{
|
| 472 |
+
"data": {
|
| 473 |
+
"text/plain": [
|
| 474 |
+
"array([1], dtype=int64)"
|
| 475 |
+
]
|
| 476 |
+
},
|
| 477 |
+
"execution_count": 24,
|
| 478 |
+
"metadata": {},
|
| 479 |
+
"output_type": "execute_result"
|
| 480 |
+
}
|
| 481 |
+
],
|
| 482 |
+
"source": [
|
| 483 |
+
"import numpy as np\n",
|
| 484 |
+
"test_image = \\\n",
|
| 485 |
+
" image.load_img('./test/8864_idx5_x51_y2201_class0.png',\n",
|
| 486 |
+
" target_size=(50,50))\n",
|
| 487 |
+
"test_image = image.img_to_array(test_image)\n",
|
| 488 |
+
"test_image = np.expand_dims(test_image,axis =0)\n",
|
| 489 |
+
"result = model.predict_classes(test_image)\n",
|
| 490 |
+
"result"
|
| 491 |
+
]
|
| 492 |
+
},
|
| 493 |
+
{
|
| 494 |
+
"cell_type": "code",
|
| 495 |
+
"execution_count": null,
|
| 496 |
+
"metadata": {},
|
| 497 |
+
"outputs": [],
|
| 498 |
+
"source": []
|
| 499 |
+
},
|
| 500 |
+
{
|
| 501 |
+
"cell_type": "code",
|
| 502 |
+
"execution_count": null,
|
| 503 |
+
"metadata": {},
|
| 504 |
+
"outputs": [],
|
| 505 |
+
"source": []
|
| 506 |
+
},
|
| 507 |
+
{
|
| 508 |
+
"cell_type": "code",
|
| 509 |
+
"execution_count": null,
|
| 510 |
+
"metadata": {},
|
| 511 |
+
"outputs": [],
|
| 512 |
+
"source": []
|
| 513 |
+
},
|
| 514 |
+
{
|
| 515 |
+
"cell_type": "code",
|
| 516 |
+
"execution_count": null,
|
| 517 |
+
"metadata": {},
|
| 518 |
+
"outputs": [],
|
| 519 |
+
"source": []
|
| 520 |
+
},
|
| 521 |
+
{
|
| 522 |
+
"cell_type": "code",
|
| 523 |
+
"execution_count": null,
|
| 524 |
+
"metadata": {},
|
| 525 |
+
"outputs": [],
|
| 526 |
+
"source": []
|
| 527 |
+
},
|
| 528 |
+
{
|
| 529 |
+
"cell_type": "code",
|
| 530 |
+
"execution_count": null,
|
| 531 |
+
"metadata": {},
|
| 532 |
+
"outputs": [],
|
| 533 |
+
"source": []
|
| 534 |
+
},
|
| 535 |
+
{
|
| 536 |
+
"cell_type": "code",
|
| 537 |
+
"execution_count": null,
|
| 538 |
+
"metadata": {},
|
| 539 |
+
"outputs": [],
|
| 540 |
+
"source": []
|
| 541 |
+
},
|
| 542 |
+
{
|
| 543 |
+
"cell_type": "code",
|
| 544 |
+
"execution_count": null,
|
| 545 |
+
"metadata": {},
|
| 546 |
+
"outputs": [],
|
| 547 |
+
"source": []
|
| 548 |
+
},
|
| 549 |
+
{
|
| 550 |
+
"cell_type": "code",
|
| 551 |
+
"execution_count": null,
|
| 552 |
+
"metadata": {},
|
| 553 |
+
"outputs": [],
|
| 554 |
+
"source": []
|
| 555 |
+
},
|
| 556 |
+
{
|
| 557 |
+
"cell_type": "code",
|
| 558 |
+
"execution_count": null,
|
| 559 |
+
"metadata": {},
|
| 560 |
+
"outputs": [],
|
| 561 |
+
"source": []
|
| 562 |
+
},
|
| 563 |
+
{
|
| 564 |
+
"cell_type": "code",
|
| 565 |
+
"execution_count": null,
|
| 566 |
+
"metadata": {},
|
| 567 |
+
"outputs": [],
|
| 568 |
+
"source": []
|
| 569 |
+
},
|
| 570 |
+
{
|
| 571 |
+
"cell_type": "code",
|
| 572 |
+
"execution_count": null,
|
| 573 |
+
"metadata": {},
|
| 574 |
+
"outputs": [],
|
| 575 |
+
"source": []
|
| 576 |
+
},
|
| 577 |
+
{
|
| 578 |
+
"cell_type": "code",
|
| 579 |
+
"execution_count": null,
|
| 580 |
+
"metadata": {},
|
| 581 |
+
"outputs": [],
|
| 582 |
+
"source": []
|
| 583 |
+
},
|
| 584 |
+
{
|
| 585 |
+
"cell_type": "code",
|
| 586 |
+
"execution_count": null,
|
| 587 |
+
"metadata": {},
|
| 588 |
+
"outputs": [],
|
| 589 |
+
"source": []
|
| 590 |
+
},
|
| 591 |
+
{
|
| 592 |
+
"cell_type": "code",
|
| 593 |
+
"execution_count": null,
|
| 594 |
+
"metadata": {},
|
| 595 |
+
"outputs": [],
|
| 596 |
+
"source": []
|
| 597 |
+
},
|
| 598 |
+
{
|
| 599 |
+
"cell_type": "code",
|
| 600 |
+
"execution_count": null,
|
| 601 |
+
"metadata": {},
|
| 602 |
+
"outputs": [],
|
| 603 |
+
"source": []
|
| 604 |
+
},
|
| 605 |
+
{
|
| 606 |
+
"cell_type": "code",
|
| 607 |
+
"execution_count": null,
|
| 608 |
+
"metadata": {},
|
| 609 |
+
"outputs": [],
|
| 610 |
+
"source": []
|
| 611 |
+
},
|
| 612 |
+
{
|
| 613 |
+
"cell_type": "code",
|
| 614 |
+
"execution_count": null,
|
| 615 |
+
"metadata": {},
|
| 616 |
+
"outputs": [],
|
| 617 |
+
"source": []
|
| 618 |
+
},
|
| 619 |
+
{
|
| 620 |
+
"cell_type": "code",
|
| 621 |
+
"execution_count": null,
|
| 622 |
+
"metadata": {},
|
| 623 |
+
"outputs": [],
|
| 624 |
+
"source": []
|
| 625 |
+
},
|
| 626 |
+
{
|
| 627 |
+
"cell_type": "code",
|
| 628 |
+
"execution_count": null,
|
| 629 |
+
"metadata": {},
|
| 630 |
+
"outputs": [],
|
| 631 |
+
"source": []
|
| 632 |
+
},
|
| 633 |
+
{
|
| 634 |
+
"cell_type": "code",
|
| 635 |
+
"execution_count": null,
|
| 636 |
+
"metadata": {},
|
| 637 |
+
"outputs": [],
|
| 638 |
+
"source": []
|
| 639 |
+
},
|
| 640 |
+
{
|
| 641 |
+
"cell_type": "code",
|
| 642 |
+
"execution_count": null,
|
| 643 |
+
"metadata": {},
|
| 644 |
+
"outputs": [],
|
| 645 |
+
"source": []
|
| 646 |
+
},
|
| 647 |
+
{
|
| 648 |
+
"cell_type": "code",
|
| 649 |
+
"execution_count": null,
|
| 650 |
+
"metadata": {},
|
| 651 |
+
"outputs": [],
|
| 652 |
+
"source": []
|
| 653 |
+
},
|
| 654 |
+
{
|
| 655 |
+
"cell_type": "code",
|
| 656 |
+
"execution_count": null,
|
| 657 |
+
"metadata": {},
|
| 658 |
+
"outputs": [],
|
| 659 |
+
"source": []
|
| 660 |
+
},
|
| 661 |
+
{
|
| 662 |
+
"cell_type": "code",
|
| 663 |
+
"execution_count": null,
|
| 664 |
+
"metadata": {},
|
| 665 |
+
"outputs": [],
|
| 666 |
+
"source": []
|
| 667 |
+
},
|
| 668 |
+
{
|
| 669 |
+
"cell_type": "code",
|
| 670 |
+
"execution_count": null,
|
| 671 |
+
"metadata": {},
|
| 672 |
+
"outputs": [],
|
| 673 |
+
"source": []
|
| 674 |
+
},
|
| 675 |
+
{
|
| 676 |
+
"cell_type": "code",
|
| 677 |
+
"execution_count": null,
|
| 678 |
+
"metadata": {},
|
| 679 |
+
"outputs": [],
|
| 680 |
+
"source": []
|
| 681 |
+
},
|
| 682 |
+
{
|
| 683 |
+
"cell_type": "code",
|
| 684 |
+
"execution_count": null,
|
| 685 |
+
"metadata": {},
|
| 686 |
+
"outputs": [],
|
| 687 |
+
"source": []
|
| 688 |
+
},
|
| 689 |
+
{
|
| 690 |
+
"cell_type": "code",
|
| 691 |
+
"execution_count": null,
|
| 692 |
+
"metadata": {},
|
| 693 |
+
"outputs": [],
|
| 694 |
+
"source": []
|
| 695 |
+
},
|
| 696 |
+
{
|
| 697 |
+
"cell_type": "code",
|
| 698 |
+
"execution_count": null,
|
| 699 |
+
"metadata": {},
|
| 700 |
+
"outputs": [],
|
| 701 |
+
"source": []
|
| 702 |
+
},
|
| 703 |
+
{
|
| 704 |
+
"cell_type": "code",
|
| 705 |
+
"execution_count": null,
|
| 706 |
+
"metadata": {},
|
| 707 |
+
"outputs": [],
|
| 708 |
+
"source": []
|
| 709 |
+
},
|
| 710 |
+
{
|
| 711 |
+
"cell_type": "code",
|
| 712 |
+
"execution_count": null,
|
| 713 |
+
"metadata": {},
|
| 714 |
+
"outputs": [],
|
| 715 |
+
"source": []
|
| 716 |
+
},
|
| 717 |
+
{
|
| 718 |
+
"cell_type": "code",
|
| 719 |
+
"execution_count": null,
|
| 720 |
+
"metadata": {},
|
| 721 |
+
"outputs": [],
|
| 722 |
+
"source": []
|
| 723 |
+
},
|
| 724 |
+
{
|
| 725 |
+
"cell_type": "code",
|
| 726 |
+
"execution_count": null,
|
| 727 |
+
"metadata": {},
|
| 728 |
+
"outputs": [],
|
| 729 |
+
"source": []
|
| 730 |
+
},
|
| 731 |
+
{
|
| 732 |
+
"cell_type": "code",
|
| 733 |
+
"execution_count": null,
|
| 734 |
+
"metadata": {},
|
| 735 |
+
"outputs": [],
|
| 736 |
+
"source": []
|
| 737 |
+
},
|
| 738 |
+
{
|
| 739 |
+
"cell_type": "code",
|
| 740 |
+
"execution_count": null,
|
| 741 |
+
"metadata": {},
|
| 742 |
+
"outputs": [],
|
| 743 |
+
"source": []
|
| 744 |
+
},
|
| 745 |
+
{
|
| 746 |
+
"cell_type": "code",
|
| 747 |
+
"execution_count": null,
|
| 748 |
+
"metadata": {},
|
| 749 |
+
"outputs": [],
|
| 750 |
+
"source": []
|
| 751 |
+
},
|
| 752 |
+
{
|
| 753 |
+
"cell_type": "code",
|
| 754 |
+
"execution_count": null,
|
| 755 |
+
"metadata": {},
|
| 756 |
+
"outputs": [],
|
| 757 |
+
"source": []
|
| 758 |
+
},
|
| 759 |
+
{
|
| 760 |
+
"cell_type": "code",
|
| 761 |
+
"execution_count": null,
|
| 762 |
+
"metadata": {},
|
| 763 |
+
"outputs": [],
|
| 764 |
+
"source": []
|
| 765 |
+
},
|
| 766 |
+
{
|
| 767 |
+
"cell_type": "code",
|
| 768 |
+
"execution_count": null,
|
| 769 |
+
"metadata": {},
|
| 770 |
+
"outputs": [],
|
| 771 |
+
"source": []
|
| 772 |
+
},
|
| 773 |
+
{
|
| 774 |
+
"cell_type": "code",
|
| 775 |
+
"execution_count": null,
|
| 776 |
+
"metadata": {},
|
| 777 |
+
"outputs": [],
|
| 778 |
+
"source": []
|
| 779 |
+
},
|
| 780 |
+
{
|
| 781 |
+
"cell_type": "code",
|
| 782 |
+
"execution_count": null,
|
| 783 |
+
"metadata": {},
|
| 784 |
+
"outputs": [],
|
| 785 |
+
"source": []
|
| 786 |
+
},
|
| 787 |
+
{
|
| 788 |
+
"cell_type": "code",
|
| 789 |
+
"execution_count": null,
|
| 790 |
+
"metadata": {},
|
| 791 |
+
"outputs": [],
|
| 792 |
+
"source": []
|
| 793 |
+
},
|
| 794 |
+
{
|
| 795 |
+
"cell_type": "code",
|
| 796 |
+
"execution_count": null,
|
| 797 |
+
"metadata": {},
|
| 798 |
+
"outputs": [],
|
| 799 |
+
"source": []
|
| 800 |
+
},
|
| 801 |
+
{
|
| 802 |
+
"cell_type": "code",
|
| 803 |
+
"execution_count": null,
|
| 804 |
+
"metadata": {},
|
| 805 |
+
"outputs": [],
|
| 806 |
+
"source": []
|
| 807 |
+
},
|
| 808 |
+
{
|
| 809 |
+
"cell_type": "code",
|
| 810 |
+
"execution_count": null,
|
| 811 |
+
"metadata": {},
|
| 812 |
+
"outputs": [],
|
| 813 |
+
"source": []
|
| 814 |
+
},
|
| 815 |
+
{
|
| 816 |
+
"cell_type": "code",
|
| 817 |
+
"execution_count": null,
|
| 818 |
+
"metadata": {},
|
| 819 |
+
"outputs": [],
|
| 820 |
+
"source": []
|
| 821 |
+
},
|
| 822 |
+
{
|
| 823 |
+
"cell_type": "code",
|
| 824 |
+
"execution_count": null,
|
| 825 |
+
"metadata": {},
|
| 826 |
+
"outputs": [],
|
| 827 |
+
"source": []
|
| 828 |
+
},
|
| 829 |
+
{
|
| 830 |
+
"cell_type": "code",
|
| 831 |
+
"execution_count": null,
|
| 832 |
+
"metadata": {},
|
| 833 |
+
"outputs": [],
|
| 834 |
+
"source": []
|
| 835 |
+
},
|
| 836 |
+
{
|
| 837 |
+
"cell_type": "code",
|
| 838 |
+
"execution_count": null,
|
| 839 |
+
"metadata": {},
|
| 840 |
+
"outputs": [],
|
| 841 |
+
"source": []
|
| 842 |
+
},
|
| 843 |
+
{
|
| 844 |
+
"cell_type": "code",
|
| 845 |
+
"execution_count": null,
|
| 846 |
+
"metadata": {},
|
| 847 |
+
"outputs": [],
|
| 848 |
+
"source": []
|
| 849 |
+
},
|
| 850 |
+
{
|
| 851 |
+
"cell_type": "code",
|
| 852 |
+
"execution_count": null,
|
| 853 |
+
"metadata": {},
|
| 854 |
+
"outputs": [],
|
| 855 |
+
"source": []
|
| 856 |
+
},
|
| 857 |
+
{
|
| 858 |
+
"cell_type": "code",
|
| 859 |
+
"execution_count": null,
|
| 860 |
+
"metadata": {},
|
| 861 |
+
"outputs": [],
|
| 862 |
+
"source": []
|
| 863 |
+
},
|
| 864 |
+
{
|
| 865 |
+
"cell_type": "code",
|
| 866 |
+
"execution_count": null,
|
| 867 |
+
"metadata": {},
|
| 868 |
+
"outputs": [],
|
| 869 |
+
"source": []
|
| 870 |
+
},
|
| 871 |
+
{
|
| 872 |
+
"cell_type": "code",
|
| 873 |
+
"execution_count": null,
|
| 874 |
+
"metadata": {},
|
| 875 |
+
"outputs": [],
|
| 876 |
+
"source": []
|
| 877 |
+
},
|
| 878 |
+
{
|
| 879 |
+
"cell_type": "code",
|
| 880 |
+
"execution_count": null,
|
| 881 |
+
"metadata": {},
|
| 882 |
+
"outputs": [],
|
| 883 |
+
"source": []
|
| 884 |
+
},
|
| 885 |
+
{
|
| 886 |
+
"cell_type": "code",
|
| 887 |
+
"execution_count": null,
|
| 888 |
+
"metadata": {},
|
| 889 |
+
"outputs": [],
|
| 890 |
+
"source": []
|
| 891 |
+
},
|
| 892 |
+
{
|
| 893 |
+
"cell_type": "code",
|
| 894 |
+
"execution_count": null,
|
| 895 |
+
"metadata": {},
|
| 896 |
+
"outputs": [],
|
| 897 |
+
"source": []
|
| 898 |
+
},
|
| 899 |
+
{
|
| 900 |
+
"cell_type": "code",
|
| 901 |
+
"execution_count": null,
|
| 902 |
+
"metadata": {},
|
| 903 |
+
"outputs": [],
|
| 904 |
+
"source": []
|
| 905 |
+
},
|
| 906 |
+
{
|
| 907 |
+
"cell_type": "code",
|
| 908 |
+
"execution_count": null,
|
| 909 |
+
"metadata": {},
|
| 910 |
+
"outputs": [],
|
| 911 |
+
"source": []
|
| 912 |
+
},
|
| 913 |
+
{
|
| 914 |
+
"cell_type": "code",
|
| 915 |
+
"execution_count": null,
|
| 916 |
+
"metadata": {},
|
| 917 |
+
"outputs": [],
|
| 918 |
+
"source": []
|
| 919 |
+
},
|
| 920 |
+
{
|
| 921 |
+
"cell_type": "code",
|
| 922 |
+
"execution_count": null,
|
| 923 |
+
"metadata": {},
|
| 924 |
+
"outputs": [],
|
| 925 |
+
"source": []
|
| 926 |
+
},
|
| 927 |
+
{
|
| 928 |
+
"cell_type": "code",
|
| 929 |
+
"execution_count": null,
|
| 930 |
+
"metadata": {},
|
| 931 |
+
"outputs": [],
|
| 932 |
+
"source": []
|
| 933 |
+
},
|
| 934 |
+
{
|
| 935 |
+
"cell_type": "code",
|
| 936 |
+
"execution_count": null,
|
| 937 |
+
"metadata": {},
|
| 938 |
+
"outputs": [],
|
| 939 |
+
"source": []
|
| 940 |
+
},
|
| 941 |
+
{
|
| 942 |
+
"cell_type": "code",
|
| 943 |
+
"execution_count": null,
|
| 944 |
+
"metadata": {},
|
| 945 |
+
"outputs": [],
|
| 946 |
+
"source": []
|
| 947 |
+
},
|
| 948 |
+
{
|
| 949 |
+
"cell_type": "code",
|
| 950 |
+
"execution_count": null,
|
| 951 |
+
"metadata": {},
|
| 952 |
+
"outputs": [],
|
| 953 |
+
"source": []
|
| 954 |
+
},
|
| 955 |
+
{
|
| 956 |
+
"cell_type": "code",
|
| 957 |
+
"execution_count": null,
|
| 958 |
+
"metadata": {},
|
| 959 |
+
"outputs": [],
|
| 960 |
+
"source": []
|
| 961 |
+
},
|
| 962 |
+
{
|
| 963 |
+
"cell_type": "code",
|
| 964 |
+
"execution_count": null,
|
| 965 |
+
"metadata": {},
|
| 966 |
+
"outputs": [],
|
| 967 |
+
"source": []
|
| 968 |
+
},
|
| 969 |
+
{
|
| 970 |
+
"cell_type": "code",
|
| 971 |
+
"execution_count": null,
|
| 972 |
+
"metadata": {},
|
| 973 |
+
"outputs": [],
|
| 974 |
+
"source": []
|
| 975 |
+
},
|
| 976 |
+
{
|
| 977 |
+
"cell_type": "code",
|
| 978 |
+
"execution_count": null,
|
| 979 |
+
"metadata": {},
|
| 980 |
+
"outputs": [],
|
| 981 |
+
"source": []
|
| 982 |
+
},
|
| 983 |
+
{
|
| 984 |
+
"cell_type": "code",
|
| 985 |
+
"execution_count": null,
|
| 986 |
+
"metadata": {},
|
| 987 |
+
"outputs": [],
|
| 988 |
+
"source": []
|
| 989 |
+
},
|
| 990 |
+
{
|
| 991 |
+
"cell_type": "code",
|
| 992 |
+
"execution_count": null,
|
| 993 |
+
"metadata": {},
|
| 994 |
+
"outputs": [],
|
| 995 |
+
"source": []
|
| 996 |
+
},
|
| 997 |
+
{
|
| 998 |
+
"cell_type": "code",
|
| 999 |
+
"execution_count": null,
|
| 1000 |
+
"metadata": {},
|
| 1001 |
+
"outputs": [],
|
| 1002 |
+
"source": []
|
| 1003 |
+
},
|
| 1004 |
+
{
|
| 1005 |
+
"cell_type": "code",
|
| 1006 |
+
"execution_count": null,
|
| 1007 |
+
"metadata": {},
|
| 1008 |
+
"outputs": [],
|
| 1009 |
+
"source": []
|
| 1010 |
+
},
|
| 1011 |
+
{
|
| 1012 |
+
"cell_type": "code",
|
| 1013 |
+
"execution_count": null,
|
| 1014 |
+
"metadata": {},
|
| 1015 |
+
"outputs": [],
|
| 1016 |
+
"source": []
|
| 1017 |
+
},
|
| 1018 |
+
{
|
| 1019 |
+
"cell_type": "code",
|
| 1020 |
+
"execution_count": null,
|
| 1021 |
+
"metadata": {},
|
| 1022 |
+
"outputs": [],
|
| 1023 |
+
"source": []
|
| 1024 |
+
},
|
| 1025 |
+
{
|
| 1026 |
+
"cell_type": "code",
|
| 1027 |
+
"execution_count": null,
|
| 1028 |
+
"metadata": {},
|
| 1029 |
+
"outputs": [],
|
| 1030 |
+
"source": []
|
| 1031 |
+
},
|
| 1032 |
+
{
|
| 1033 |
+
"cell_type": "code",
|
| 1034 |
+
"execution_count": null,
|
| 1035 |
+
"metadata": {},
|
| 1036 |
+
"outputs": [],
|
| 1037 |
+
"source": []
|
| 1038 |
+
},
|
| 1039 |
+
{
|
| 1040 |
+
"cell_type": "code",
|
| 1041 |
+
"execution_count": null,
|
| 1042 |
+
"metadata": {},
|
| 1043 |
+
"outputs": [],
|
| 1044 |
+
"source": []
|
| 1045 |
+
},
|
| 1046 |
+
{
|
| 1047 |
+
"cell_type": "code",
|
| 1048 |
+
"execution_count": null,
|
| 1049 |
+
"metadata": {},
|
| 1050 |
+
"outputs": [],
|
| 1051 |
+
"source": []
|
| 1052 |
+
},
|
| 1053 |
+
{
|
| 1054 |
+
"cell_type": "code",
|
| 1055 |
+
"execution_count": null,
|
| 1056 |
+
"metadata": {},
|
| 1057 |
+
"outputs": [],
|
| 1058 |
+
"source": []
|
| 1059 |
+
},
|
| 1060 |
+
{
|
| 1061 |
+
"cell_type": "code",
|
| 1062 |
+
"execution_count": null,
|
| 1063 |
+
"metadata": {},
|
| 1064 |
+
"outputs": [],
|
| 1065 |
+
"source": []
|
| 1066 |
+
},
|
| 1067 |
+
{
|
| 1068 |
+
"cell_type": "code",
|
| 1069 |
+
"execution_count": null,
|
| 1070 |
+
"metadata": {},
|
| 1071 |
+
"outputs": [],
|
| 1072 |
+
"source": []
|
| 1073 |
+
},
|
| 1074 |
+
{
|
| 1075 |
+
"cell_type": "code",
|
| 1076 |
+
"execution_count": null,
|
| 1077 |
+
"metadata": {},
|
| 1078 |
+
"outputs": [],
|
| 1079 |
+
"source": []
|
| 1080 |
+
},
|
| 1081 |
+
{
|
| 1082 |
+
"cell_type": "code",
|
| 1083 |
+
"execution_count": null,
|
| 1084 |
+
"metadata": {},
|
| 1085 |
+
"outputs": [],
|
| 1086 |
+
"source": []
|
| 1087 |
+
},
|
| 1088 |
+
{
|
| 1089 |
+
"cell_type": "code",
|
| 1090 |
+
"execution_count": null,
|
| 1091 |
+
"metadata": {},
|
| 1092 |
+
"outputs": [],
|
| 1093 |
+
"source": []
|
| 1094 |
+
},
|
| 1095 |
+
{
|
| 1096 |
+
"cell_type": "code",
|
| 1097 |
+
"execution_count": null,
|
| 1098 |
+
"metadata": {},
|
| 1099 |
+
"outputs": [],
|
| 1100 |
+
"source": []
|
| 1101 |
+
},
|
| 1102 |
+
{
|
| 1103 |
+
"cell_type": "code",
|
| 1104 |
+
"execution_count": null,
|
| 1105 |
+
"metadata": {},
|
| 1106 |
+
"outputs": [],
|
| 1107 |
+
"source": []
|
| 1108 |
+
},
|
| 1109 |
+
{
|
| 1110 |
+
"cell_type": "code",
|
| 1111 |
+
"execution_count": null,
|
| 1112 |
+
"metadata": {},
|
| 1113 |
+
"outputs": [],
|
| 1114 |
+
"source": []
|
| 1115 |
+
},
|
| 1116 |
+
{
|
| 1117 |
+
"cell_type": "code",
|
| 1118 |
+
"execution_count": null,
|
| 1119 |
+
"metadata": {},
|
| 1120 |
+
"outputs": [],
|
| 1121 |
+
"source": []
|
| 1122 |
+
},
|
| 1123 |
+
{
|
| 1124 |
+
"cell_type": "code",
|
| 1125 |
+
"execution_count": null,
|
| 1126 |
+
"metadata": {},
|
| 1127 |
+
"outputs": [],
|
| 1128 |
+
"source": []
|
| 1129 |
+
},
|
| 1130 |
+
{
|
| 1131 |
+
"cell_type": "code",
|
| 1132 |
+
"execution_count": null,
|
| 1133 |
+
"metadata": {},
|
| 1134 |
+
"outputs": [],
|
| 1135 |
+
"source": []
|
| 1136 |
+
},
|
| 1137 |
+
{
|
| 1138 |
+
"cell_type": "code",
|
| 1139 |
+
"execution_count": null,
|
| 1140 |
+
"metadata": {},
|
| 1141 |
+
"outputs": [],
|
| 1142 |
+
"source": []
|
| 1143 |
+
},
|
| 1144 |
+
{
|
| 1145 |
+
"cell_type": "code",
|
| 1146 |
+
"execution_count": null,
|
| 1147 |
+
"metadata": {},
|
| 1148 |
+
"outputs": [],
|
| 1149 |
+
"source": []
|
| 1150 |
+
},
|
| 1151 |
+
{
|
| 1152 |
+
"cell_type": "code",
|
| 1153 |
+
"execution_count": null,
|
| 1154 |
+
"metadata": {},
|
| 1155 |
+
"outputs": [],
|
| 1156 |
+
"source": []
|
| 1157 |
+
},
|
| 1158 |
+
{
|
| 1159 |
+
"cell_type": "code",
|
| 1160 |
+
"execution_count": null,
|
| 1161 |
+
"metadata": {},
|
| 1162 |
+
"outputs": [],
|
| 1163 |
+
"source": []
|
| 1164 |
+
},
|
| 1165 |
+
{
|
| 1166 |
+
"cell_type": "code",
|
| 1167 |
+
"execution_count": null,
|
| 1168 |
+
"metadata": {},
|
| 1169 |
+
"outputs": [],
|
| 1170 |
+
"source": []
|
| 1171 |
+
},
|
| 1172 |
+
{
|
| 1173 |
+
"cell_type": "code",
|
| 1174 |
+
"execution_count": null,
|
| 1175 |
+
"metadata": {},
|
| 1176 |
+
"outputs": [],
|
| 1177 |
+
"source": []
|
| 1178 |
+
},
|
| 1179 |
+
{
|
| 1180 |
+
"cell_type": "code",
|
| 1181 |
+
"execution_count": null,
|
| 1182 |
+
"metadata": {},
|
| 1183 |
+
"outputs": [],
|
| 1184 |
+
"source": []
|
| 1185 |
+
},
|
| 1186 |
+
{
|
| 1187 |
+
"cell_type": "code",
|
| 1188 |
+
"execution_count": null,
|
| 1189 |
+
"metadata": {},
|
| 1190 |
+
"outputs": [],
|
| 1191 |
+
"source": []
|
| 1192 |
+
},
|
| 1193 |
+
{
|
| 1194 |
+
"cell_type": "code",
|
| 1195 |
+
"execution_count": null,
|
| 1196 |
+
"metadata": {},
|
| 1197 |
+
"outputs": [],
|
| 1198 |
+
"source": []
|
| 1199 |
+
},
|
| 1200 |
+
{
|
| 1201 |
+
"cell_type": "code",
|
| 1202 |
+
"execution_count": null,
|
| 1203 |
+
"metadata": {},
|
| 1204 |
+
"outputs": [],
|
| 1205 |
+
"source": []
|
| 1206 |
+
},
|
| 1207 |
+
{
|
| 1208 |
+
"cell_type": "code",
|
| 1209 |
+
"execution_count": null,
|
| 1210 |
+
"metadata": {},
|
| 1211 |
+
"outputs": [],
|
| 1212 |
+
"source": []
|
| 1213 |
+
},
|
| 1214 |
+
{
|
| 1215 |
+
"cell_type": "code",
|
| 1216 |
+
"execution_count": null,
|
| 1217 |
+
"metadata": {},
|
| 1218 |
+
"outputs": [],
|
| 1219 |
+
"source": []
|
| 1220 |
+
},
|
| 1221 |
+
{
|
| 1222 |
+
"cell_type": "code",
|
| 1223 |
+
"execution_count": null,
|
| 1224 |
+
"metadata": {},
|
| 1225 |
+
"outputs": [],
|
| 1226 |
+
"source": []
|
| 1227 |
+
},
|
| 1228 |
+
{
|
| 1229 |
+
"cell_type": "code",
|
| 1230 |
+
"execution_count": null,
|
| 1231 |
+
"metadata": {},
|
| 1232 |
+
"outputs": [],
|
| 1233 |
+
"source": []
|
| 1234 |
+
},
|
| 1235 |
+
{
|
| 1236 |
+
"cell_type": "code",
|
| 1237 |
+
"execution_count": null,
|
| 1238 |
+
"metadata": {},
|
| 1239 |
+
"outputs": [],
|
| 1240 |
+
"source": []
|
| 1241 |
+
},
|
| 1242 |
+
{
|
| 1243 |
+
"cell_type": "code",
|
| 1244 |
+
"execution_count": null,
|
| 1245 |
+
"metadata": {},
|
| 1246 |
+
"outputs": [],
|
| 1247 |
+
"source": []
|
| 1248 |
+
},
|
| 1249 |
+
{
|
| 1250 |
+
"cell_type": "code",
|
| 1251 |
+
"execution_count": null,
|
| 1252 |
+
"metadata": {},
|
| 1253 |
+
"outputs": [],
|
| 1254 |
+
"source": []
|
| 1255 |
+
},
|
| 1256 |
+
{
|
| 1257 |
+
"cell_type": "code",
|
| 1258 |
+
"execution_count": null,
|
| 1259 |
+
"metadata": {},
|
| 1260 |
+
"outputs": [],
|
| 1261 |
+
"source": []
|
| 1262 |
+
},
|
| 1263 |
+
{
|
| 1264 |
+
"cell_type": "code",
|
| 1265 |
+
"execution_count": null,
|
| 1266 |
+
"metadata": {},
|
| 1267 |
+
"outputs": [],
|
| 1268 |
+
"source": []
|
| 1269 |
+
},
|
| 1270 |
+
{
|
| 1271 |
+
"cell_type": "code",
|
| 1272 |
+
"execution_count": null,
|
| 1273 |
+
"metadata": {},
|
| 1274 |
+
"outputs": [],
|
| 1275 |
+
"source": []
|
| 1276 |
+
},
|
| 1277 |
+
{
|
| 1278 |
+
"cell_type": "code",
|
| 1279 |
+
"execution_count": null,
|
| 1280 |
+
"metadata": {},
|
| 1281 |
+
"outputs": [],
|
| 1282 |
+
"source": []
|
| 1283 |
+
},
|
| 1284 |
+
{
|
| 1285 |
+
"cell_type": "code",
|
| 1286 |
+
"execution_count": null,
|
| 1287 |
+
"metadata": {},
|
| 1288 |
+
"outputs": [],
|
| 1289 |
+
"source": []
|
| 1290 |
+
},
|
| 1291 |
+
{
|
| 1292 |
+
"cell_type": "code",
|
| 1293 |
+
"execution_count": null,
|
| 1294 |
+
"metadata": {},
|
| 1295 |
+
"outputs": [],
|
| 1296 |
+
"source": []
|
| 1297 |
+
},
|
| 1298 |
+
{
|
| 1299 |
+
"cell_type": "code",
|
| 1300 |
+
"execution_count": null,
|
| 1301 |
+
"metadata": {},
|
| 1302 |
+
"outputs": [],
|
| 1303 |
+
"source": []
|
| 1304 |
+
},
|
| 1305 |
+
{
|
| 1306 |
+
"cell_type": "code",
|
| 1307 |
+
"execution_count": null,
|
| 1308 |
+
"metadata": {},
|
| 1309 |
+
"outputs": [],
|
| 1310 |
+
"source": []
|
| 1311 |
+
},
|
| 1312 |
+
{
|
| 1313 |
+
"cell_type": "code",
|
| 1314 |
+
"execution_count": null,
|
| 1315 |
+
"metadata": {},
|
| 1316 |
+
"outputs": [],
|
| 1317 |
+
"source": []
|
| 1318 |
+
},
|
| 1319 |
+
{
|
| 1320 |
+
"cell_type": "code",
|
| 1321 |
+
"execution_count": null,
|
| 1322 |
+
"metadata": {},
|
| 1323 |
+
"outputs": [],
|
| 1324 |
+
"source": []
|
| 1325 |
+
},
|
| 1326 |
+
{
|
| 1327 |
+
"cell_type": "code",
|
| 1328 |
+
"execution_count": null,
|
| 1329 |
+
"metadata": {},
|
| 1330 |
+
"outputs": [],
|
| 1331 |
+
"source": []
|
| 1332 |
+
},
|
| 1333 |
+
{
|
| 1334 |
+
"cell_type": "code",
|
| 1335 |
+
"execution_count": null,
|
| 1336 |
+
"metadata": {},
|
| 1337 |
+
"outputs": [],
|
| 1338 |
+
"source": []
|
| 1339 |
+
},
|
| 1340 |
+
{
|
| 1341 |
+
"cell_type": "code",
|
| 1342 |
+
"execution_count": null,
|
| 1343 |
+
"metadata": {},
|
| 1344 |
+
"outputs": [],
|
| 1345 |
+
"source": []
|
| 1346 |
+
},
|
| 1347 |
+
{
|
| 1348 |
+
"cell_type": "code",
|
| 1349 |
+
"execution_count": null,
|
| 1350 |
+
"metadata": {},
|
| 1351 |
+
"outputs": [],
|
| 1352 |
+
"source": []
|
| 1353 |
+
},
|
| 1354 |
+
{
|
| 1355 |
+
"cell_type": "code",
|
| 1356 |
+
"execution_count": null,
|
| 1357 |
+
"metadata": {},
|
| 1358 |
+
"outputs": [],
|
| 1359 |
+
"source": []
|
| 1360 |
+
},
|
| 1361 |
+
{
|
| 1362 |
+
"cell_type": "code",
|
| 1363 |
+
"execution_count": null,
|
| 1364 |
+
"metadata": {},
|
| 1365 |
+
"outputs": [],
|
| 1366 |
+
"source": []
|
| 1367 |
+
},
|
| 1368 |
+
{
|
| 1369 |
+
"cell_type": "code",
|
| 1370 |
+
"execution_count": null,
|
| 1371 |
+
"metadata": {},
|
| 1372 |
+
"outputs": [],
|
| 1373 |
+
"source": []
|
| 1374 |
+
},
|
| 1375 |
+
{
|
| 1376 |
+
"cell_type": "code",
|
| 1377 |
+
"execution_count": null,
|
| 1378 |
+
"metadata": {},
|
| 1379 |
+
"outputs": [],
|
| 1380 |
+
"source": []
|
| 1381 |
+
}
|
| 1382 |
+
],
|
| 1383 |
+
"metadata": {
|
| 1384 |
+
"kernelspec": {
|
| 1385 |
+
"display_name": "Python 3",
|
| 1386 |
+
"language": "python",
|
| 1387 |
+
"name": "python3"
|
| 1388 |
+
},
|
| 1389 |
+
"language_info": {
|
| 1390 |
+
"codemirror_mode": {
|
| 1391 |
+
"name": "ipython",
|
| 1392 |
+
"version": 3
|
| 1393 |
+
},
|
| 1394 |
+
"file_extension": ".py",
|
| 1395 |
+
"mimetype": "text/x-python",
|
| 1396 |
+
"name": "python",
|
| 1397 |
+
"nbconvert_exporter": "python",
|
| 1398 |
+
"pygments_lexer": "ipython3",
|
| 1399 |
+
"version": "3.7.3"
|
| 1400 |
+
}
|
| 1401 |
+
},
|
| 1402 |
+
"nbformat": 4,
|
| 1403 |
+
"nbformat_minor": 2
|
| 1404 |
+
}
|
cancer detection using transfer learning.ipynb
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
main.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import cv2
|
| 2 |
+
import numpy as np
|
| 3 |
+
import pandas as pd
|
| 4 |
+
import matplotlib.pyplot as plt
|
| 5 |
+
from keras.layers import Convolution2D,MaxPooling2D,Flatten,Dense
|
| 6 |
+
import tensorflow as tf
|
| 7 |
+
from keras.models import Sequential
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
path = r'C:\Users\AVANISH SINGHAL\Desktop\MinorProject\breast-histopathology-images\8863\0\8863_idx5_x51_y1251_class0.png'
|
| 11 |
+
|
| 12 |
+
dataset_benign = cv2.imread(path)
|
| 13 |
+
cv2.waitKey(1000)
|
| 14 |
+
cv2.destroyAllWindows()
|
| 15 |
+
cv2.imshow('image',dataset_benign)
|
minor.docx
ADDED
|
Binary file (215 kB). View file
|
|
|
model.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:689493a8329db371bfde3d3500d3bc9d7d9084674de6af370e27ded9493b838d
|
| 3 |
+
size 3045824
|
nonc.png
ADDED
|