Adline significa neurona lineal adaptativa. Hace uso de la función de activación lineal y utiliza la regla delta para el entrenamiento para minimizar los errores cuadráticos medios entre la salida real y la salida objetivo deseada. Los pesos y el sesgo son ajustables. Aquí, realizamos 10 épocas de entrenamiento y calculamos el error medio total en cada caso, el error medio total disminuye después de ciertas épocas y luego se vuelve casi constante.
Tabla de verdad para puerta OR
X | y | x o y |
---|---|---|
-1 | -1 | -1 |
-1 | 1 | 1 |
1 | -1 | 1 |
1 | 1 | 1 |
A continuación se muestra la implementación.
Python3
# import the module numpy import numpy as np # the features for the or model , here we have # taken the possible values for combination of # two inputs features = 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 array labels = np.array([-1, 1, 1, 1]) # to print the features and the labels for # which the model has to be trained print(features, labels) # initialise weights, bias , learning rate, epoch weight = [0.5, 0.5] bias = 0.1 learning_rate = 0.2 epoch = 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")
Producción:
[[-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
Publicación traducida automáticamente
Artículo escrito por deviprajwala y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA