Implementing OR Gate using Adaline Network

30 Jun, 2022
Adline stands for adaptive linear neuron. It makes use of linear activation function, and it uses the delta rule for training to minimize the mean squared errors between the actual output and the desired target output. The weights and bias are adjustable. Here, we perform 10 epochs of training and calculate total mean error in each case, the total mean error decreases after certain epochs and later becomes nearly constant.
Truth table for OR gate
Below is the implementation.
Python3
# import the module numpyimport numpy as np  # the features for the or model , here we have# taken the possible values for combination of# two inputsfeatures = np.array(    [        [-1, -1],        [-1, 1],        [1, -1],        [1, 1]    ])  # labels for the or model, here the output for# the features is taken as an arraylabels = np.array([-1, 1, 1, 1]) # to print the features and the labels for# which the model has to be trainedprint(features, labels) # initialise weights, bias , learning rate, epochweight = [0.5, 0.5]bias = 0.1learning_rate = 0.2epoch = 10 for i in range(epoch):       # epoch is the number of the model is trained    # with the same data    print("epoch :", i+1)     # variable to check if there is no change in previous    # weight and present calculated weight    # initial error is kept as 0    sum_squared_error = 0.0     # for each of the possible input given in the features    for j in range(features.shape[0]):         # actual output to be obtained        actual = labels[j]         # the value of two features as given in the features        # array        x1 = features[j][0]        x2 = features[j][1]         # net unit value computation performed to obtain the        # sum of features multiplied with their weights        unit = (x1 * weight[0]) + (x2 * weight[1]) + bias         # error is computed so as to update the weights        error = actual - unit         # print statement to print the actual value , predicted        # value and the error        print("error =", error)         # summation of squared error is calculated        sum_squared_error += error * error         # updation of weights, summing up of product of learning rate ,        # sum of squared error and feature value        weight[0] += learning_rate * error * x1        weight[1] += learning_rate * error * x2         # updation of bias, summing up of product of learning rate and        # sum of squared error        bias += learning_rate * error     print("sum of squared error = ", sum_squared_error/4, "\n\n")
Output:
[[-1 -1]
 [-1  1]
 [ 1 -1]
 [ 1  1]] [-1  1  1  1]
epoch : 1
error = -0.09999999999999998
error = 0.9199999999999999
error = 1.1039999999999999
error = -0.5247999999999999
sum of squared error =  0.5876577599999998 


epoch : 2
error = -0.54976
error = 0.803712
error = 0.8172543999999999
error = -0.64406528
sum of squared error =  0.5077284689412096 


epoch : 3
error = -0.6729103360000002
error = 0.7483308032
error = 0.7399630438400001
error = -0.6898669486079996
sum of squared error =  0.5090672560860652 


epoch : 4
error = -0.7047962935296
error = 0.72625757847552
error = 0.7201693816586239
error = -0.7061914301759491
sum of squared error =  0.5103845399996764 


epoch : 5
error = -0.7124421954738586
error = 0.7182636328518943
error = 0.7154472043637898
error = -0.7117071786082882
sum of squared error =  0.5104670846209363 


epoch : 6
error = -0.714060481354338
error = 0.715548426006041
error = 0.7144420989392495
error = -0.7134930727032405
sum of squared error =  0.5103479496309858 


epoch : 7
error = -0.7143209120714415
error = 0.7146705871452027
error = 0.7142737539596766
error = -0.7140502797165604
sum of squared error =  0.5102658027779979 


epoch : 8
error = -0.7143272889928647
error = 0.7143984993919014
error = 0.7142647152041359
error = -0.7142182126044045
sum of squared error =  0.510227607583693 


epoch : 9
error = -0.7143072010372341
error = 0.7143174255259156
error = 0.7142744539151652
error = -0.7142671011374249
sum of squared error =  0.5102124122866718 


epoch : 10
error = -0.7142946765305948
error = 0.7142942165270032
error = 0.7142809804050706
error = -0.7142808151475037
sum of squared error =  0.5102068786350209
prachisoda1234
simmytarika5
Neural Network
Machine Learning
Python
Machine Learning
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Introduction to Recurrent Neural Network
ML | Monte Carlo Tree Search (MCTS)
Support Vector Machine Algorithm
Markov Decision Process
DBSCAN Clustering in ML | Density based clustering
Read JSON file using Python
Adding new column to existing DataFrame in Pandas
Python map() function
How to get column names in Pandas dataframe