In [89]:
import numpy as np
import matplotlib.pyplot as plt
import time

%matplotlib inline

Define the Neural Network Class


In [90]:
class n_network(object):
    
    # Initialize the class / constructor()!!
    def __init__(self, w1,w2):
        self.input_layer_size = 2
        self.output_layer_size = 1
        self.hidden_layer_size = 3
        
        #self.W1 = np.randn(self.input_layer_size,
        #                  self.hidden_layer_size)
        #self.W2 = np.randn(self.hidden_layer_size,
        #                  self.output_layer_size)
        self.w1=np.reshape(w1, (3,4))
        
        self.w2=np.reshape(w2, (4,1))
        print("************** The Weights **************")
        print("w1:\n", self.w1)
        print("w2:\n", self.w2)

    # Define the forward propagation function
    def forward_propagation(self, x):
        self.z2 = np.dot(x, self.w1)
        #print("z2:\n", self.z2)
        self.a2 = self.Zigmoid(self.z2)
        self.z3 = np.dot(self.a2, self.w2)
        #print("z3:\n", self.z3)
        yHat = self.Zigmoid(self.z3)
        return yHat

    # Define the sigmoid function
    def Zigmoid(self, z):
        return 1/(1+np.exp(-z))

In [91]:
print("****************** Machine Learning Fall 2016 ******************")
print("************** Assignment 2 Program implementation **************")
print("************************ Prasanna  Kolar ************************")

w1=np.array(([-0.18,-0.16,-0.03,-0.15],
[0.166,-0.18,0.01,-0.06],
[0.14,-0.14,-0.065,-0.06]), dtype=float)
w2=np.array(([-1.01],
[-1.99],
[-0.25],
[-1.64]), dtype=float)

nn = n_network(w1,w2)
x = (1, 2.00, 0.26 )
yHat = nn.forward_propagation(x)
print("************** The Part a output is given below **************")
print("h(x): \n", yHat)
print("error e :\n", 1-yHat)

w1=np.array(([12.70,-0.20,-0.74,-0.19],
[-1.49,-8.85,7.08,-8.29],
[-19.85,-2.61,-3.59,-2.70]), dtype=float)
w2=np.array(([7.44],
[2.78],
[-4.31],
[2.70]), dtype=float)

nn = Pras_nn(w1,w2)
x = (1, 2.00, 0.26 )
yHat = nn.forward_propagation(x)

print("************** The Part b output is given below **************")
print("h(x): \n", yHat)
print("error e :\n", 1-yHat)


****************** Machine Learning Fall 2016 ******************
************** Assignment 2 Program implementation **************
************************ Prasanna  Kolar ************************
************** The Weights **************
w1:
 [[-0.18  -0.16  -0.03  -0.15 ]
 [ 0.166 -0.18   0.01  -0.06 ]
 [ 0.14  -0.14  -0.065 -0.06 ]]
w2:
 [[-1.01]
 [-1.99]
 [-0.25]
 [-1.64]]
************** The Part a output is given below **************
h(x): 
 [ 0.10865431]
error e :
 [ 0.89134569]
************** The Weights **************
w1:
 [[ 12.7   -0.2   -0.74  -0.19]
 [ -1.49  -8.85   7.08  -8.29]
 [-19.85  -2.61  -3.59  -2.7 ]]
w2:
 [[ 7.44]
 [ 2.78]
 [-4.31]
 [ 2.7 ]]
************** The Part b output is given below **************
h(x): 
 [ 0.95490792]
error e :
 [ 0.04509208]