{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" } }, "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "id": "mvMOFZM5R5XA" }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "source": [ "# Sample data\n", "X = np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1]])\n", "y = np.array([[0,0,1,1]]).T\n", "lr = 0.5\n", "it = 10" ], "metadata": { "id": "BUBP_HqSg62i" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# initialize weights\n", "np.random.seed([69])\n", "W = 2*np.random.random((len(X[0]),1))-1" ], "metadata": { "id": "fxhaGX9Xhzx5" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "def sig(x):\n", " return 1 /(1+np.exp(-x))" ], "metadata": { "id": "9ha5tlkEhdh6" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "def lineral (X, y, lr, it, W):\n", " er = np.zeros(it)\n", " for i in range(it):\n", " for n in range(len(X)):\n", " \n", " x_ = np.reshape(X[n], (len(X[0]),1))\n", " y_ = y[n]\n", "\n", " out = np.dot(W.T,x_)\n", "\n", " er[i] = (y_-out)**2\n", "\n", " W_delta = lr*(y_ - out)*x_\n", " W += W_delta\n", "\n", " er[i] /= len(X)\n", " return (er, W)" ], "metadata": { "id": "6f6upObGhjfb" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "MSE_lin, W_lin = lineral(X, y, lr, it, W)\n", "output_lin = np.dot(X,W_lin)" ], "metadata": { "id": "w-Xf_o7bpMfj" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "print(\"output after training (\",it,\"iterations):\\n\",output_lin)\n", "print(\"target output:\\n\",y)\n", "\n", "plt.figure()\n", "plt.plot(range(it),MSE_lin,color=\"blue\",label=\"MSE\")\n", "plt.title(\"MSE with LINEAR activation\")\n", "plt.legend()\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 444 }, "id": "MxP0GUdcrq3x", "outputId": "c48162b7-0b0f-43cf-cfc1-ecf0e912176f" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "output after training ( 10 iterations):\n", " [[-1.08941748e-05]\n", " [-5.96048113e-06]\n", " [ 9.99990133e-01]\n", " [ 9.99995066e-01]]\n", "target output:\n", " [[0]\n", " [0]\n", " [1]\n", " [1]]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAEICAYAAABRSj9aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3de7xVdZ3/8debmyAYKjBeOCBGppIi6BEl5OwuZtYgNtWMQDpeh4e/0bGaah7VTOlo0zTalJldhhzHsQwyM7PMC5MpmJIcFFEgCxH1EAqCtxQQ8PP747uObQ7nss85+7D22fv9fDzWY++9bvuzN5z3Xuu7Ll9FBGZmVr365F2AmZn1LAe9mVmVc9CbmVU5B72ZWZVz0JuZVTkHvZlZlXPQW+4kLZf0rnam3yPpvN1YUq8n6buSvtBD627338sqj4O+RkhaI+l1ScNbjH9YUkgak72uk/QTSc9LeknSY5LOyqaNyeb9U4vhtO7UFhHviIh7sve4RNIPurouSe+S1NTGtOskfSl73vxZftlinh9IuqRoXW+08nknt7Le7ZIOaDH+EknbsmVelHR/y2XLQdJZku4rHhcR50fEZWVY95vfWdG63/z3st7BQV9bngRmNr+QdCSwZ4t5vg88AxwEDAPOAJ5rMc/eETGkaPhRD9bc046T9M52pv+xxWcdEhEPNE+UNBj4CPAScHory/8oIoYAw4FfAz8uZ/FmpXDQ15bvA39b9PpM4PoW8xwLXBcRr0bE9oh4OCJu7+wbSXq3pEeLXs+XtLjo9UJJH8qer5F0oqSTgc8Dp2VbwY8UrfIgSb+R9Iqku1rumXTD5cC/dWP5jwAvApeSvs9WRcR24AZgpKQRrc0jaaykuyVtzPaobpC0d9H0UZJulrQhm+dqSYcD3wUmN+85ZPMW772slDStaD39snUcnb3+saRnsz24BZLekY2fDXwM+Kds3T/Pxq+RdGL2fA9JV0r6YzZcKWmPbNq7JDVJ+pSk9ZLWSTq7i9+zdYODvrYsAt4i6XBJfYEZQMtmkkXAtyTNkDS6m+91iKThkvoD44EDJe0laRBQDywsXiAi7gC+TLYVHBFHFU2eBZwN/AUwAPh0N2or9m3g7c3B1QVnAnOBecBhko5pbSZJA0g/shuBF9pYl4B/Bw4EDgdGAZdky/cFfgE8BYwBRgLzImIlcD7wQPad7b3raplL0Z4c8H7g+Yh4KHt9O3AI6bt9iPSDRETMyZ5fnq37lFbW/c/A8cAE4ChgEvAvRdP3B4Zm9Z5L+r+1Txuf33pIxQa9pGuzrYDHyrS+0dmW4EpJK5rbpGtQ81b9+4CVwNoW0/+aFMBfAJ6UtFTSsS3meT5rc24eDm/5JhGxGVgMNADHAI8AvwGmkILhDxGxsRN1/09E/D5b742kYCmHzaQt+i+1Mf3AFp/1xay5huyH8N3ADyPiOeBX7LzHBPA32Vb2ZuDvgI9mW/e7iIhVETE/IrZGxAbga0AhmzyJ9APwmWxva0tE3NfaelrxQ2C6pOZmulmk8G9+32sj4pWI2Er6YTlK0tAS1/0x4NKIWJ/V/K+k5r5m27Lp2yLil8CfgENLXLeVScUGPXAdcHIZ13c9cEVEHE76o1lfxnX3Jt8n/aGfxa7NNkTECxHx2Yh4B7AfsBS4RZKKZhseEXsXDSvbeK97gXeRwv5e4B5ScBWy153xbNHz14AhnVy+PdcA+0lqbYv1jy0+694R8Wo27QxgZUQszV7fAMzK9mCa3ZhtZe8HPEb60WuVpP0kzZO0VtLLpL2t5iaqUcBTbf1ItCciVpF+1E/Jwn46KfyR1FfSVyQ9kb3nmmyxUpvGDiTtZTR7KhvXbGOLmsv9b2clqNigj4gFwKbicVkb5h2SlmRtvIeVsi5J44B+ETE/W/efIuK18ldd+SLiKdJB2Q8CN3cw7/PAV0l/uPt24e1aBv29dBz0u/12qhHxOmlL9DJS80mp/hZ4a9a+/SxpC3w46btt+R7PA7OBS9Ti7JwiXyZ9/iMj4i2kg7vN9TwDjJbUr7WPUEKtzc03pwIrsvCH9KN/KnAiqYllTDa++X07WvcfSQfum43OxlkFqdigb8Mc4B8i4hhSG+23S1zu7cCL2YGshyVdkbV51qpzgfcUbZm+SdJ/SDoiO2C3F/D/gFWdbGZpdj9pN30S8GBELCeFwnHAgjaWeQ4YI6lb/zclDWwxdBTg3wcGUuJepNJpkmNJn21CNhxB2lJu2XwDQEQ8DtwJ/FMbq92L1LTxkqSRwGeKpj0IrAO+Imlw9pmmZNOeA+qy4wBtmQecRPr3/GGL99xKOnawJ+nHpthzwFvbWe9c4F8kjcgOkH+RXY/7WM56TdBLGgK8E/ixpKXAfwEHZNM+rHS+d8vhzmzxfsBU0o/DsaT/uGft9g9RISLiiYhobGPynsBPSWeSrCYF8/QW87yonc8r/8c23udV0sG95dlWM8ADpCaItprOmk8/3CjpoTbm6chIUpt48TC2vQUiYgcppFruuRyoXc+j/wjpIOzPIuLRiHi2eQC+AUyT1NYe0BXAbEl/0cq0fwWOJp2qeRtFe1xZfacAbwOeBpqA5usX7gaWA89Ker6Nz7eO9N2/Eyg+HfZ6UnPLWmAF6SB6sf8GxmXHJm5pZdVfAhqBZcCjpH/vto53WE5UyR2PZAdMfxERR0h6C/B4RLS129veeo4H/iMiCtnrM4DjI+KCctZrZlaJes0WfUS8TDoL5K8BlBzVwWLNFgN768/nL7+HtPViZlb1KjboJc0l7Woeml10cS7pVK5zlS6kWU46iNShbLf308CvlC7iEfC9nqnczKyyVHTTjZmZdV/FbtGbmVl5tHZObu6GDx8eY8aMybsMM7NeY8mSJc9HRKv3UarIoB8zZgyNjW2d/WdmZi1JeqqtaW66MTOrcg56M7Mq56A3M6tyFdlGb2bWVdu2baOpqYktW7bkXUqPGDhwIHV1dfTv37/jmTMOejOrKk1NTey1116MGTOGju9l17tEBBs3bqSpqYmDDz645OXcdGNmVWXLli0MGzas6kIeQBLDhg3r9N6Kg97Mqk41hnyzrny2qgn6rVvh8sth/vy8KzEzqyxVE/QDBsAVV8AP3OWBmeVMEqeffvqbr7dv386IESOYNm0aAM899xzTpk3jqKOOYty4cXzwg6lTsjVr1jBo0CAmTJjw5nD99bv0+NlpVXMwVoKGBljQVr9FZma7yeDBg3nsscfYvHkzgwYNYv78+YwcOfLN6V/84hd53/vex8c//nEAli1b9ua0sWPHsnTp0l3W2R1Vs0UPUCjAmjXw9NN5V2Jmte6DH/wgt912GwBz585l5syZb05bt24ddXV1b74eP358j9bS4Ra9pGuBacD6iDiilemfId0nvnl9hwMjImKTpDXAK8AOYHtE1Jer8NYUCunx3nvhjDN68p3MrDf4xCegzBvHTJgAV17Z8XwzZszg0ksvZdq0aSxbtoxzzjmHhQsXAnDBBRdw2mmncfXVV3PiiSdy9tlnc+CBBwLwxBNPMGHChDfX881vfpOpU6d2q+ZSmm6uA64m9S25i4i4gtQPJpJOAT4ZEZuKZnl3RLTaj2W5HXEE7L23g97M8jd+/HjWrFnD3Llz32yDb/b+97+f1atXc8cdd3D77bczceJEHnvsMaBnmm46DPqIWJD13VqKmaRe4XPRty9Mnep2ejNLStny7knTp0/n05/+NPfccw8bN27cadq+++7LrFmzmDVrFtOmTWPBggUcc8wxPVJH2droJe0JnAz8pGh0AHdJWiJpdgfLz5bUKKlxw4YNXa6jUIA//AHWrevyKszMyuKcc87h4osv5sgjj9xp/N13381rr70GwCuvvMITTzzB6NGje6yOch6MPQX4TYtmmxMi4mjgA8AFkhraWjgi5kREfUTUjxjR6r3zS9KQvcO993Z5FWZmZVFXV8dFF120y/glS5ZQX1/P+PHjmTx5Mueddx7HHnss8Oc2+ubhqquu6nYdJfUZmzXd/KK1g7FF8/wU+HFE/LCN6ZcAf4qIr3b0fvX19dHVjke2b4d994XTT4dvf7tLqzCzXmzlypUcfvjheZfRo1r7jJKWtHXCS1m26CUNBQrAz4rGDZa0V/Nz4CTgsXK8X3v69YMpU7xFb2bWrMOglzQXeAA4VFKTpHMlnS/p/KLZ/gq4KyJeLRq3H3CfpEeAB4HbIuKOchbfloYGWLECutHUb2ZWNUo562ZmCfNcRzoNs3jcauCorhbWHc3n0y9cCB/+cB4VmFmeIqJqb2xWSnN7S1V1ZWyz+noYNMjNN2a1aODAgWzcuLFLgVjpmu9HP3DgwE4tVzX3uik2YABMnuygN6tFdXV1NDU10Z3TtCtZcw9TnVGVQQ+p+eaSS+CFF2CfffKuxsx2l/79+3eq96VaUJVNN5CCPgLuuy/vSszM8lW1QX/ccakJx803ZlbrqjboBw5MYe/73phZravaoIfUfPPQQ/DKK3lXYmaWn6oP+h074De/ybsSM7P8VHXQT56cbong5hszq2VVHfSDB6eLp3xA1sxqWVUHPaTmm8WLIbv1s5lZzan6oG9ogG3b4IEH8q7EzCwfVR/0J5wAffq4nd7MalfVB/1b3gITJ7qd3sxqV9UHPaTmm0WLYMuWvCsxM9v9aiLoCwXYujUdlDUzqzU1EfRTp6ZHN9+YWS2qiaDfd1848kgHvZnVplL6jL1W0npJrXbsLeldkl6StDQbvlg07WRJj0taJemz5Sy8swoFuP/+dKqlmVktKWWL/jrg5A7mWRgRE7LhUgBJfYFvAR8AxgEzJY3rTrHdUSiki6aWLMmrAjOzfHQY9BGxANjUhXVPAlZFxOqIeB2YB5zahfWUhdvpzaxWlauNfrKkRyTdLukd2biRwDNF8zRl43Kx335w2GG+cMrMak85gv4h4KCIOAr4JnBLV1YiabakRkmNPdWpb6GQuhbcsaNHVm9mVpG6HfQR8XJE/Cl7/kugv6ThwFpgVNGsddm4ttYzJyLqI6J+xIgR3S2rVYUCvPwyLF3aI6s3M6tI3Q56SftLUvZ8UrbOjcBi4BBJB0saAMwAbu3u+3VHQ0N6dPONmdWSUk6vnAs8ABwqqUnSuZLOl3R+NstHgcckPQJcBcyIZDtwIXAnsBK4MSKW98zHKM3IkTB2rA/Imllt6dfRDBExs4PpVwNXtzHtl8Avu1ZazygU4JZb4I030l0tzcyqXc1FXUMDbNoEy3PdtzAz231qLugLhfTo5hszqxU1F/RjxsDo0Q56M6sdNRf0kJpvFiyAiLwrMTPreTUZ9IUCrF8Pjz+edyVmZj2vZoMe3HxjZrWhJoP+bW+D/fd30JtZbajJoJfSVr3b6c2sFtRk0EMK+rVrYfXqvCsxM+tZNRv0zfe9cfONmVW7mg36ceNg+HDf4MzMql/NBr2Utuq9RW9m1a5mgx5S0K9ZA08/nXclZmY9p6aDvvl8ejffmFk1q+mgP/JI2HtvN9+YWXWr6aDv2xemTnXQm1l1q+mgh9RO/4c/wLp1eVdiZtYzaj7o3U5vZtWu5oN+4kQYMsTNN2ZWvUrpHPxaSeslPdbG9I9JWibpUUn3SzqqaNqabPxSSY3lLLxc+vWDKVO8RW9m1auULfrrgJPbmf4kUIiII4HLgDktpr87IiZERH3XSux5hULqQ/b55/OuxMys/DoM+ohYAGxqZ/r9EfFC9nIRUFem2nYbt9ObWTUrdxv9ucDtRa8DuEvSEkmz21tQ0mxJjZIaN2zYUOay2ldfD4MGuZ3ezKpTv3KtSNK7SUF/QtHoEyJiraS/AOZL+l22h7CLiJhD1uxTX1+/W+8SP2AATJ7sLXozq05l2aKXNB64Bjg1IjY2j4+ItdnjeuCnwKRyvF9PKBTgkUfghRc6ntfMrDfpdtBLGg3cDJwREb8vGj9Y0l7Nz4GTgFbP3KkEDQ2pt6n77su7EjOz8uqw6UbSXOBdwHBJTcDFQH+AiPgu8EVgGPBtSQDbszNs9gN+mo3rB/wwIu7ogc9QFscdl5pwFiyAU07Juxozs/LpMOgjYmYH088Dzmtl/GrgqF2XqEyDBqWw9wFZM6s2NX9lbLGGBnjoIXjllbwrMTMrHwd9kUIBduyA++/PuxIzs/Jx0Bd55zvTLRHcfGNm1cRBX2TwYDjmGAe9mVUXB30LhQIsXgyvvZZ3JWZm5eGgb6FQgG3bYNGivCsxMysPB30LU6ZAnz5uvjGz6uGgb2HoUJgwwfe9MbPq4aBvRaGQmm62bs27EjOz7nPQt6JQgC1b4MEH867EzKz7HPStOCG70bKbb8ysGjjoWzFsGBx5pA/Imll1cNC3oVBIt0LYti3vSszMusdB34aGBnj1VViyJO9KzMy6x0HfhoaG9Oh2ejPr7Rz0bdhvPzjsMLfTm1nv56BvR0ND6lpwx468KzEz6zoHfTsKBXj55dRpuJlZb1VS0Eu6VtJ6Sa127q3kKkmrJC2TdHTRtDMl/SEbzixX4btDczu9m2/MrDcrdYv+OuDkdqZ/ADgkG2YD3wGQtC+pM/HjgEnAxZL26Wqxu1tdHbz1rQ56M+vdSgr6iFgAbGpnllOB6yNZBOwt6QDg/cD8iNgUES8A82n/B6PiFAqwcCG88UbelZiZdU252uhHAs8UvW7KxrU1fheSZktqlNS4YcOGMpXVfYUCbNoEy5fnXYmZWddUzMHYiJgTEfURUT9ixIi8y3mT2+nNrLcrV9CvBUYVva7LxrU1vtcYMwZGjfKFU2bWe5Ur6G8F/jY7++Z44KWIWAfcCZwkaZ/sIOxJ2bheQ0rNN/feCxF5V2Nm1nmlnl45F3gAOFRSk6RzJZ0v6fxsll8Cq4FVwPeAvweIiE3AZcDibLg0G9erFAqwfj08/njelZiZdV6/UmaKiJkdTA/ggjamXQtc2/nSKkfxfW8OOyzfWszMOqtiDsZWskMOgf339wFZM+udHPQlcDu9mfVmDvoSNTTA2rXw5JN5V2Jm1jkO+hIVCunRzTdm1ts46Es0bhwMH+6gN7Pex0FfIgmmTnXQm1nv46DvhEIB1qyBp5/OuxIzs9I56DuhuZ3et0Mws97EQd8JRx4JQ4e6+cbMehcHfSf07Zva6b1Fb2a9iYO+kwoF+P3vYd26vCsxMyuNg76Tiu97Y2bWGzjoO+noo2HIEAe9mfUeDvpO6tcPpkzxAVkz6z0c9F3Q0JD6kH3++bwrMTPrmIO+C5rPp1+4MN86zMxK4aDvgmOPhYED3XxjZr2Dg74LBgyAyZMd9GbWOzjou6hQgEcegRdfzLsSM7P2ldo5+MmSHpe0StJnW5n+dUlLs+H3kl4smrajaNqt5Sw+T4VC6m3qvvvyrsTMrH0ddg4uqS/wLeB9QBOwWNKtEbGieZ6I+GTR/P8ATCxaxeaImFC+kivDccelJpx774Vp0/KuxsysbaVs0U8CVkXE6oh4HZgHnNrO/DOBueUorpINGgSTJvnCKTOrfKUE/UjgmaLXTdm4XUg6CDgYuLto9EBJjZIWSfpQW28iaXY2X+OGDRtKKCt/hQIsWQKvvJJ3JWZmbSv3wdgZwE0RsaNo3EERUQ/MAq6UNLa1BSNiTkTUR0T9iBEjylxWzygUYMcOuP/+vCsxM2tbKUG/FhhV9LouG9eaGbRotomItdnjauAedm6/79UmT063LvZplmZWyUoJ+sXAIZIOljSAFOa7nD0j6TBgH+CBonH7SNojez4cmAKsaLlsbzVkCNTXu53ezCpbh0EfEduBC4E7gZXAjRGxXNKlkqYXzToDmBcRUTTucKBR0iPAr4GvFJ+tUw0KBXjwQXjttbwrMTNrnXbO5cpQX18fjY2NeZdRkttuS6dX/upX8J735F2NmdUqSUuy46G78JWx3XTCCdCnj5tvzKxyOei7aehQmDDBB2TNrHI56MugoQEWLYKtW/OuxMxsVw76MigUYMsWWLw470rMzHbloC+DqVPTo5tvzKwSOejLYNgwOOIIB72ZVSYHfZkUCulWCNu25V2JmdnOHPRlUijAq6/CQw/lXYmZ2c4c9GXidnozq1QO+jLZf3849FBfOGVmlcdBX0aFAixcmG5dbGZWKRz0ZVQowMsvp07DzcwqhYO+jBoa0qObb8yskjjoy6iuDt76Vh+QNbPK4qAvs0IhbdG/8UbelZiZJQ76MmtogE2bYPnyvCsxM0sc9GX23vemfmS/8AVv1ZtZZXDQl9moUfCf/wk/+xlcdlne1ZiZlRj0kk6W9LikVZI+28r0syRtkLQ0G84rmnampD9kw5nlLL5SXXQRnHkmXHIJ3HJL3tWYWa3r19EMkvoC3wLeBzQBiyXd2kon3z+KiAtbLLsvcDFQDwSwJFv2hbJUX6Ek+O53YcUKOOOM1CnJO96Rd1VmVqtK2aKfBKyKiNUR8TowDzi1xPW/H5gfEZuycJ8PnNy1UnuXgQPh5pth8GD40Ifghar+aTOzSlZK0I8Enil63ZSNa+kjkpZJuknSqE4ui6TZkholNW7YsKGEsipfXR385Cfw1FMwa5ZvjWBm+SjXwdifA2MiYjxpq/1/O7uCiJgTEfURUT9ixIgylZW/KVPg6qvhjjvg85/Puxozq0WlBP1aYFTR67ps3JsiYmNENHeNfQ1wTKnL1oLZs+H88+Hyy2HevLyrMbNaU0rQLwYOkXSwpAHADODW4hkkHVD0cjqwMnt+J3CSpH0k7QOclI2rOd/4BpxwApxzDjz8cN7VmFkt6TDoI2I7cCEpoFcCN0bEckmXSpqezXaRpOWSHgEuAs7Klt0EXEb6sVgMXJqNqzkDBsBNN6X+ZT/0IaiSwxBm1gsoIvKuYRf19fXR2NiYdxk9orExbdlPngx33QX9++ddkZlVA0lLIqK+tWm+MnY3q6+H730P7rkHPvWpvKsxs1rQ4QVTVn5nnJHa6b/+dZg4Ec4+O++KzKyaeYs+J5dfnm6Adv758Nvf5l2NmVUzB31O+vWDH/0IRo6ED38Y1q3LuyIzq1YO+hwNG5Zuevbii/CRj8DWrR0vY2bWWQ76nI0fD//7v/DAA3DhhVCBJ0GZWS/noK8AH/1ouj3CNdeku16amZWTg75CXHYZ/OVfpnvZL1iQdzVmVk0c9BWiTx+44QYYOzZt4T/9dN4VmVm1cNBXkKFD08HZrVvhr/4KNm/OuyIzqwYO+gpz2GFpy/7hh+Hv/s4HZ82s+xz0FWjatNRmf8MN6epZM7PucNBXqM9/Pp1b/5nPwPz5eVdjZr2Zg75CSXDddTBuHJx2GjzxRN4VmVlv5aCvYEOGpIOzkO5h/6c/5VuPmfVODvoKN3Ys3HgjrFgBZ53lg7Nm1nkO+l7gxBPhiivgJz+BL38572rMrLdx0PcSn/wknH46fOEL8Itf5F2NmfUmJQW9pJMlPS5plaTPtjL9HyWtkLRM0q8kHVQ0bYekpdlwa8tlrTQSzJkDRx8Ns2bB736Xd0Vm1lt0GPSS+gLfAj4AjANmShrXYraHgfqIGA/cBFxeNG1zREzIhulYlw0aBD/9KQwcCKeeCi+9lHdFZtYblLJFPwlYFRGrI+J1YB5wavEMEfHriHgte7kIqCtvmdZs1KjUVr96NXzsY7BjR94VmVmlKyXoRwLPFL1uysa15Vzg9qLXAyU1Slok6UNdqNFamDoVrroKbrsNLr4472rMrNKVtXNwSacD9UChaPRBEbFW0luBuyU9GhG7XP4jaTYwG2D06NHlLKsqnX9+uh/Ov/0bTJiQ7nhpZtaaUrbo1wKjil7XZeN2IulE4J+B6RHxZqd4EbE2e1wN3ANMbO1NImJORNRHRP2IESNK/gC1SoJvfhMmT4Yzz4Rly/KuyMwqVSlBvxg4RNLBkgYAM4Cdzp6RNBH4L1LIry8av4+kPbLnw4EpwIpyFV/r9tgjtdfvvXe6cnbjxrwrMrNK1GHQR8R24ELgTmAlcGNELJd0qaTms2iuAIYAP25xGuXhQKOkR4BfA1+JCAd9GR1wQDoTZ+3adE+c7dvzrsjMKo2iAq+pr6+vj8bGxrzL6FWuuw7OPjtdWPW1r+VdjZntbpKWRER9a9PKejDW8nPWWeng7Ne/DhMnwhln5F2RmVUK3wKhinz1q/Dud6eeqbxDZGbNHPRVpH//dKfL/fdPfc4+91zeFZlZJXDQV5nhw9M97DduTD1UPf543hWZWd4c9FVowoR0cHbRotTZ+PHHw3e+A5s25V2ZmeXBQV+l/uZv4Jln0n3sX30V/v7v06mYH/0o/PznsG1b3hWa2e7ioK9iBxwAn/50umr2oYdS2C9YANOnw8iR8IlPpPEVeIatmZWRg74GSOmUy69/PV1YdeutUCik5pxjjoHx49MZO+vW5V2pmfUEB32N6d8fTjkFfvzjFOzf+U7qhPwzn4G6OvjAB2DuXNi8Oe9KzaxcHPQ1bN99010wH3ggnZ3zuc+lTshnzUqnaJ53Hixc6KYds97OQW8AvP3t8KUvwZNPwt13p/Pw582DhgYYOxYuuSR1dmJmvY+D3nbSp0+6uva669IFV9dfn4L+0kvT49SpcM017sbQrDdx0FubBg9O98yZPx+eegq+/GXYsCHdYmH//WHmTLjjDt8x06zSOeitJKNGpTb8lSvht7+Fc8+Fu+5KB29HjUoHcx99NO8qzaw1DnrrFAkmTYKrr4Y//hFuvhmOOw6uvDKdpnn00en5+vUdr8vMdg8HvXXZHnukg7a33JJC/6qrUhv/Jz+ZLsiaPh1uugm2bu14XWbWc9zxiJXd8uXpIO4PfpB+AAYMgAMPTOfpFw8jR/75+f77Qz/3jmDWZe11POKgtx6zYwf86lfpdM2mpnRVblNTGrZs2XnePn3SLRta/gAU/yiMHJn2IsxsV+5hynLRty+cdFIaikWkO2k2h37xD0BTUzrg+3//By+/vOs6R4xofY+geNyQIbvn85n1FiUFvaSTgW8AfYFrIuIrLabvAVwPHANsBE6LiDXZtM8B5wI7gIsi4s6yVW+9kgTDhqXhqKPanu/ll3f+ESh+/vTTcP/96b77LQ0d2noT0fDhMGgQDBzY/rDHHqlGs2rRYdBL6gt8C3gf0AQslnRrRKwomu1c4IWIeJukGcB/AKdJGgfMAKic3SoAAASiSURBVN4BHAj8n6S3R8SOcn8Qqz5veUsaDj+87Xk2b07HAYr3CIp/EJYtg2ef7fxtHPbYo7QfheKh1Pn7909NVX36pL2e1p63N60ry/iHq7aVskU/CVgVEasBJM0DTgWKg/5U4JLs+U3A1ZKUjZ8XEVuBJyWtytb3QHnKt1o3aFC6Ynfs2Lbn2bYthf3GjenYQCnD5s3tT9+0qe15K/Fe/9KuPwDN4S+1/7zU+br7vLWaSxnX2fGdXUdndHcdw4enW4mXWylBPxJ4puh1E3BcW/NExHZJLwHDsvGLWiw7srU3kTQbmA0wevToUmo3K0n//umirlGjds/77diRTilt6wdk+3Z444003xtvtP+81Pk6u8yObJ864s97O609b29aOZ+31Nr4zsxbrnV0RjnWMXRo99fRmoo5GBsRc4A5kM66ybkcsy7r2xf23DMNZpWglAum1gLF20J12bhW55HUDxhKOihbyrJmZtaDSgn6xcAhkg6WNIB0cPXWFvPcCpyZPf8ocHekE/RvBWZI2kPSwcAhwIPlKd3MzErRYdNN1uZ+IXAn6fTKayNiuaRLgcaIuBX4b+D72cHWTaQfA7L5biQduN0OXOAzbszMdi9fGWtmVgXauzLWNzUzM6tyDnozsyrnoDczq3IOejOzKleRB2MlbQCe6uLiw4Hny1hOb+bvYmf+Pnbm7+PPquG7OCgiRrQ2oSKDvjskNbZ15LnW+LvYmb+Pnfn7+LNq/y7cdGNmVuUc9GZmVa4ag35O3gVUEH8XO/P3sTN/H39W1d9F1bXRm5nZzqpxi97MzIo46M3MqlzVBL2kkyU9LmmVpM/mXU+eJI2S9GtJKyQtl/TxvGvKm6S+kh6W9Iu8a8mbpL0l3STpd5JWSpqcd015kvTJ7O/kMUlzJQ3Mu6Zyq4qgL+rA/APAOGBm1jF5rdoOfCoixgHHAxfU+PcB8HFgZd5FVIhvAHdExGHAUdTw9yJpJHARUB8RR5BuxT4j36rKryqCnqIOzCPidaC5A/OaFBHrIuKh7PkrpD/kVvvqrQWS6oC/BK7Ju5a8SRoKNJD6kCAiXo+IF/OtKnf9gEFZ73h7An/MuZ6yq5agb60D85oNtmKSxgATgd/mW0murgT+CXgj70IqwMHABuB/sqasayQNzruovETEWuCrwNPAOuCliLgr36rKr1qC3lohaQjwE+ATEfFy3vXkQdI0YH1ELMm7lgrRDzga+E5ETAReBWr2mJakfUh7/wcDBwKDJZ2eb1XlVy1B707IW5DUnxTyN0TEzXnXk6MpwHRJa0hNeu+R9IN8S8pVE9AUEc17eDeRgr9WnQg8GREbImIbcDPwzpxrKrtqCfpSOjCvGZJEaoNdGRFfy7uePEXE5yKiLiLGkP5f3B0RVbfFVqqIeBZ4RtKh2aj3kvp0rlVPA8dL2jP7u3kvVXhwusPOwXuDtjowz7msPE0BzgAelbQ0G/f5iPhljjVZ5fgH4IZso2g1cHbO9eQmIn4r6SbgIdLZag9ThbdD8C0QzMyqXLU03ZiZWRsc9GZmVc5Bb2ZW5Rz0ZmZVzkFvZlblHPRmZlXOQW9mVuX+P+7VDeor6C7wAAAAAElFTkSuQmCC\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "source": [ "def sigm (X, y, lr, it, W):\n", " er = np.zeros(it)\n", " for it in range(it):\n", " for n in range(len(X)):\n", " x_ = np.reshape(X[n], (len(X[0]),1))\n", " y_ = y[n]\n", " \n", " out = sig(np.dot(W.T,x_))\n", " \n", " er[it] += (y_-out)**2\n", " \n", " W_delta = lr * (y_ - out) * out * (1-out) * x_\n", " W += W_delta\n", "\n", " er[it] /= len(X)\n", " return (er, W)" ], "metadata": { "id": "KA8xGYeWr44m" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "MSE_sig, W_sig = sigm(X, y, lr, it, W)\n", "output_sig = np.dot(X,W_sig)" ], "metadata": { "id": "M3a25yk1sfB9" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "print(\"output after training (\",it,\"iterations):\\n\",output_sig)\n", "print(\"target output:\\n\",y)\n", "\n", "plt.figure()\n", "plt.plot(range(it),MSE_sig,color=\"red\",label=\"MSE\")\n", "plt.title(\"MSE with SIGMOID activation\")\n", "plt.legend()\n", "plt.show()\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 444 }, "id": "TOUPqiaJsksl", "outputId": "5c1121ae-f0ce-44a9-c42d-f5c648899858" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "output after training ( 10 iterations):\n", " [[-0.44099307]\n", " [-0.6178648 ]\n", " [ 1.15406727]\n", " [ 0.97719555]]\n", "target output:\n", " [[0]\n", " [0]\n", " [1]\n", " [1]]\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] } ] }