{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import csv\nimport tensorflow as tf\nimport pandas as reader\nfrom sklearn.model_selection import train_test_split\nimport numpy as np\nfrom sklearn.preprocessing import LabelEncoder\nimport matplotlib.pyplot as plt\n\ntf = tf.compat.v1\ntf.disable_v2_behavior()\n\ntrain = reader.read_csv(\"../input/digit-recognizer/train.csv\")\n\n# Reading Test Data Set\n\ninputData = train.drop(columns=['label'])\ntest = reader.read_csv(\"../input/digit-recognizer/test.csv\")\nx_test=test.values\ntotalrows=test.shape[0]\n# Setting output\nresult = train['label'].values\nencoder = LabelEncoder()\nencoder.fit(result)\nresult = encoder.transform(result)\n\n\n\ndef hot_encoder(label):\n    total=len(label)\n    unique=len(np.unique(label))\n    one_hot = np.zeros((total,unique))\n    one_hot[np.arange(total),label]=1\n    return one_hot\n\nY=hot_encoder(result)\nprint(\"Y\",Y.shape)\n\nlearning_rate = 0.045\nnoOfClasses = 10\ntraining_cycles = 400\ndim = inputData.shape[1]\nhiddenlayer1 = 100\nhiddenlayer2 = 100\n\nx = tf.placeholder(tf.float32,[None, dim])\nweight = tf.Variable(tf.ones([dim,noOfClasses]))\ntheeta = tf.Variable(tf.ones([noOfClasses]))\ny = tf.compat.v1.placeholder(tf.float32, [None,noOfClasses])\ndef feedforward(x,weights,thetas):\n    layer1 = tf.add(tf.matmul(x, weights['h1']), thetas['b1'])\n    layer1 = tf.nn.sigmoid(layer1)\n    layer2 = tf.add(tf.matmul(layer1, weights['h2']),thetas['b1'])\n    layer2 = tf.nn.relu(layer2)\n    output = tf.matmul(layer2, weights['output'])+thetas['output']\n\n    return output\n\n\nweights = {\n    'h1': tf.Variable(tf.truncated_normal([dim, hiddenlayer1])),\n    'h2': tf.Variable(tf.truncated_normal([hiddenlayer1, hiddenlayer2])),\n    'output': tf.Variable(tf.truncated_normal([hiddenlayer2, noOfClasses]))\n}\nthetas = {\n    'b1': tf.Variable(tf.truncated_normal([hiddenlayer1])),\n    'b2': tf.Variable(tf.truncated_normal([hiddenlayer2])),\n    'output': tf.Variable(tf.truncated_normal([noOfClasses]))\n}\n\nsaver=tf.train.Saver()\nneural = feedforward(x,weights,thetas)\nerror = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits_v2(logits=neural,labels=y))\noptimize = tf.train.AdamOptimizer(learning_rate).minimize(error)\ninputTrain, inputTest, resultTrain, resultTest = train_test_split(inputData, Y, test_size=0.2, random_state=1,\n                                                                  stratify=Y)\ninit = tf.global_variables_initializer()\nsession = tf.Session()\nsession.run(init)\npredict = 0\nif predict == 1:\n saver.restore(session,'model/feedforward3')\naccuracy_coll=[]\nmse_hist=[]\naccuracy = 0\ncost_history=0\nsteps=0\naccracy_hist = []\ncycles = []\nif predict !=1:\n    for i in range(training_cycles):\n        steps=steps+1\n\n        session.run(fetches=[optimize], feed_dict={\n                x: inputTrain,\n                y: resultTrain\n            })\n          \n        correct_prediction=tf.equal(tf.argmax(neural,1),tf.argmax(y,1))\n        accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))\n\n        cycles.append(i)\n          \n        accuracy=(session.run(accuracy,feed_dict={x:inputTest,y:resultTest}))\n         \n        print(\"iteration :\",steps ,\"Accuracy\",accuracy)\n        accracy_hist.append(accuracy)\n\n\nprint(\"Training Complete\")\nprint(cycles,accracy_hist)\nplt.plot(cycles,accracy_hist)\nplt.xlabel(\"Training Cycles\")\nplt.ylabel(\"Accuracy\")\nplt.title(\"Feed Forward Neural Network\")\nplt.show()\nres = [[]]\n\nimageid = 1\nif predict == 1:\n    finalprediction = tf.argmax(neural,1)\n    for i in range(totalrows):\n\n        prediction = session.run(finalprediction, feed_dict={x: x_test[i].reshape(1,784)})\n        no = prediction[0]\n        print(no)\n        res.append([imageid, no])\n        imageid = imageid+1\n\n    with open('feedforwardoutputtest3.csv', 'w', newline='') as file:\n        writer = csv.writer(file)\n        writer.writerows(res)\nif False:\n    save_path=saver.save(session,'model/feedforward3')\n    print(save_path)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","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}