{"cells": [{"execution_count": null, "cell_type": "code", "source": ["import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import tensorflow as tf\n", "\n", "n_inputs = 784 \n", "n_hidden1 = 500\n", "n_hidden2 = 400\n", "n_hidden3 = 300\n", "n_hidden4 = 200\n", "n_hidden5 = 100\n", "n_outputs = 10\n", "\n", "X=tf.placeholder(tf.float32,shape=(None,n_inputs),name=\"X\")\n", "Y=tf.placeholder(tf.int64,shape=(None),name=\"Y\")\n", "def neural_network(X,n_neurons,name,activation=None):\n", "    with tf.name_scope(\"name\"):\n", "        n_inputs=int(X.get_shape()[1])\n", "        stddev=2/np.sqrt(n_inputs)\n", "        init=tf.truncated_normal((n_inputs,n_neurons),stddev=stddev)\n", "        W=tf.Variable(init,name=\"kernel\")\n", "        b=tf.Variable(tf.zeros([n_neurons]),name=\"bias\")\n", "        Z=tf.matmul(X,W)+b\n", "        if activation is not None:\n", "            return activation(Z)\n", "        else:\n", "            return Z\n", "print(\"Initialized...\")"], "outputs": [], "metadata": {"_cell_guid": "9933c3f8-041c-4447-b865-f90c0ce8140e", "_uuid": "a3e8dae5838e684b5ce4d07753b6aa19bbb522c6"}}, {"execution_count": null, "cell_type": "code", "source": ["training=tf.placeholder_with_default(False,shape=(),name=\"training\")\n", "dropout_rate=0.8\n", "X_drop=tf.layers.dropout(X,dropout_rate,training=training)\n"], "outputs": [], "metadata": {"_cell_guid": "d68dc715-d7f8-439b-9843-790d00d471a4", "collapsed": true, "_uuid": "a5907636fb70348b1813f13c4fcba1c441298b6f"}}, {"execution_count": null, "cell_type": "code", "source": ["he_init=tf.contrib.layers.variance_scaling_initializer()\n", "with tf.name_scope(\"dnn\"):\n", "    hidden1=tf.layers.dense(X,n_hidden1,name=\"hidden1\",activation=tf.nn.relu,kernel_initializer=he_init)\n", "    hidden2=tf.layers.dense(hidden1,n_hidden2,name=\"hidden2\",activation=tf.nn.relu,kernel_initializer=he_init)\n", "    hidden3=tf.layers.dense(hidden2,n_hidden3,name=\"hidden3\",activation=tf.nn.relu,kernel_initializer=he_init)\n", "    hidden4=tf.layers.dense(hidden3,n_hidden4,name=\"hidden4\",activation=tf.nn.relu,kernel_initializer=he_init)\n", "    hidden5=tf.layers.dense(hidden4,n_hidden5,name=\"hidden5\",activation=tf.nn.relu,kernel_initializer=he_init)\n", "    \n", "    logits=tf.layers.dense(hidden5,n_outputs,name=\"Outputs\",kernel_initializer=he_init)\n", "    \n", "print(\"dnn\")"], "outputs": [], "metadata": {"_cell_guid": "8dd95b66-40cd-4b86-97f4-f961aaa2e593", "_uuid": "ba0d0aa07dd2f507c8514edb55391afceaf2afcb"}}, {"execution_count": null, "cell_type": "code", "source": ["with tf.name_scope(\"loss\"):\n", "    xentropy=tf.nn.sparse_softmax_cross_entropy_with_logits(labels=Y,logits=logits)\n", "    loss=tf.reduce_mean(xentropy,name=\"loss\")\n", "print(\"loss\")"], "outputs": [], "metadata": {"_cell_guid": "97c274cf-967d-4845-8160-d75af02a65b4", "_uuid": "f1a4f1d5e4b1c14dbdb0ef31742c37e1ccb33b8a"}}, {"execution_count": null, "cell_type": "code", "source": ["learning_rate=0.0001\n", "with tf.name_scope(\"train\"):\n", "    optimizer=tf.train.AdamOptimizer(learning_rate)\n", "    training_op=optimizer.minimize(loss)\n", "print(\"train\")"], "outputs": [], "metadata": {"_cell_guid": "a2dae0a4-b568-4f43-a0d2-0ee760d74fe0", "_uuid": "76523673366eb29a5b705e77ef4f34a716103f77"}}, {"execution_count": null, "cell_type": "code", "source": ["with tf.name_scope(\"eval\"):\n", "    correct=tf.nn.in_top_k(logits,Y,1)\n", "    accuracy=tf.reduce_mean((tf.cast(correct,tf.float32)))\n", "print(\"eval\")"], "outputs": [], "metadata": {"_cell_guid": "4a1bedc5-2d53-41b9-bf95-969610d4a35d", "_uuid": "6da1500ae3fff545c799ec0995e16ac759c23ddb"}}, {"execution_count": null, "cell_type": "code", "source": ["init=tf.global_variables_initializer()\n", "saver=tf.train.Saver()\n", "\n", "print(\"init\")"], "outputs": [], "metadata": {"_cell_guid": "2f536808-6df8-44df-84a9-96f8d6f8cd4c", "_uuid": "51f416d7664f8f2a2cbdd8705c71e75942ff0c15"}}, {"execution_count": null, "cell_type": "code", "source": ["dataset=pd.read_csv(\"../input/train.csv\")\n", "X_data=dataset.iloc[:,1:785].values\n", "Y_data=dataset.iloc[:,0:1].values\n", "from sklearn.cross_validation import train_test_split\n", "X_train,X_valid,y_train,y_valid=train_test_split(X_data,Y_data,test_size=0.2)\n", "print(\"input\")"], "outputs": [], "metadata": {"_cell_guid": "432b1085-19e0-4465-bc2d-731ab95b0cd3", "_uuid": "709e194535a532fe9167b1cda377aa1d6500298e"}}, {"execution_count": null, "cell_type": "code", "source": ["\n", "y_train=y_train.reshape(33600,)\n", "y_valid=y_valid.reshape(8400,)\n", "n_epochs=300\n", "batch_size=20\n", "lengthofdata=len(X_train)\n", "print(\"Initialized\")"], "outputs": [], "metadata": {"_cell_guid": "744cbf62-970c-43fb-8ea9-5b283a272444", "_uuid": "10c74683027566fec4a28209b9ac32a52c5d58d4"}}, {"execution_count": null, "cell_type": "code", "source": ["list1=[]\n", "with tf.Session() as sess:\n", "    init.run()\n", "    for epochs in range(n_epochs):\n", "        i=0\n", "        while i<lengthofdata:\n", "            start=i\n", "            end=i+batch_size\n", "            X_batch=np.array(X_train[start:end])\n", "            Y_batch=np.array(y_train[start:end])\n", "            i=end\n", "            sess.run(training_op,feed_dict={X:X_batch,Y:Y_batch})\n", "        acc_train=accuracy.eval(feed_dict={X:X_batch,Y:Y_batch})\n", "        X_valid=np.array(X_valid)\n", "        y_valid=np.array(y_valid)\n", "        acc_test=accuracy.eval(feed_dict={X:X_valid,Y:y_valid})\n", "        \n", "        print(epochs, \"Train Accuracy: \",acc_train,\"  test Accuracy: \",acc_test)\n", "        list1.append(acc_test)\n", "    save_path=saver.save(sess,\"./my_model_final.ckpt\")\n", "    "], "outputs": [], "metadata": {"_cell_guid": "1aa75049-945f-4041-bebb-bab6e61e8303", "scrolled": true, "_uuid": "44b33580fa985058b0b911a481b7d7a85aceeff8"}}, {"execution_count": null, "cell_type": "code", "source": ["%matplotlib inline\n", "plt.plot(list1)\n", "plt.xlabel(\"No Of Epochs\")\n", "plt.ylabel(\"Validation Accuracy\")"], "outputs": [], "metadata": {"_cell_guid": "2a949136-8d11-4702-b471-d779074bd474", "_uuid": "effc3a376e85743338dfe5eec8ec2abe46efaede"}}, {"execution_count": null, "cell_type": "code", "source": ["#Source https://github.com/ageron/handson-ml/blob/master/14_recurrent_neural_networks.ipynb\n", "from IPython.display import clear_output, Image, display, HTML\n", "\n", "def strip_consts(graph_def, max_const_size=32):\n", "    \"\"\"Strip large constant values from graph_def.\"\"\"\n", "    strip_def = tf.GraphDef()\n", "    for n0 in graph_def.node:\n", "        n = strip_def.node.add() \n", "        n.MergeFrom(n0)\n", "        if n.op == 'Const':\n", "            tensor = n.attr['value'].tensor\n", "            size = len(tensor.tensor_content)\n", "            if size > max_const_size:\n", "                tensor.tensor_content = \"b<stripped %d bytes>\"%size\n", "    return strip_def\n", "\n", "def show_graph(graph_def, max_const_size=32):\n", "    \"\"\"Visualize TensorFlow graph.\"\"\"\n", "    if hasattr(graph_def, 'as_graph_def'):\n", "        graph_def = graph_def.as_graph_def()\n", "    strip_def = strip_consts(graph_def, max_const_size=max_const_size)\n", "    code = \"\"\"\n", "        <script>\n", "          function load() {{\n", "            document.getElementById(\"{id}\").pbtxt = {data};\n", "          }}\n", "        </script>\n", "        <link rel=\"import\" href=\"https://tensorboard.appspot.com/tf-graph-basic.build.html\" onload=load()>\n", "        <div style=\"height:600px\">\n", "          <tf-graph-basic id=\"{id}\"></tf-graph-basic>\n", "        </div>\n", "    \"\"\".format(data=repr(str(strip_def)), id='graph'+str(np.random.rand()))\n", "\n", "    iframe = \"\"\"\n", "        <iframe seamless style=\"width:1200px;height:620px;border:0\" srcdoc=\"{}\"></iframe>\n", "    \"\"\".format(code.replace('\"', '&quot;'))\n", "    display(HTML(iframe))"], "outputs": [], "metadata": {"_cell_guid": "e5b9645c-0bf2-4fc9-a687-a9e0427d50e9", "collapsed": true, "_uuid": "9ed99573c44b0f522c1208e781172afd5b5dd667"}}, {"execution_count": null, "cell_type": "code", "source": ["show_graph(tf.get_default_graph())"], "outputs": [], "metadata": {}}, {"execution_count": null, "cell_type": "code", "source": [], "outputs": [], "metadata": {"collapsed": true}}], "nbformat_minor": 1, "nbformat": 4, "metadata": {"kernelspec": {"name": "python3", "display_name": "Python 3", "language": "python"}, "language_info": {"nbconvert_exporter": "python", "file_extension": ".py", "codemirror_mode": {"name": "ipython", "version": 3}, "mimetype": "text/x-python", "name": "python", "pygments_lexer": "ipython3", "version": "3.6.3"}}}