{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"collapsed":true},"cell_type":"code","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\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport tensorflow as tf\nimport matplotlib.pyplot as plt\n%matplotlib inline\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\nimport os\nprint(os.listdir(\"../input\"))\n\n# Any results you write to the current directory are saved as output.\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"scrolled":true,"_uuid":"a655287b03cb051319b8d44d1f8bcc1ec505f0e5","collapsed":true},"cell_type":"code","source":"df=pd.read_csv(os.path.join('../input','train.csv'))\n# df.head()\ndft=pd.read_csv(os.path.join('../input','test.csv'))\n# dft.head()","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","collapsed":true,"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"labels=df['label'].values\nX_train=df.drop('label',axis=1).values.astype(np.float32)\nX_train/=225","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c69a721694a26c000b834a4481ef0c84779774cd","collapsed":true},"cell_type":"code","source":"import matplotlib.cm as cm\nindex=115\nimage=X_train[index]\nimage=image.reshape([28,28])\nplt.imshow(image,cmap=cm.binary)\nplt.axis('OFF')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"22f3144fd5c256b4543c2886880bede4f27f8a69"},"cell_type":"code","source":"from sklearn.preprocessing import LabelEncoder\ndef OneHotEncoding(labels,num_classes):\n    \n    \"\"\"To convert each label to their corresponding One hot encoded data\"\"\"\n    #label_encoder = LabelEncoder()\n    #integer_encoded = label_encoder.fit_transform(labels)\n    #print(integer_encoded)\n    # binary encode\n    #onehot_encoder = OneHotEncoder(sparse=False)\n    #integer_encoded = integer_encoded.reshape(len(integer_encoded), 1)\n    #onehot_encoded = onehot_encoder.fit_transform(integer_encoded)\n    #labels_encode=np.zeros((labels.shape[0],num_classes))\n    #labels_encode.flat[np.arange(labels.shape[0])*num_classes+labels.ravel()]=1\n    #labels_encode=enc.transform(labels)\n    #print(onehot_encoded)\n    # invert first example\n    #inverted = label_encoder.inverse_transform([np.argmax(onehot_encoded[0, :])])\n    #print(inverted)\n    c=0\n    labels_encoder=np.zeros((labels.shape[0],num_classes))\n    for ii in labels:\n        #print(ii.dtype)\n        labels_encoder[c][ii]=1\n        c=c+1\n        \n    \n    return labels_encoder","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"347c02e500694248236354845174d525d7e35d3b"},"cell_type":"code","source":"labels_encode=OneHotEncoding(labels,10)\nY_train=labels_encode.astype(np.uint8)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"9ace6aa3daa6499745ba45ff941cf68d7cfbe632"},"cell_type":"code","source":"def weight_initialize(shape):\n    return(tf.Variable(tf.truncated_normal(shape,stddev=0.1,dtype=tf.float32)))\n    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"349415631d666960a971f0f3faaa9de8dfd7bcc0"},"cell_type":"code","source":"def add_conv2D(inputs,W,stride,padding):\n    return tf.nn.conv2d(input=inputs,filter=W,strides=stride,padding=padding)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"3bf142784e792c9c622b5610d4bedb3f73441252"},"cell_type":"code","source":"def add_Max_Pool(inputs,ksize,padding,strides):\n    return tf.nn.max_pool(value=inputs,ksize=ksize,padding=padding,strides=strides)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"9bd80ab260381b6ef90d5c0100f2ba75b3a0bb70"},"cell_type":"code","source":"X=tf.placeholder(shape=[None,784],dtype=tf.float32)\nY=tf.placeholder(shape=[None,10],dtype=tf.float32)\n\ndef model():\n    W1=weight_initialize([5,5,1,32])\n    X_=tf.reshape(X,[-1,28,28,1])\n    layer1=tf.nn.relu(add_conv2D(X_,W1,[1,1,1,1],'SAME'))#[-1,28,28,32]\n    W2=weight_initialize([5,5,32,32])\n    layer2=tf.nn.relu(add_conv2D(layer1,W2,[1,1,1,1],'SAME'))\n    layer3=add_Max_Pool(layer2,[1,2,2,1],'SAME',[1,2,2,1])#[-1,14,14,32]\n    W3=weight_initialize([3,3,32,64])\n    layer4=tf.nn.relu(add_conv2D(layer3,W3,[1,1,1,1],'SAME'))#[-1,14,14,64]\n    layer5=add_Max_Pool(layer4,[1,2,2,1],'SAME',[1,2,2,1])#[-1,7,7,64]=[num_examples,x,y,nc]\n#     layer5=add_fc(layer4,256,tf.nn.relu)\n#     layer6=add_fc(layer5,10,tf.nn.softmax)\n    layer5=tf.reshape(layer5,[-1,7*7*64])\n    W6=weight_initialize([7*7*64,1024])\n    layer6=tf.nn.relu(tf.matmul(layer5,W6))\n    W7=weight_initialize([1024,10])\n    layer7=tf.nn.softmax(tf.matmul(layer6,W7))\n    return layer7\n    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"1161485358410bebc06c2a1565c9c85bb96b26bb"},"cell_type":"code","source":"index=0\nstart=index\ntotal=X_train.shape[0]\ndef next_batch(batch_size):\n    global index\n    global start\n    global total\n    global X_train\n    global Y_train\n    index+=batch_size\n    if (index>total):\n        prm=np.arange(total)\n        np.random.shuffle(prm)\n        X_train=X_train[prm]\n        Y_train=Y_train[prm]\n        start=0\n        index=batch_size\n        epochs+=1\n    assert (batch_size<=total)\n    return X_train[start:index],Y_train[start:index]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"34c0a203d281fc8126158dd84d00989cdac32aa7"},"cell_type":"code","source":"y_=model()\n#print(tf.argmax(y_,1).shape)\ncost=tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=Y,logits=y_))\noptimizer=tf.train.AdamOptimizer(0.0001).minimize(cost)\naccuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(Y,1), tf.argmax(y_,1)), tf.float32))\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"e9012266e791d7b7a91a5e44eadee170b970a11b"},"cell_type":"code","source":"init=tf.global_variables_initializer()\nsess=tf.InteractiveSession()\nsess.run(init)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"9720f08f2cbd829773c2e57757ff062857e7ca6d"},"cell_type":"code","source":"def train():\n    train_acc=[]\n    val_acc=[]\n    x_range=[]\n    display_acc=10\n    num_epochs=100\n    for i in range(num_epochs):\n        X_batch,Y_batch=next_batch(100)\n        if (i%display_acc==0):\n            train_acc=accuracy.eval(feed_dict={X:X_batch, Y:Y_batch})\n            print(train_acc,i)\n        sess.run(optimizer,feed_dict={X:X_batch,Y:Y_batch})    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true,"_uuid":"2c3a035cb962224fa63f9a7997bea0a83eb9300e"},"cell_type":"code","source":"train()","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}