Skip to content

Instantly share code, notes, and snippets.

@jose-roberto-abreu
Created August 5, 2015 02:44
Show Gist options
  • Save jose-roberto-abreu/ac922bc35be1cb00f8f6 to your computer and use it in GitHub Desktop.
Save jose-roberto-abreu/ac922bc35be1cb00f8f6 to your computer and use it in GitHub Desktop.
Implementation Neural Network
{"cells": [{"cell_type": "code", "metadata": {"trusted": true, "collapsed": false}, "execution_count": null, "outputs": [], "source": "import numpy as np\n\ndef loadDataSet():\n X = np.array([[1,1,1],[1,0,1],[1,1,0],[1,0,0]])\n y = np.array([[0],[1],[1],[0]])\n return X,y\n\ndef costError(w_1,w_2,currentIter):\n z_1 = X.dot(w_1.T)\n a_1 = np.hstack((np.ones((n_observations,1)),sigmoid(z_1)))\n \n z_2 = a_1.dot(w_2.T)\n a_2 = sigmoid(z_2)\n \n sumError = np.mean((y - a_2)**2)\n print(\"Error : %f , Iter: %d\"%(sumError,currentIter))\n \n \ndef sigmoid(z,derivate=False):\n if derivate:\n return sigmoid(z) * (1 - sigmoid(z))\n return 1 / (1 + np.e**-z)\n\ndef classify(w_1,w_2,input_test):\n z_1 = input_test.dot(w_1.T)\n a_1 = np.hstack((np.ones((1,1)),sigmoid(z_1)))\n \n z_2 = a_1.dot(w_2.T)\n a_2 = sigmoid(z_2)\n \n if a_2 >= 0.5:\n print(\"Classification : 1 , Prob: %f\"%a_2)\n else:\n print(\"Classification : 0 , Prob: %f\"%a_2)\n\nX,y = loadDataSet()\nn_observations,n_features = X.shape\nweights_1 = np.random.rand(2,3)\nweights_2 = np.random.rand(1,3)\n\nmaxIter = 5000\nfor currentIter in range(maxIter):\n costError(weights_1,weights_2,currentIter)\n \n #FeedFodward\n z_1 = X.dot(weights_1.T)\n a_1 = np.hstack((np.ones((n_observations,1)),sigmoid(z_1)))\n \n z_2 = a_1.dot(weights_2.T)\n a_2 = sigmoid(z_2)\n \n #BackPropagation\n d_2 = (y - a_2) #* sigmoid(z_2,derivate=True)\n d_1 = ((d_2.dot(weights_2))[:,1:]) * sigmoid(z_1,derivate=True)\n \n alpha = 1 #Learning Rate\n weights_2 = weights_2 + alpha * d_2.T.dot(a_1)\n weights_1 = weights_1 + alpha * d_1.T.dot(X)\n \nclassify(weights_1,weights_2,np.array([[1,1,1]])) \nclassify(weights_1,weights_2,np.array([[1,0,1]])) \nclassify(weights_1,weights_2,np.array([[1,1,0]])) \nclassify(weights_1,weights_2,np.array([[1,0,0]])) \n "}], "metadata": {"kernelspec": {"display_name": "Python 3", "name": "python3", "language": "python"}, "language_info": {"name": "python", "file_extension": ".py", "version": "3.4.3", "pygments_lexer": "ipython3", "codemirror_mode": {"name": "ipython", "version": 3}, "mimetype": "text/x-python", "nbconvert_exporter": "python"}}, "nbformat_minor": 0, "nbformat": 4}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment