diff --git a/joardar-aditya.ipynb b/joardar-aditya.ipynb index 0a721fb..641fd6d 100644 --- a/joardar-aditya.ipynb +++ b/joardar-aditya.ipynb @@ -88,7 +88,11 @@ "metadata": { "id": "vmMcjzTxbWzw", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 72 + }, + "outputId": "33f208f2-0256-473d-aca5-801408200151" }, "cell_type": "code", "source": [ @@ -97,8 +101,18 @@ "print (t2)\n", "print (t3)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Tensor(\"Const:0\", shape=(), dtype=float32)\n", + "Tensor(\"Const_1:0\", shape=(2,), dtype=float32)\n", + "Tensor(\"Const_2:0\", shape=(2, 3, 2), dtype=float32)\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -118,7 +132,11 @@ "metadata": { "id": "ol6O5I7Tb2nb", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 219 + }, + "outputId": "c25082db-86d0-4886-bd7f-0e7427f5134c" }, "cell_type": "code", "source": [ @@ -130,8 +148,26 @@ "print (sess.run(t3))\n", "sess.close()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "text": [ + "2.0\n", + "=======================\n", + "[1. 2.]\n", + "=======================\n", + "[[[1. 9.]\n", + " [2. 3.]\n", + " [4. 5.]]\n", + "\n", + " [[1. 9.]\n", + " [2. 3.]\n", + " [4. 5.]]]\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -177,7 +213,11 @@ "metadata": { "id": "FyVz0GNqgreZ", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + }, + "outputId": "b1ca0b0c-8453-4a17-dc5f-c298540e0206" }, "cell_type": "code", "source": [ @@ -193,8 +233,17 @@ "print ('Comp Graph 1 Alt: ', sess.run(comp_graph_1_alt))\n", "sess.close()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Comp Graph 1 : 7663\n", + "Comp Graph 1 Alt: 7663\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -212,7 +261,11 @@ "metadata": { "id": "4856BTvRhiBb", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 72 + }, + "outputId": "af71ba0d-1a2e-4d7c-a391-40c3cbde1b6e" }, "cell_type": "code", "source": [ @@ -231,8 +284,18 @@ "print ('Part 2 Result: ', part2_res)\n", "sess.close()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Complete Result: 3.5897436\n", + "Part 1 Result: -4.0\n", + "Part 2 Result: 3.5897436\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -257,18 +320,44 @@ "metadata": { "id": "-uHNe1BolJY0", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "outputId": "1fd02cfb-71b0-4899-edb9-0a169125b90a" }, "cell_type": "code", "source": [ "# Build the graph\n", "# YOUR CODE HERE\n", + "node_1 = tf.constant([9,10])\n", + "node_2 = tf.constant([7,8.65])\n", + "compute_1 = tf.multiply(tf.cast(node_1, tf.float32),node_2)\n", + "node_3 = tf.constant(5.6)\n", + "compute_2_bigger = tf.divide(tf.cast(compute_1, tf.float32),node_3)\n", + "node_4 = tf.constant([7.65,9])\n", + "node_5 = tf.constant([3.5,7.19])\n", + "compute_3_bigger = tf.add(tf.cast(node_4,tf.float32),node_5)\n", + "compute_graph = tf.minimum(compute_2_bigger,compute_3_bigger)\n", + "\n", + "\n", "\n", "# Execute \n", - "# YOUR CODE HERE" + "# YOUR CODE HERE\n", + "with tf.Session() as sess :\n", + " print(sess.run(compute_graph))\n", + " " ], - "execution_count": 0, - "outputs": [] + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[11.15 15.446429]\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -289,18 +378,43 @@ "metadata": { "id": "0ZhYwAlLmEvB", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 54 + }, + "outputId": "571eb074-8f2a-4407-c8ac-1ec6a515129d" }, "cell_type": "code", "source": [ "# Build the graph\n", "# YOUR CODE HERE\n", + "node_1 = tf.reduce_mean(tf.constant([[1.2,3.4],[7.5,8.6]]), 1)\n", + "node_2 = tf.constant([[7, 9],[8,6]])\n", + "compute_1 = tf.multiply(node_1,tf.cast(node_2,tf.float32))\n", + "node_3 = tf.transpose(tf.constant([[2.6, 18.1],[7.86,9.81],[9.36,10.41]]))\n", + "node_4 = tf.constant([[2.79,3.81,5.6],[7.3,5.67,8.9]])\n", + "compute_2 = tf.multiply(node_3,node_4)\n", + "compute_2_final = tf.reduce_sum(compute_2)\n", + "compute_graph_final = tf.add(compute_1,tf.cast(compute_2_final,tf.float32))\n", + "\n", + "\n", "\n", "# Execute \n", - "# YOUR CODE HERE" + "# YOUR CODE HERE\n", + "with tf.Session() as sess:\n", + " print(sess.run(compute_graph_final))" ], - "execution_count": 0, - "outputs": [] + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[386.1183 442.4683 ]\n", + " [388.41827 418.3183 ]]\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -318,18 +432,44 @@ "metadata": { "id": "GQWyCvsQmMcL", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 90 + }, + "outputId": "5cc1febd-2a57-40b9-852f-6fa434a16b4c" }, "cell_type": "code", "source": [ "# Build the graph\n", "# YOUR CODE HERE\n", + "node_1 = tf.constant(7.0)\n", + "node_2 = tf.transpose(tf.constant([[7.99,10.36],[5.36,7.98],[8.91,5.67]]))\n", + "node_3 = tf.constant([[7.36,8.91,10.41],[5.31,9.38,7.99]])\n", + "compute_1 = tf.multiply(node_2,node_3)\n", + "compute_1_next = tf.reduce_sum(compute_1)\n", + "compute_final_1 = tf.add(tf.cast(compute_1_next, tf.float32),node_1)\n", + "node_4 = tf.constant([[1,5.6,6.1,8],[0,0,7.98,9],[0,0,7.6,7],[0,0,0,8.98]])\n", + "compute_final = tf.divide(tf.cast(compute_final_1,tf.float32),tf.cast(node_4,tf.float32))\n", + "\n", "\n", "# Execute \n", - "# YOUR CODE HERE" + "# YOUR CODE HERE\n", + "with tf.Session() as sess:\n", + " print(sess.run(compute_final))\n" ], - "execution_count": 0, - "outputs": [] + "execution_count": 10, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[381.48438 68.12221 62.53842 47.685547]\n", + " [ inf inf 47.805058 42.387154]\n", + " [ inf inf 50.195312 54.49777 ]\n", + " [ inf inf inf 42.48156 ]]\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -388,7 +528,11 @@ "metadata": { "id": "1h1-D8K1uT48", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 347 + }, + "outputId": "992c357d-8457-409b-e920-77b2b08277ca" }, "cell_type": "code", "source": [ @@ -396,8 +540,21 @@ "plt.plot(train_X[:10], train_Y[:10], 'g')\n", "plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 13, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\ncHU9DONwXwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + } + } + ] }, { "metadata": { @@ -490,7 +647,11 @@ "metadata": { "id": "ttI7ZT-ozAm1", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 751 + }, + "outputId": "efe40b79-a530-447a-d6b0-fc3911629fbc" }, "cell_type": "code", "source": [ @@ -524,8 +685,49 @@ " plt.legend()\n", " plt.show()" ], - "execution_count": 0, - "outputs": [] + "execution_count": 18, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Loss after epoch 0 is 48263.527\n", + "Loss after epoch 50 is 29.616323\n", + "Loss after epoch 100 is 29.606073\n", + "Loss after epoch 150 is 29.595966\n", + "Loss after epoch 200 is 29.585863\n", + "Loss after epoch 250 is 29.575758\n", + "Loss after epoch 300 is 29.565636\n", + "Loss after epoch 350 is 29.55555\n", + "Loss after epoch 400 is 29.545452\n", + "Loss after epoch 450 is 29.535357\n", + "Loss after epoch 500 is 29.525278\n", + "Loss after epoch 550 is 29.515194\n", + "Loss after epoch 600 is 29.505116\n", + "Loss after epoch 650 is 29.495039\n", + "Loss after epoch 700 is 29.484968\n", + "Loss after epoch 750 is 29.474897\n", + "Loss after epoch 800 is 29.46484\n", + "Loss after epoch 850 is 29.454786\n", + "Loss after epoch 900 is 29.444733\n", + "Loss after epoch 950 is 29.434679\n", + "Now testing the model in the test set\n", + "The final loss is: 36.463516\n" + ], + "name": "stdout" + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + } + } + ] }, { "metadata": { @@ -551,6 +753,38 @@ "source": [ "def linear_regression(learning_rate=0.000005, n_epochs=100, interval=50):\n", " # YOUR CODE HERE\n", + " X = np.linspace(-30.0, 300.0, 300)\n", + " Y = 2 * np.linspace(-30.0, 250.0, 300) + np.random.randn(*X.shape)\n", + " train_X = X[:250]\n", + " train_Y = Y[:250]\n", + "\n", + " test_X = X[250:]\n", + " test_Y = Y[250:]\n", + " \n", + " x = tf.placeholder(tf.float32, name='x')\n", + " y = tf.placeholder(tf.float32, name='y')\n", + " W = tf.Variable(2.0, name='weight_1')\n", + " b = tf.Variable(0.0, name='bias_1')\n", + "\n", + " pred_y = (W*x) + b\n", + " loss = tf.reduce_mean(tf.square(y - pred_y))\n", + " optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(loss)\n", + " \n", + " with tf.Session() as sess:\n", + " # We need to initialize the variables in our graph\n", + " sess.run(tf.global_variables_initializer())\n", + " \n", + " for epoch in range(n_epochs):\n", + " _, curr_loss = sess.run([optimizer, loss], feed_dict={x:train_X, y:train_Y})\n", + " \n", + " if epoch % interval == 0:\n", + " print ('Loss after epoch', epoch, ' is ', curr_loss)\n", + " \n", + " print ('Now testing the model in the test set')\n", + " final_preds, final_loss = sess.run([pred_y, loss], feed_dict={x:test_X, y:test_Y})\n", + " \n", + " print ('The final loss is: ', final_loss)\n", + " \n", " pass" ], "execution_count": 0, @@ -560,28 +794,84 @@ "metadata": { "id": "A6MaclhK4rc6", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 237 + }, + "outputId": "b32ebd4d-ede1-4775-e003-8e5cd3c04353" }, "cell_type": "code", "source": [ "# Okay! Now let's tweak!\n", "linear_regression(learning_rate=0.000034, n_epochs=500)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 20, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Loss after epoch 0 is 2317.6775\n", + "Loss after epoch 50 is 30.305212\n", + "Loss after epoch 100 is 30.234413\n", + "Loss after epoch 150 is 30.163773\n", + "Loss after epoch 200 is 30.093317\n", + "Loss after epoch 250 is 30.023006\n", + "Loss after epoch 300 is 29.952877\n", + "Loss after epoch 350 is 29.882898\n", + "Loss after epoch 400 is 29.813099\n", + "Loss after epoch 450 is 29.743452\n", + "Now testing the model in the test set\n", + "The final loss is: 35.86633\n" + ], + "name": "stdout" + } + ] }, { "metadata": { "id": "peoHmV2M40uU", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 421 + }, + "outputId": "4a3ff3c6-e4c7-4be6-d74c-ff29c160c66d" }, "cell_type": "code", "source": [ "linear_regression(learning_rate=0.0000006, n_epochs=1000)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 21, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Loss after epoch 0 is 2315.8147\n", + "Loss after epoch 50 is 290.88348\n", + "Loss after epoch 100 is 59.476566\n", + "Loss after epoch 150 is 33.03049\n", + "Loss after epoch 200 is 30.007214\n", + "Loss after epoch 250 is 29.660625\n", + "Loss after epoch 300 is 29.619953\n", + "Loss after epoch 350 is 29.614208\n", + "Loss after epoch 400 is 29.612518\n", + "Loss after epoch 450 is 29.611212\n", + "Loss after epoch 500 is 29.609991\n", + "Loss after epoch 550 is 29.608738\n", + "Loss after epoch 600 is 29.607557\n", + "Loss after epoch 650 is 29.606316\n", + "Loss after epoch 700 is 29.605093\n", + "Loss after epoch 750 is 29.603853\n", + "Loss after epoch 800 is 29.602678\n", + "Loss after epoch 850 is 29.601437\n", + "Loss after epoch 900 is 29.600197\n", + "Loss after epoch 950 is 29.59901\n", + "Now testing the model in the test set\n", + "The final loss is: 33.068768\n" + ], + "name": "stdout" + } + ] }, { "metadata": { @@ -597,14 +887,48 @@ "metadata": { "id": "JKiHjGN15HPX", "colab_type": "code", - "colab": {} + "colab": { + "base_uri": "https://localhost:8080/", + "height": 421 + }, + "outputId": "3243c4f5-bf22-4ea9-e942-48de56573070" }, "cell_type": "code", "source": [ - "# YOUR CODE HERE" + "# YOUR CODE HERE\n", + "linear_regression(learning_rate=0.0000001,n_epochs=1000)" ], - "execution_count": 0, - "outputs": [] + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Loss after epoch 0 is 2320.5586\n", + "Loss after epoch 50 is 1631.0311\n", + "Loss after epoch 100 is 1149.1354\n", + "Loss after epoch 150 is 812.34424\n", + "Loss after epoch 200 is 576.9654\n", + "Loss after epoch 250 is 412.46185\n", + "Loss after epoch 300 is 297.49313\n", + "Loss after epoch 350 is 217.14172\n", + "Loss after epoch 400 is 160.98674\n", + "Loss after epoch 450 is 121.74005\n", + "Loss after epoch 500 is 94.31102\n", + "Loss after epoch 550 is 75.14198\n", + "Loss after epoch 600 is 61.744553\n", + "Loss after epoch 650 is 52.380676\n", + "Loss after epoch 700 is 45.83651\n", + "Loss after epoch 750 is 41.263077\n", + "Loss after epoch 800 is 38.06674\n", + "Loss after epoch 850 is 35.83255\n", + "Loss after epoch 900 is 34.27115\n", + "Loss after epoch 950 is 33.180035\n", + "Now testing the model in the test set\n", + "The final loss is: 11.334637\n" + ], + "name": "stdout" + } + ] } ] } \ No newline at end of file