{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import tensorflow\nfrom tensorflow.keras.applications import DenseNet201","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from tensorflow.keras import Model,Input\nfrom tensorflow.keras import Sequential\nfrom tensorflow.keras.layers import *\nmodel = Sequential()\n\nbase_model = DenseNet201(include_top=False,weights='imagenet')#,input_shape=(32,32,3))\n#base_model.trainable = False\n\ninputLayer = Input(shape=(32,32,3))\n\n#x = base_model(inputLayer,training=False)\nfor layer in base_model.layers:\n    if 'conv5' in layer.name:\n        layer.trainable = True\n    else:\n        layer.trainable = False\n#outputLayer = Dense(10,activation='softmax')\nmodel.add(inputLayer)\nmodel.add(base_model)\nmodel.add(Flatten())\nmodel.add(BatchNormalization())\n\nmodel.add(Dense(256,activation='relu'))\nmodel.add(Dropout(0.4))\nmodel.add(BatchNormalization())\n\nmodel.add(Dense(128,activation='relu'))\nmodel.add(Dropout(0.4))\n\nmodel.add(Dense(10,activation='softmax'))\n\n\n#model = Model(inputLayer,outputLayer)\nprint(model.summary())","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!pip install py7zr\n!python -m py7zr x ../input/cifar-10/train.7z #takes 10 oof minutes of CPU to decompress this file. Big OOF\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import pandas as pd\nimport glob\nimport numpy as np\nfrom PIL import Image\ny = pd.read_csv('../input/cifar-10/trainLabels.csv')\nfilelist = glob.glob(\"../working/train/*\")\nfilelist = sorted(filelist,key= lambda x:int(x.split(\"/\")[-1].split(\".\")[0]))\nX = np.array([np.array(Image.open(fname)) for fname in filelist])\nprint(f\"X.shape : {X.shape} y.shape : {y.shape}\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# got X and y at this point, now some preprocessing\nimport tensorflow\ny = y['label'].values\n\nX = X.astype('float32')\n\nX = X/255.0\n\ntemp = y\ncategories = list(pd.CategoricalIndex(temp).categories)\nmapping = dict()\nfor i in range(len(categories)):\n    mapping[categories[i]] = i\nfor i in range(len(temp)):\n    temp[i] = mapping[temp[i]]\ny = tensorflow.keras.utils.to_categorical(temp)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"# data augmentation\n# starting Data Augmentation now\n\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\ndatagen = ImageDataGenerator(\n            rotation_range=10,\n            zoom_range=0.1,\n            width_shift_range=0.1,\n            height_shift_range=0.1\n            )\ndatagen.fit(X)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split\n\nX_train,X_val,y_train,y_val = train_test_split(X,y,test_size=0.2,random_state=1)\nmodel.fit(datagen.flow(X_train,y_train),batch_size=128,epochs=10,verbose=1,validation_data=(X_val,y_val))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit(datagen.flow(X,y),batch_size=128,epochs=20,verbose=1)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}