{"metadata": {"kernelspec": {"name": "python3", "display_name": "Python 3", "language": "python"}, "language_info": {"nbconvert_exporter": "python", "version": "3.6.3", "name": "python", "pygments_lexer": "ipython3", "codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python"}}, "cells": [{"source": ["This is my first jupiter notebook for learning purpose"], "metadata": {"_cell_guid": "b342ce99-a33d-4f7e-ba04-cf1a1b95b472", "_uuid": "d43a196448d18b897313be4646b55242959b7bfd"}, "cell_type": "markdown"}, {"source": ["# This Python 3 environment comes with many helpful analytics libraries installed\n", "# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n", "# For example, here's several helpful packages to load in \n", "\n", "import numpy as np # linear algebra\n", "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", "\n", "# Input data files are available in the \"../input/\" directory.\n", "# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n", "\n", "from subprocess import check_output\n", "print(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))\n", "\n", "# Any results you write to the current directory are saved as output."], "metadata": {"_cell_guid": "b7494dff-3e17-4a71-b5ce-c5285f9afc07", "_uuid": "dbcbd60877026d8e686a8aac591f51f370e2b288"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["import os,cv2,numpy\n", "TRAIN_DIR = \"../input/train\"\n", "TEST_DIR = \"../input/test\"\n", "IMG_LN = 32*32*3\n", "\n", "\n", "def norm(arr):\n", "    return (arr - 0) / 255\n", "\n", "def readImg(dirNam):\n", "    rtXarr = list()\n", "    rtYarr = list()\n", "    namDict = dict()\n", "    curCn = 0\n", "    for img in os.listdir(dirNam):\n", "        cim = cv2.imread(dirNam+'/'+img)\n", "        if img.__contains__('cat'):\n", "            rtYarr.append(0)\n", "        else:\n", "            rtYarr.append(1)\n", "        namDict[curCn] = img\n", "        curCn = curCn + 1\n", "        cim = cv2.resize(cim, (32,32))\n", "        np = numpy.array(cim).flatten()\n", "        np = norm(np)\n", "        rtXarr.append(np)\n", "    \n", "    return rtXarr,rtYarr,namDict\n", "\n", "\n", "XArr,YArr,nmDict = readImg(TRAIN_DIR)\n", "    \n", "print(len(YArr))\n", "print(len(XArr))\n", "\n"], "metadata": {"_cell_guid": "3cbc4ccc-92e6-4d9e-975e-ccd0e7a784f1", "_uuid": "729ef4fdacb78e425cda97d58f667266b69337e2"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["Now I have XArr and YArr. Now I should de forward propgation on every entry.\n", "YPred = XArr[cur]*W.T + B\n", "YPred = sigmoid(YPred) elementwise sigmpid\n", "\n", "We need to calculate the value of gradient\n", "\n", "dW[c] = (YPred - Y)X[c] ///////check again"], "metadata": {"_cell_guid": "ca95d2f4-c9c4-45f5-a8a1-7371632356e4", "collapsed": true, "_uuid": "12f311377165967116be46aaab0eb9fe62c1b339"}, "cell_type": "markdown"}, {"source": ["import math\n", "Y = numpy.array(YArr).T.reshape(1, len(YArr))\n", "#W = numpy.zeros((IMG_LN , 1))\n", "cachW = numpy.zeros((IMG_LN , 1)) # For adagrad\n", "\n", "#B = 0\n", "cachB = 0\n", "W = numpy.random.randn(IMG_LN , 1) * .001\n", "B = numpy.asscalar(numpy.random.randn(1,1) * .001)\n", "trm = len(XArr)\n", "X = numpy.array(XArr).T\n", "#W = numpy.random.normal(0, .1, IMG_LN).reshape(IMG_LN , 1)\n", "#B = 0\n", "print(X.shape)\n", "print(Y.shape)\n", "print(W.shape)"], "metadata": {"_cell_guid": "ca69318b-455a-4a12-9c2b-dfdf02f42c8b", "collapsed": true, "_uuid": "0b66bb0e37e05c320cbfbe21d306a900056c1d1c"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["def forwardMov(CX):\n", "    YPred = (W.T).dot(CX) + B\n", "    YPred = -1 * YPred\n", "    YPred = 1 / (1 + numpy.exp(YPred))\n", "    return YPred"], "metadata": {"_cell_guid": "a783b281-8800-4ab6-b56f-addfe5901c8b", "collapsed": true, "_uuid": "e47cb4816c35753455cfd3b476aab47eedb8101a"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.animation as animation\n", "\n", "\n", "fig = plt.figure(figsize=(16, 12))\n", "ax = fig.add_subplot(111)\n", "# You can initialize this with whatever\n", "im = ax.imshow(np.random.rand(6, 10), cmap='bone_r', interpolation='nearest')\n", "\n", "\n", "def animate(i):\n", "    aux = np.zeros(60)\n", "    aux[i] = 1\n", "    image_clock = np.reshape(aux, (6, 10))\n", "    im.set_array(image_clock)\n", "\n", "ani = animation.FuncAnimation(fig, animate, frames=60, interval=1000)\n", "\n", "plt.show()"], "metadata": {"_cell_guid": "e469623f-991d-4b2f-b7be-6ae0d13bb7b7", "collapsed": true, "_uuid": "da61616973370b9b37d61de6cae439bc8fc9b127"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["runArr = []\n", "loArr = []\n", "\n", "for run in range(0 , 1000):\n", "    #print (run)\n", "    curPrd = 0\n", "    #dW = numpy.zeros((1, IMG_LN))\n", "    #dB = 0\n", "    YPred = forwardMov(X)\n", "    lo = -1 * (Y * numpy.log(YPred) + (1 - Y) * numpy.log(1 - YPred))\n", "    #curPrd = numpy.sum(map(lbl , YPred))\n", "    dZ = YPred - Y\n", "    #print (dZ)\n", "    dW = X.dot(dZ.T)\n", "    dW = dW / trm;\n", "    tmpCacheDw = dW * dW\n", "    #print(\"89\")\n", "    dB = numpy.sum(dZ)\n", "    dB = dB / trm;\n", "    tmpCacheDb = dB * dB\n", "    \n", "    cachW = cachW + tmpCacheDw \n", "    #W = W - 0.001*(dW)\n", "    W = W - 0.01*(dW / numpy.sqrt(cachW) + .00001);\n", "    \n", "    cachB = cachB + tmpCacheDb \n", "    #B = B - 0.001*dB\n", "    B = B - 0.01*(dB / numpy.sqrt(cachB)+ .00001);\n", "    \n", "    curL = (numpy.sum(lo)) / trm\n", "    runArr.append(run)\n", "    loArr.append(curL)\n", "    \n", "    #line.set_xdata(runArr)\n", "    #line.set_ydata(loArr)\n", "    #ax.relim()\n", "    #ax.autoscale_view()\n", "    #plt.draw() \n", "    if run % 100 == 0:\n", "        \n", "        curL = (numpy.sum(lo)) / trm\n", "        curPrd = 0\n", "        for ct in range(0 , trm):\n", "            if YPred[0][ct] < .5:\n", "                curvl = 0\n", "            else:\n", "                curvl = 1\n", "            if curvl == Y[0][ct]:\n", "                curPrd = curPrd + 1\n", "        print (\"run : \" + str(run) + \" lo : \" + str(curL) + \" acc : \" + str(curPrd/trm))\n", "        \n"], "metadata": {"_cell_guid": "616024c9-159a-43b7-ac7c-be8893e19bb9", "collapsed": true, "_uuid": "e589b50da1b1bdfc45ccc0f1b7f2bbd5496203a3"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["\"\"\"\n", "import math\n", "Y = numpy.array(YArr).reshape(len(YArr) , 1)\n", "W = numpy.zeros((1, IMG_LN))\n", "B = 0\n", "X = numpy.array(XArr)\n", "\n", "    \n", "for run in range(0 , 10000):\n", "    curPrd = 0\n", "    dW = numpy.zeros((1, IMG_LN))\n", "    dB = 0\n", "    for cnt in range(0, len(XArr)):\n", "        YPred = XArr[cnt].dot(W.T) + B\n", "        YPrdVl = numpy.asscalar(YPred.flatten())\n", "        YPrdVl = 1 / (1 + numpy.exp(-YPrdVl))\n", "        curvl = -1\n", "        if YPrdVl < .5:\n", "            curvl = 0\n", "        else:\n", "            curvl = 1\n", "        if curvl == Y[cnt]:\n", "            curPrd = curPrd + 1\n", "        # dW = (YPred - Y) * XArr[cnt]\n", "        #W = W - dW\n", "        dW = dW + ((YPrdVl - Y[cnt]) * XArr[cnt])\n", "        dB = dB + (YPrdVl - Y[cnt])\n", "    \n", "    dW = dW / len(XArr)\n", "    W = W - 0.0000001*dW\n", "    \n", "    dB = dB / len(XArr)\n", "    B = B - 0.0000001*dB\n", "    if run % 10 == 0:\n", "        print (\" \" + str(run) + \":\" + str(curPrd/len(XArr)))\n", "\"\"\""], "metadata": {"_cell_guid": "2f401578-9852-4001-bd88-4d05c2f7e28e", "collapsed": true, "_uuid": "d1b2fb9c79fbbedf8c272adcebbaf84157f320b8"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["1. Now testing time !!!!!!!!\n", "Load test data"], "metadata": {"_cell_guid": "20da8741-1b40-4ee6-99e5-6f0c909ee997", "collapsed": true, "_uuid": "acf3dde6d59d986cb1a26a2586a7379122a77136"}, "cell_type": "markdown"}, {"source": ["def readTestImg(dirNam):\n", "    rtXarr = list()\n", "    rtYarr = dict()\n", "    curCn = 0\n", "    for img in os.listdir(dirNam):\n", "        cim = cv2.imread(dirNam+'/'+img)\n", "        imgName = img.strip().split('.')[0]\n", "        rtYarr[curCn] = imgName \n", "        curCn = curCn+1\n", "        \n", "        cim = cv2.resize(cim, (32,32))\n", "        np = numpy.array(cim).flatten()\n", "        np = norm(np)\n", "        rtXarr.append(np)\n", "    \n", "    return rtXarr,rtYarr "], "metadata": {"_cell_guid": "65446774-a81a-476f-85e6-48645782eb24", "collapsed": true, "_uuid": "ae82a996820992e48ffbcb731351e59b36872d95"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": ["TArr,mgMp = readTestImg(TEST_DIR)\n", "#print(len(TArr))\n", "TData = numpy.array(TArr).T\n", "YTat = forwardMov(TData)\n", "#print(len(YTat))\n", "fVal = list()\n", "for cnt in range(0 , len(TArr)):\n", "    fVal.append((mgMp[cnt] , YTat[0][cnt]))\n", "    \n", "fVal = sorted(fVal , key=lambda x:int(x[0]))\n", "fl = open(\"sample_submission.csv\" , \"w\")\n", "fl.write(\"id,label\\n\")\n", "for cnt in range(0,len(fVal)):\n", "    fl.write(str(fVal[cnt][0])+\",\"+str(fVal[cnt][1])+\"\\n\")\n", "\n", "fl.close()\n", "\n", "print(\"id,label\")\n", "for cnt in range(0,len(fVal)):\n", "    print(str(fVal[cnt][0])+\",\"+str(fVal[cnt][1]))\n", "\n", "#print (fVal)\n"], "metadata": {"_cell_guid": "82ae258d-5b98-463b-947e-ad851d2b8429", "collapsed": true, "_uuid": "5de232f4090d6a39b23adf3f1dbbec27152573bc"}, "execution_count": null, "outputs": [], "cell_type": "code"}, {"source": [], "metadata": {"_cell_guid": "0a915601-dfa1-4546-a069-12c71cd8e59a", "_uuid": "d3372426c5a9f451a0fac9061534a381ad4edd9f"}, "cell_type": "markdown"}], "nbformat_minor": 1, "nbformat": 4}