{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#
CS568:Deep Learning
Spring 2020
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Test 3 - Training a perceptron (10 marks)\n", "Write a program to learn the optimal weights to model the AND gate functionality using perceptron.\n", "\n", "+ **Assigned**: Friday, February 28, 2020\n", "+ **Due **: Monday, March 2, 2020 before **5.00 PM**" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "| input |output|\n", "| [0, 0] | 1.0 |\n", "| [0, 1] | 1.0 |\n", "| [1, 0] | 1.0 |\n", "| [1, 1] | 1.0 |\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "#AND gate\n", "X=[[0,0],[0,1],[1,0],[1,1]] # 4 input training vectors \n", "T=[-1,-1,-1,1] # targets [-1,1]\n", "\n", "global w\n", "w = np.random.randn(3)\n", "\n", "\n", "\n", "# plot red and blue points for AND gate input\n", "for i in range(len(X)): \n", " x = X[i]\n", " if T[i]== -1:\n", " plt.plot(x[0],x[1],'ro')\n", " else:\n", " plt.plot(x[0],x[1],'bo')\n", "\n", "plt.show()\n", "\n", "def draw_boundry():\n", " ## add code here to plot boundry \n", " plt.plot()\n", " \n", " \n", "done = False \n", "iter=1\n", "while not(done):\n", " done = True\n", " ## add code here to learn the optimal weights to model AND gate functionality using perceptron\n", " \n", " \n", " \n", "\n", "print(\"| input |output|\")\n", "for x in range(len(X)):\n", " output = np.sign(np.dot(w,np.append(X[x],1)))\n", " print(\"| {} | {} |\".format(X[x], output))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.4" } }, "nbformat": 4, "nbformat_minor": 2 }