Skip to content

Instantly share code, notes, and snippets.

@srsani
Created December 7, 2017 21:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save srsani/544adf217c9e3c8aa542a8b10ae6c698 to your computer and use it in GitHub Desktop.
Save srsani/544adf217c9e3c8aa542a8b10ae6c698 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using cuDNN version 5110 on context None\n",
"Mapped name None to device cuda: GeForce GTX TITAN X (0000:02:00.0)\n",
"Using Theano backend.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"current folder: /media/srs/srsb/fast_ai/deeplearning1/nbs\n",
"\u001b[0m\u001b[01;32mchar-rnn.ipynb\u001b[0m* \u001b[01;32mlesson3.ipynb\u001b[0m* \u001b[01;32msgd-intro.ipynb\u001b[0m*\r\n",
"\u001b[01;32mconvolution-intro.ipynb\u001b[0m* \u001b[01;32mlesson4.ipynb\u001b[0m* \u001b[01;32mstatefarm.ipynb\u001b[0m*\r\n",
"\u001b[01;34mdata\u001b[0m/ \u001b[01;32mlesson5.ipynb\u001b[0m* \u001b[01;32mstatefarm-sample.ipynb\u001b[0m*\r\n",
"\u001b[01;32mdogscats-ensemble.ipynb\u001b[0m* \u001b[01;32mlesson6.ipynb\u001b[0m* \u001b[01;34mtestfolder\u001b[0m/\r\n",
"\u001b[01;32mdogs_cats_redux.ipynb\u001b[0m* \u001b[01;32mlesson7.ipynb\u001b[0m* \u001b[01;32mutils.py\u001b[0m*\r\n",
"\u001b[01;32mimagenet_batchnorm.ipynb\u001b[0m* maestroQA.ipynb \u001b[01;32mvgg16bn.py\u001b[0m*\r\n",
"\u001b[01;32minit.sh\u001b[0m* \u001b[01;32mmnist.ipynb\u001b[0m* \u001b[01;32mvgg16.py\u001b[0m*\r\n",
"leason2_srs.ipynb \u001b[01;34m__pycache__\u001b[0m/ \u001b[01;32mwordvectors.ipynb\u001b[0m*\r\n",
"\u001b[01;32mlesson1.ipynb\u001b[0m* \u001b[01;32mresnet50.py\u001b[0m*\r\n",
"\u001b[01;32mlesson2.ipynb\u001b[0m* \u001b[01;32mrun.sh\u001b[0m*\r\n"
]
}
],
"source": [
"# Rather than importing everything manually, we'll make things easy\n",
"# and load them all in utils.py, and just import them from there.\n",
"%matplotlib inline\n",
"import utils; \n",
"\n",
"import importlib\n",
"importlib.reload(utils)\n",
"\n",
"from PIL import ImageFile\n",
"ImageFile.LOAD_TRUNCATED_IMAGES = True\n",
"\n",
"def save_array(fname, arr): \n",
" c=bcolz.carray(arr, rootdir=fname, mode='w'); c.flush()\n",
"def load_array(fname):\n",
" return bcolz.open(fname)[:]\n",
"\n",
"from utils import *\n",
"current_dir = os.getcwd()\n",
"print ('current folder: ',current_dir)\n",
"\n",
"%ls"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from vgg16 import Vgg16\n",
"vgg = Vgg16()\n",
"model = vgg.model"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 2000 images belonging to 2 classes.\n",
"Found 23000 images belonging to 2 classes.\n"
]
}
],
"source": [
"val_batches = image.ImageDataGenerator().flow_from_directory(current_dir+'/data/dogscats_kaggle/valid', \n",
" target_size=(224,224),\n",
" class_mode='categorical', \n",
" shuffle=False,\n",
" batch_size=1)\n",
"\n",
"batches = image.ImageDataGenerator().flow_from_directory(current_dir+'/data/dogscats_kaggle/train', \n",
" target_size=(224,224),\n",
" class_mode='categorical', \n",
" shuffle=False,\n",
" batch_size=1)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"val_classes = val_batches.classes\n",
"trn_classes = batches.classes\n",
"\n",
"val_labels = np.array(OneHotEncoder().fit_transform(val_classes.reshape(-1,1)).todense())\n",
"trn_labels = np.array(OneHotEncoder().fit_transform(trn_classes.reshape(-1,1)).todense())"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 23000 images belonging to 2 classes.\n"
]
}
],
"source": [
"batches = image.ImageDataGenerator().flow_from_directory(current_dir+'/data/dogscats_kaggle/train', \n",
" target_size=(224,224),\n",
" class_mode=None, \n",
" shuffle=False,\n",
" batch_size=1)\n",
"trn_data = np.concatenate([batches.next() for i in range(batches.nb_sample)])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Found 2000 images belonging to 2 classes.\n"
]
}
],
"source": [
"val_batches = image.ImageDataGenerator().flow_from_directory(current_dir+'/data/dogscats_kaggle/valid', \n",
" target_size=(224,224),\n",
" class_mode=None, \n",
" shuffle=False,\n",
" batch_size=1)\n",
"val_data = np.concatenate([val_batches.next() for i in range(val_batches.nb_sample)])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"save_array(current_dir+'/data/dogscats_kaggle/model/train_data.bc', trn_data)\n",
"save_array(current_dir+'/data/dogscats_kaggle/model/valid_data.bc', val_data)\n",
"\n",
"save_array(current_dir+'/data/dogscats_kaggle/model/trn_labels.bc', trn_labels)\n",
"save_array(current_dir+'/data/dogscats_kaggle/model/val_labels.bc', val_labels)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"trn_data = load_array(current_dir+'/data/dogscats_kaggle/model/train_data.bc')\n",
"val_data = load_array(current_dir+'/data/dogscats_kaggle/model/valid_data.bc')\n",
"\n",
"trn_labels = load_array(current_dir+'/data/dogscats_kaggle/model/trn_labels.bc')\n",
"val_labels = load_array(current_dir+'/data/dogscats_kaggle/model/val_labels.bc')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Modifying the model:"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"____________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"====================================================================================================\n",
"lambda_1 (Lambda) (None, 3, 224, 224) 0 lambda_input_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_1 (ZeroPadding2D) (None, 3, 226, 226) 0 lambda_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_1 (Convolution2D) (None, 64, 224, 224) 1792 zeropadding2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_2 (ZeroPadding2D) (None, 64, 226, 226) 0 convolution2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_2 (Convolution2D) (None, 64, 224, 224) 36928 zeropadding2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_1 (MaxPooling2D) (None, 64, 112, 112) 0 convolution2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_3 (ZeroPadding2D) (None, 64, 114, 114) 0 maxpooling2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_3 (Convolution2D) (None, 128, 112, 112) 73856 zeropadding2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_4 (ZeroPadding2D) (None, 128, 114, 114) 0 convolution2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_4 (Convolution2D) (None, 128, 112, 112) 147584 zeropadding2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_2 (MaxPooling2D) (None, 128, 56, 56) 0 convolution2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_5 (ZeroPadding2D) (None, 128, 58, 58) 0 maxpooling2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_5 (Convolution2D) (None, 256, 56, 56) 295168 zeropadding2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_6 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_6 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_7 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_7 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_3 (MaxPooling2D) (None, 256, 28, 28) 0 convolution2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_8 (ZeroPadding2D) (None, 256, 30, 30) 0 maxpooling2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_8 (Convolution2D) (None, 512, 28, 28) 1180160 zeropadding2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_9 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_9 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_10 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_10 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_4 (MaxPooling2D) (None, 512, 14, 14) 0 convolution2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_11 (ZeroPadding2D) (None, 512, 16, 16) 0 maxpooling2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_11 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_12 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_12 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_13 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_13 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_5 (MaxPooling2D) (None, 512, 7, 7) 0 convolution2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"flatten_1 (Flatten) (None, 25088) 0 maxpooling2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_1 (Dense) (None, 4096) 102764544 flatten_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 4096) 0 dense_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_2 (Dense) (None, 4096) 16781312 dropout_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_2 (Dropout) (None, 4096) 0 dense_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_3 (Dense) (None, 1000) 4097000 dropout_2[0][0] \n",
"====================================================================================================\n",
"Total params: 138,357,544\n",
"Trainable params: 138,357,544\n",
"Non-trainable params: 0\n",
"____________________________________________________________________________________________________\n"
]
}
],
"source": [
"vgg.model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"model.pop()\n",
"for layer in model.layers: \n",
" layer.trainable=False\n",
"model.add(Dense(2, activation='softmax'))"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"____________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"====================================================================================================\n",
"lambda_1 (Lambda) (None, 3, 224, 224) 0 lambda_input_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_1 (ZeroPadding2D) (None, 3, 226, 226) 0 lambda_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_1 (Convolution2D) (None, 64, 224, 224) 1792 zeropadding2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_2 (ZeroPadding2D) (None, 64, 226, 226) 0 convolution2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_2 (Convolution2D) (None, 64, 224, 224) 36928 zeropadding2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_1 (MaxPooling2D) (None, 64, 112, 112) 0 convolution2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_3 (ZeroPadding2D) (None, 64, 114, 114) 0 maxpooling2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_3 (Convolution2D) (None, 128, 112, 112) 73856 zeropadding2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_4 (ZeroPadding2D) (None, 128, 114, 114) 0 convolution2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_4 (Convolution2D) (None, 128, 112, 112) 147584 zeropadding2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_2 (MaxPooling2D) (None, 128, 56, 56) 0 convolution2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_5 (ZeroPadding2D) (None, 128, 58, 58) 0 maxpooling2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_5 (Convolution2D) (None, 256, 56, 56) 295168 zeropadding2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_6 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_6 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_7 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_7 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_3 (MaxPooling2D) (None, 256, 28, 28) 0 convolution2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_8 (ZeroPadding2D) (None, 256, 30, 30) 0 maxpooling2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_8 (Convolution2D) (None, 512, 28, 28) 1180160 zeropadding2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_9 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_9 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_10 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_10 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_4 (MaxPooling2D) (None, 512, 14, 14) 0 convolution2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_11 (ZeroPadding2D) (None, 512, 16, 16) 0 maxpooling2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_11 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_12 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_12 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_13 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_13 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_5 (MaxPooling2D) (None, 512, 7, 7) 0 convolution2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"flatten_1 (Flatten) (None, 25088) 0 maxpooling2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_1 (Dense) (None, 4096) 102764544 flatten_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 4096) 0 dense_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_2 (Dense) (None, 4096) 16781312 dropout_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_2 (Dropout) (None, 4096) 0 dense_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_4 (Dense) (None, 2) 8194 dropout_2[0][0] \n",
"====================================================================================================\n",
"Total params: 134,268,738\n",
"Trainable params: 8,194\n",
"Non-trainable params: 134,260,544\n",
"____________________________________________________________________________________________________\n"
]
}
],
"source": [
"vgg.model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"batch_size=128\n",
"batches = image.ImageDataGenerator().flow(trn_data, trn_labels, batch_size=batch_size, shuffle=True)\n",
"val_batches = image.ImageDataGenerator().flow(val_data, val_labels, batch_size=batch_size, shuffle=False)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"____________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"====================================================================================================\n",
"lambda_1 (Lambda) (None, 3, 224, 224) 0 lambda_input_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_1 (ZeroPadding2D) (None, 3, 226, 226) 0 lambda_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_1 (Convolution2D) (None, 64, 224, 224) 1792 zeropadding2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_2 (ZeroPadding2D) (None, 64, 226, 226) 0 convolution2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_2 (Convolution2D) (None, 64, 224, 224) 36928 zeropadding2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_1 (MaxPooling2D) (None, 64, 112, 112) 0 convolution2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_3 (ZeroPadding2D) (None, 64, 114, 114) 0 maxpooling2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_3 (Convolution2D) (None, 128, 112, 112) 73856 zeropadding2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_4 (ZeroPadding2D) (None, 128, 114, 114) 0 convolution2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_4 (Convolution2D) (None, 128, 112, 112) 147584 zeropadding2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_2 (MaxPooling2D) (None, 128, 56, 56) 0 convolution2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_5 (ZeroPadding2D) (None, 128, 58, 58) 0 maxpooling2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_5 (Convolution2D) (None, 256, 56, 56) 295168 zeropadding2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_6 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_6 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_7 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_7 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_3 (MaxPooling2D) (None, 256, 28, 28) 0 convolution2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_8 (ZeroPadding2D) (None, 256, 30, 30) 0 maxpooling2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_8 (Convolution2D) (None, 512, 28, 28) 1180160 zeropadding2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_9 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_9 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_10 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_10 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_4 (MaxPooling2D) (None, 512, 14, 14) 0 convolution2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_11 (ZeroPadding2D) (None, 512, 16, 16) 0 maxpooling2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_11 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_12 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_12 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_13 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_13 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_5 (MaxPooling2D) (None, 512, 7, 7) 0 convolution2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"flatten_1 (Flatten) (None, 25088) 0 maxpooling2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_1 (Dense) (None, 4096) 102764544 flatten_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 4096) 0 dense_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_2 (Dense) (None, 4096) 16781312 dropout_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_2 (Dropout) (None, 4096) 0 dense_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_4 (Dense) (None, 2) 8194 dropout_2[0][0] \n",
"====================================================================================================\n",
"Total params: 134,268,738\n",
"Trainable params: 8,194\n",
"Non-trainable params: 134,260,544\n",
"____________________________________________________________________________________________________\n"
]
}
],
"source": [
"opt = RMSprop(lr=0.001)\n",
"vgg.model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])\n",
"vgg.model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/2\n",
"23000/23000 [==============================] - 181s - loss: 0.1248 - acc: 0.9649 - val_loss: 0.0487 - val_acc: 0.9815\n",
"Epoch 2/2\n",
"23000/23000 [==============================] - 180s - loss: 0.0922 - acc: 0.9760 - val_loss: 0.0413 - val_acc: 0.9850\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x7efdb87b1eb8>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vgg.model.fit_generator(batches, \n",
" nb_epoch = 2, \n",
" validation_data = val_batches,\n",
" samples_per_epoch=batches.n,\n",
" nb_val_samples=val_batches.n)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training multiple layers in Keras without compiling:\n",
"\n",
"This is the same approach as the class notebook."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"layers = model.layers\n",
"# Get the index of the first dense layer...\n",
"first_dense_idx = [index for index,layer in enumerate(layers) if type(layer) is Dense][0]\n",
"# ...and set this and all subsequent layers to trainable\n",
"for layer in layers[first_dense_idx:]: \n",
" layer.trainable=True"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"____________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"====================================================================================================\n",
"lambda_1 (Lambda) (None, 3, 224, 224) 0 lambda_input_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_1 (ZeroPadding2D) (None, 3, 226, 226) 0 lambda_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_1 (Convolution2D) (None, 64, 224, 224) 1792 zeropadding2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_2 (ZeroPadding2D) (None, 64, 226, 226) 0 convolution2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_2 (Convolution2D) (None, 64, 224, 224) 36928 zeropadding2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_1 (MaxPooling2D) (None, 64, 112, 112) 0 convolution2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_3 (ZeroPadding2D) (None, 64, 114, 114) 0 maxpooling2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_3 (Convolution2D) (None, 128, 112, 112) 73856 zeropadding2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_4 (ZeroPadding2D) (None, 128, 114, 114) 0 convolution2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_4 (Convolution2D) (None, 128, 112, 112) 147584 zeropadding2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_2 (MaxPooling2D) (None, 128, 56, 56) 0 convolution2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_5 (ZeroPadding2D) (None, 128, 58, 58) 0 maxpooling2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_5 (Convolution2D) (None, 256, 56, 56) 295168 zeropadding2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_6 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_6 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_7 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_7 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_3 (MaxPooling2D) (None, 256, 28, 28) 0 convolution2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_8 (ZeroPadding2D) (None, 256, 30, 30) 0 maxpooling2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_8 (Convolution2D) (None, 512, 28, 28) 1180160 zeropadding2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_9 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_9 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_10 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_10 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_4 (MaxPooling2D) (None, 512, 14, 14) 0 convolution2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_11 (ZeroPadding2D) (None, 512, 16, 16) 0 maxpooling2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_11 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_12 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_12 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_13 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_13 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_5 (MaxPooling2D) (None, 512, 7, 7) 0 convolution2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"flatten_1 (Flatten) (None, 25088) 0 maxpooling2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_1 (Dense) (None, 4096) 102764544 flatten_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 4096) 0 dense_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_2 (Dense) (None, 4096) 16781312 dropout_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_2 (Dropout) (None, 4096) 0 dense_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_4 (Dense) (None, 2) 8194 dropout_2[0][0] \n",
"====================================================================================================\n",
"Total params: 134,268,738\n",
"Trainable params: 119,554,050\n",
"Non-trainable params: 14,714,688\n",
"____________________________________________________________________________________________________\n"
]
}
],
"source": [
"vgg.model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/2\n",
"23000/23000 [==============================] - 183s - loss: 0.0880 - acc: 0.9779 - val_loss: 0.0420 - val_acc: 0.9855\n",
"Epoch 2/2\n",
"23000/23000 [==============================] - 181s - loss: 0.0834 - acc: 0.9788 - val_loss: 0.0345 - val_acc: 0.9890\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x7efdb898b748>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vgg.model.fit_generator(batches, \n",
" nb_epoch = 2, \n",
" validation_data = val_batches,\n",
" samples_per_epoch=batches.n,\n",
" nb_val_samples=val_batches.n)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training multiple layers in Keras WITH compiling:\n",
"\n",
"So I added a compile to remove the warning and realized that the loss increased dramatically and the model cannot produces a satisfactory result with only few epochs. \n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"opt = RMSprop(lr=0.001)\n",
"vgg.model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"____________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"====================================================================================================\n",
"lambda_1 (Lambda) (None, 3, 224, 224) 0 lambda_input_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_1 (ZeroPadding2D) (None, 3, 226, 226) 0 lambda_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_1 (Convolution2D) (None, 64, 224, 224) 1792 zeropadding2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_2 (ZeroPadding2D) (None, 64, 226, 226) 0 convolution2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_2 (Convolution2D) (None, 64, 224, 224) 36928 zeropadding2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_1 (MaxPooling2D) (None, 64, 112, 112) 0 convolution2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_3 (ZeroPadding2D) (None, 64, 114, 114) 0 maxpooling2d_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_3 (Convolution2D) (None, 128, 112, 112) 73856 zeropadding2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_4 (ZeroPadding2D) (None, 128, 114, 114) 0 convolution2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_4 (Convolution2D) (None, 128, 112, 112) 147584 zeropadding2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_2 (MaxPooling2D) (None, 128, 56, 56) 0 convolution2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_5 (ZeroPadding2D) (None, 128, 58, 58) 0 maxpooling2d_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_5 (Convolution2D) (None, 256, 56, 56) 295168 zeropadding2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_6 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_6 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_7 (ZeroPadding2D) (None, 256, 58, 58) 0 convolution2d_6[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_7 (Convolution2D) (None, 256, 56, 56) 590080 zeropadding2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_3 (MaxPooling2D) (None, 256, 28, 28) 0 convolution2d_7[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_8 (ZeroPadding2D) (None, 256, 30, 30) 0 maxpooling2d_3[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_8 (Convolution2D) (None, 512, 28, 28) 1180160 zeropadding2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_9 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_8[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_9 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_10 (ZeroPadding2D) (None, 512, 30, 30) 0 convolution2d_9[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_10 (Convolution2D) (None, 512, 28, 28) 2359808 zeropadding2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_4 (MaxPooling2D) (None, 512, 14, 14) 0 convolution2d_10[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_11 (ZeroPadding2D) (None, 512, 16, 16) 0 maxpooling2d_4[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_11 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_12 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_11[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_12 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"zeropadding2d_13 (ZeroPadding2D) (None, 512, 16, 16) 0 convolution2d_12[0][0] \n",
"____________________________________________________________________________________________________\n",
"convolution2d_13 (Convolution2D) (None, 512, 14, 14) 2359808 zeropadding2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"maxpooling2d_5 (MaxPooling2D) (None, 512, 7, 7) 0 convolution2d_13[0][0] \n",
"____________________________________________________________________________________________________\n",
"flatten_1 (Flatten) (None, 25088) 0 maxpooling2d_5[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_1 (Dense) (None, 4096) 102764544 flatten_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 4096) 0 dense_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_2 (Dense) (None, 4096) 16781312 dropout_1[0][0] \n",
"____________________________________________________________________________________________________\n",
"dropout_2 (Dropout) (None, 4096) 0 dense_2[0][0] \n",
"____________________________________________________________________________________________________\n",
"dense_4 (Dense) (None, 2) 8194 dropout_2[0][0] \n",
"====================================================================================================\n",
"Total params: 134,268,738\n",
"Trainable params: 119,554,050\n",
"Non-trainable params: 14,714,688\n",
"____________________________________________________________________________________________________\n"
]
}
],
"source": [
"vgg.model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/2\n",
"23000/23000 [==============================] - 185s - loss: 8.0069 - acc: 0.5032 - val_loss: 8.0913 - val_acc: 0.4980\n",
"Epoch 2/2\n",
"23000/23000 [==============================] - 185s - loss: 8.0177 - acc: 0.5026 - val_loss: 8.0913 - val_acc: 0.4980\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x7efdb74626d8>"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"vgg.model.fit_generator(batches, \n",
" nb_epoch = 2, \n",
" validation_data = val_batches,\n",
" samples_per_epoch=batches.n,\n",
" nb_val_samples=val_batches.n)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [conda root]",
"language": "python",
"name": "conda-root-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment