Skip to content

Instantly share code, notes, and snippets.

@theavicaster
Created May 17, 2021 06:15
Show Gist options
  • Save theavicaster/73e9f060523c2ba56187092a28dced01 to your computer and use it in GitHub Desktop.
Save theavicaster/73e9f060523c2ba56187092a28dced01 to your computer and use it in GitHub Desktop.
SF40FuzzyEnsembling.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "SF40FuzzyEnsembling.ipynb",
"provenance": [],
"authorship_tag": "ABX9TyO9wn6Pj003PCnxEAiQABgD",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/theavicaster/73e9f060523c2ba56187092a28dced01/sf40fuzzyensembling.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"metadata": {
"id": "qxut91aq6xIl"
},
"source": [
"!pip install --upgrade mlxtend\n",
"%tensorflow_version 1.x\n",
"!pip install gdown --pre"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "4bp2Mv0i63zV"
},
"source": [
"!gdown https://drive.google.com/uc?id=1-tkK0y3WfBMPaJO5ecRV9g-VvEpyUPgR"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "RQHn1YDs65tb"
},
"source": [
"!unzip stanford40.zip"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "MlXzFTId68L2"
},
"source": [
"from google.colab import drive\n",
"drive.mount('/content/drive')"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "jXuATktB7AFj"
},
"source": [
"import shutil\n",
"shutil.move(\"/content/40class/train/rowing_a_boat\", \"/content/nonbodymotion/train\")"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "zWMeRJYW7CJ-"
},
"source": [
"train_dir = '/content/40class/train'\n",
"test_dir = '/content/40class/test'"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "z-ADHYzO7ECr"
},
"source": [
"import numpy as np\n",
"import os\n",
"from glob import glob\n",
"import math\n",
"import tensorflow as tf\n",
"from keras import optimizers\n",
"from keras.models import Sequential\n",
"from keras.models import load_model\n",
"from keras.models import Model\n",
"from keras.layers import Dense\n",
"from keras.layers import Dropout\n",
"from keras.layers import SpatialDropout2D\n",
"from keras.layers import Flatten, concatenate, GlobalAveragePooling2D\n",
"from keras.layers import Input\n",
"from keras.layers import BatchNormalization\n",
"from keras.layers import Lambda\n",
"from keras.layers import Concatenate\n",
"from keras.layers.advanced_activations import LeakyReLU\n",
"from keras.layers.convolutional import Conv2D\n",
"from keras.layers.convolutional import MaxPooling2D\n",
"from keras.layers import Permute\n",
"from keras.regularizers import l2\n",
"from keras.callbacks import ModelCheckpoint\n",
"from keras.callbacks import LearningRateScheduler\n",
"from keras.callbacks import ReduceLROnPlateau\n",
"from keras.callbacks import CSVLogger\n",
"from keras import layers, models\n",
"from keras import backend as K\n",
"import matplotlib.pyplot as plt"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "H6HhkOo-7PrE"
},
"source": [
"data_format = K.image_data_format()\n",
"K.set_image_data_format(data_format)\n",
"np.random.seed(7)\n",
"\n",
"os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "lgl4cWsM7Tqq"
},
"source": [
"num_of_classes = 40"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "wi5H3i9j7V3W"
},
"source": [
"from keras.preprocessing.image import ImageDataGenerator\n",
"train_datagen = ImageDataGenerator(\n",
" #samplewise_center=True,\n",
" #samplewise_std_normalization=True\n",
" brightness_range=[0.5,1.5],\n",
" rotation_range=10,\n",
" width_shift_range=0.15,\n",
" height_shift_range=0.15,\n",
" shear_range=0.20,\n",
" zoom_range=0.20,\n",
" fill_mode='nearest',\n",
" )\n",
"test_datagen = ImageDataGenerator(\n",
" #samplewise_center=True,\n",
" #samplewise_std_normalization=True\n",
" )\n",
"\n",
"training_set = train_datagen.flow_from_directory(\n",
" train_dir,\n",
" target_size=(224, 224),\n",
" color_mode='rgb',\n",
" batch_size=10,\n",
" class_mode='categorical',\n",
" seed = 7\n",
" )\n",
"\n",
"test_set = test_datagen.flow_from_directory(\n",
" test_dir,\n",
" target_size=(224, 224),\n",
" color_mode='rgb',\n",
" batch_size=10,\n",
" class_mode='categorical',\n",
" shuffle = False, \n",
" seed = 7\n",
" )"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "lpfYvvXK7dqB"
},
"source": [
"sf40 = load_model('/content/drive/MyDrive/Colab Notebooks/colab/sf40.h5')\n",
"sf40_att = load_model('/content/drive/MyDrive/Colab Notebooks/colab/sf40_att.h5')"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "U26sThiF77LC"
},
"source": [
"Ypred_sf40 = sf40.predict_generator(test_set, verbose=1)\n",
"Ypred_sf40_att = sf40_att_rs.predict_generator(test_set, verbose=1)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "EkYSmiuv8FR7"
},
"source": [
"test_labels = test_set.labels"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "yaZ5mMzq8HPg"
},
"source": [
"Ypred_fuzzy = np.zeros(shape = Ypred_sf40.shape, dtype = float)\n",
"num_classifiers = 2"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "5L8ziPCc8P6S"
},
"source": [
"from sympy.solvers import solve\n",
"from sympy import Symbol\n",
"\n",
" fuzzyMeasures = np.array([ 0.038 , 0.074])\n",
"l = Symbol('l', real = True)\n",
"lam = solve( ( 1 + l* fuzzyMeasures[0]) * ( 1 + l* fuzzyMeasures[1]) - (l+1)\\\n",
" , l )\n",
"lam = lam[1]"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1muLZpDi8dnq"
},
"source": [
"for sample in range(0,Ypred_fuzzy.shape[0]):\n",
" for classes in range(0,num_of_classes):\n",
" \n",
" scores = np.array([ Ypred_sf40[sample][classes],Ypred_sf40_att[sample][classes] ])\n",
" permutedidx = np.flip(np.argsort(scores))\n",
" h = scores[permutedidx]\n",
" fm = fuzzyMeasures[permutedidx]\n",
"\n",
" Aprev = fm[0]\n",
" ff = h[0] * fm[0]\n",
"\n",
" for i in range(1,num_classifiers):\n",
" Acurr = Aprev + fm[i] + lam * fm[i] * Aprev\n",
" ff = ff + h[i] *(Acurr - Aprev)\n",
" Aprev = Acurr\n",
"\n",
" Ypred_fuzzy[sample][classes] = ff"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "e-iY2a_i83Ot"
},
"source": [
"ypred_fuzzy = np.argmax(Ypred_fuzzy, axis=1)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "xZf3k7Pj8qKY"
},
"source": [
"from sklearn.metrics import accuracy_score, f1_score\n",
"from sklearn.metrics import confusion_matrix,classification_report, accuracy_score\n",
"\n",
"print(classification_report(test_labels, ypred_fuzzy, digits=5))"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Gd8QJDOv9Atu"
},
"source": [
"!pip install -q scikit-plot"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "rjiCqv8c9E5n"
},
"source": [
"classes = os.listdir('/content/train')\n",
"classes.sort()\n",
"print(classes)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "bSQ4Cj-69HKw"
},
"source": [
"from sklearn.metrics import confusion_matrix,classification_report\n",
"\n",
"matrix = confusion_matrix(test_labels, ypred_new,labels=None)\n",
"\n",
"from mlxtend.plotting import plot_confusion_matrix\n",
"import matplotlib.pyplot as plt\n",
"\n",
"fig, ax = plot_confusion_matrix(conf_mat=matrix,\n",
" #colorbar=True,\n",
" cmap = 'Blues',\n",
" show_absolute=True,\n",
" show_normed=False,\n",
" figsize = (14,14),\n",
" class_names = classes\n",
" )"
],
"execution_count": null,
"outputs": []
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment