In [1]:
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import scipy
import math
import random
import string

random.seed(123)
# Display plots inline 
%matplotlib inline
# Define plot's default figure size
matplotlib.rcParams['figure.figsize'] = (10.0, 8.0)

In [3]:
#read the datasets
train = pd.read_csv("DL/notebooks/intro_to_ann.csv")
print (train.head())
X, y = np.array(train.ix[:,0:2]), np.array(train.ix[:,2])
print(X.shape, y.shape)
plt.scatter(X[:,0], X[:,1], s=40, c=y, cmap=plt.cm.BuGn)


   Feature1  Feature2  Target
0  2.067788  0.258133       1
1  0.993994 -0.609145       1
2 -0.690315  0.749921       0
3  1.023582  0.529003       0
4  0.700747 -0.496724       1

[5 rows x 3 columns]
(500, 2) (500,)
Out[3]:
<matplotlib.collections.PathCollection at 0x7f7c2a517550>
/usr/lib/python3/dist-packages/matplotlib/collections.py:549: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors == 'face':

Function to generate a random number, given two numbers

When we initialize the neural networks, the weights have to be randomly assigned.


In [4]:
# calculate a random number where:  a <= rand < b
def rand(a, b):
    return (b-a)*random.random() + a

# Make a matrix 
def makeMatrix(I, J, fill=0.0):
    return np.zeros([I,J])

# our sigmoid function
def sigmoid(x):
    #return math.tanh(x)
    return 1/(1+np.exp(-x))

# derivative of our sigmoid function, in terms of the output (i.e. y)
def dsigmoid(y):
    return (y * (1- y))

When we first create a neural networks architecture, we need to know the number of inputs, number of hidden layers and number of outputs. The weights have to be randomly initialized.#


In [5]:
class NN:
    def __init__(self, ni, nh, no):
        # number of input, hidden, and output nodes
        self.ni = ni + 1 # +1 for bias node
        self.nh = nh
        self.no = no

        # activations for nodes
        self.ai = [1.0]*self.ni
        self.ah = [1.0]*self.nh
        self.ao = [1.0]*self.no
        
        # create weights
        self.wi = makeMatrix(self.ni, self.nh)
        self.wo = makeMatrix(self.nh, self.no)
        
        # set them to random vaules
        for i in range(self.ni):
            for j in range(self.nh):
                self.wi[i][j] = rand(-0.2, 0.2)
        for j in range(self.nh):
            for k in range(self.no):
                self.wo[j][k] = rand(-2.0, 2.0)

        # last change in weights for momentum   
        self.ci = makeMatrix(self.ni, self.nh)
        self.co = makeMatrix(self.nh, self.no)

In [6]:
class NN:
    def __init__(self, ni, nh, no):
        # number of input, hidden, and output nodes
        self.ni = ni + 1 # +1 for bias node
        self.nh = nh
        self.no = no

        # activations for nodes
        self.ai = [1.0]*self.ni
        self.ah = [1.0]*self.nh
        self.ao = [1.0]*self.no
        
        # create weights
        self.wi = makeMatrix(self.ni, self.nh)
        self.wo = makeMatrix(self.nh, self.no)
        
        # set them to random vaules
        for i in range(self.ni):
            for j in range(self.nh):
                self.wi[i][j] = rand(-0.2, 0.2)
        for j in range(self.nh):
            for k in range(self.no):
                self.wo[j][k] = rand(-2.0, 2.0)

        # last change in weights for momentum   
        self.ci = makeMatrix(self.ni, self.nh)
        self.co = makeMatrix(self.nh, self.no)
        

    def backPropagate(self, targets, N, M):
        
        if len(targets) != self.no:
            print(targets)
            raise ValueError('wrong number of target values')

        # calculate error terms for output
        #output_deltas = [0.0] * self.no
        output_deltas = np.zeros(self.no)
        for k in range(self.no):
            error = targets[k]-self.ao[k]
            output_deltas[k] = dsigmoid(self.ao[k]) * error

        # calculate error terms for hidden
        
        #hidden_deltas = [0.0] * self.nh
        hidden_deltas = np.zeros(self.nh)
        for j in range(self.nh):
            error = 0.0
            for k in range(self.no):
                error = error + output_deltas[k]*self.wo[j][k]
            hidden_deltas[j] = dsigmoid(self.ah[j]) * error

        # update output weights
        for j in range(self.nh):
            for k in range(self.no):
                change = output_deltas[k]*self.ah[j]
                self.wo[j][k] = self.wo[j][k] + N*change + M*self.co[j][k]
                self.co[j][k] = change
                #print N*change, M*self.co[j][k]

        # update input weights
        for i in range(self.ni):
            for j in range(self.nh):
                change = hidden_deltas[j]*self.ai[i]
                self.wi[i][j] = self.wi[i][j] + N*change + M*self.ci[i][j]
                self.ci[i][j] = change

        # calculate error
        error = 0.0
        for k in range(len(targets)):
            error = error + 0.5*(targets[k]-self.ao[k])**2
        return error


    def test(self, patterns):
        self.predict = np.empty([len(patterns), self.no])
        for i, p in enumerate(patterns):
            self.predict[i] = self.activate(p)
            #self.predict[i] = self.activate(p[0])

    def weights(self):
        print('Input weights:')
        for i in range(self.ni):
            print(self.wi[i])
        
        print('Output weights:')
        for j in range(self.nh):
            print(self.wo[j])
            
    def activate(self, inputs):
        
        if len(inputs) != self.ni-1:
            print(inputs)
            raise ValueError('wrong number of inputs')

        # input activations
        for i in range(self.ni-1):
            #self.ai[i] = sigmoid(inputs[i])
            self.ai[i] = inputs[i]
            
        

        # hidden activations
        for j in range(self.nh):
            sum = 0.0
            for i in range(self.ni):
                sum = sum + self.ai[i] * self.wi[i][j]
            self.ah[j] = sigmoid(sum)
           
        # output activations
        for k in range(self.no):
            sum = 0.0
            for j in range(self.nh):
                sum = sum + self.ah[j] * self.wo[j][k]
            self.ao[k] = sigmoid(sum)

        
        return self.ao[:]
    
    def train(self, patterns, iterations=1000, N=0.5, M=0.1):
        # N: learning rate
        # M: momentum factor
        patterns = list(patterns)
        for i in range(iterations):
            error1 = 0.0
            #j = 0
            for p in patterns:
                inputs = p[0]
                targets = p[1]
                self.activate(inputs)
                error1 = error1 + self.backPropagate([targets], N, M)
                #j= j+1
                #print (j)
                #self.weights()    
            #if i % 5 == 0:
            print('error in iiteration %d : %-.5f' % (i,error1))
            #print('Final training error: %-.5f' % error1)

Observe the result


In [7]:
# Helper function to plot a decision boundary.
# This generates the contour plot to show the decision boundary visually
def plot_decision_boundary(nn_model):
    # Set min and max values and give it some padding
    x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
    y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5
    h = 0.01
    # Generate a grid of points with distance h between them
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    # Predict the function value for the whole gid
    nn_model.test(np.c_[xx.ravel(), yy.ravel()])
    Z = nn_model.predict
    Z[Z>=0.5] = 1
    Z[Z<0.5] = 0
    Z = Z.reshape(xx.shape)
    # Plot the contour and training examples
    plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral)
    plt.scatter(X[:, 0], X[:, 1], s=40,  c=y, cmap=plt.cm.BuGn)

Create neural network


In [26]:
n = NN(2, 4, 1)

In [27]:
print (n.weights())


Input weights:
[-0.12116205 -0.12020026  0.19810601  0.15632348]
[-0.12233468  0.0258498  -0.16595999 -0.07318872]
[-0.0635423   0.0150728   0.17174973  0.12360777]
Output weights:
[ 0.13673366]
[ 1.14432022]
[-0.06416385]
[ 0.92224131]
None

In [28]:
print ("prediction")
print ("y=1 --- yhat=",n.activate([2.067788, 0.258133]))
print ("y=1 --- yhat=",n.activate([0.993994, 0.258133]))
print ("y=0 --- yhat=",n.activate([-0.690315, 0.749921]))
print ("y=0 --- yhat=",n.activate([1.023582, 0.529003]))
print ("y=1 --- yhat=",n.activate([0.700747, -0.496724]))


prediction
y=1 --- yhat= [0.74687503085495455]
y=1 --- yhat= [0.74814448864298289]
y=0 --- yhat= [0.7489601733812653]
y=0 --- yhat= [0.74756156186078448]
y=1 --- yhat= [0.75000993862551701]

In [29]:
%timeit -n 1 -r 1 n.train(zip(X,y), iterations=1000)
plot_decision_boundary(n)
plt.title("Our next model with 4 hidden units")


error in iiteration 0 : 39.41680
error in iiteration 1 : 25.68889
error in iiteration 2 : 24.86920
error in iiteration 3 : 24.77001
error in iiteration 4 : 24.75443
error in iiteration 5 : 24.74715
error in iiteration 6 : 24.73647
error in iiteration 7 : 24.72156
error in iiteration 8 : 24.70357
error in iiteration 9 : 24.68377
error in iiteration 10 : 24.66317
error in iiteration 11 : 24.64251
error in iiteration 12 : 24.62230
error in iiteration 13 : 24.60290
error in iiteration 14 : 24.58452
error in iiteration 15 : 24.56730
error in iiteration 16 : 24.55131
error in iiteration 17 : 24.53656
error in iiteration 18 : 24.52303
error in iiteration 19 : 24.51065
error in iiteration 20 : 24.49937
error in iiteration 21 : 24.48910
error in iiteration 22 : 24.47973
error in iiteration 23 : 24.47118
error in iiteration 24 : 24.46336
error in iiteration 25 : 24.45617
error in iiteration 26 : 24.44952
error in iiteration 27 : 24.44335
error in iiteration 28 : 24.43757
error in iiteration 29 : 24.43213
error in iiteration 30 : 24.42696
error in iiteration 31 : 24.42202
error in iiteration 32 : 24.41727
error in iiteration 33 : 24.41266
error in iiteration 34 : 24.40817
error in iiteration 35 : 24.40377
error in iiteration 36 : 24.39944
error in iiteration 37 : 24.39516
error in iiteration 38 : 24.39092
error in iiteration 39 : 24.38670
error in iiteration 40 : 24.38251
error in iiteration 41 : 24.37834
error in iiteration 42 : 24.37418
error in iiteration 43 : 24.37003
error in iiteration 44 : 24.36589
error in iiteration 45 : 24.36176
error in iiteration 46 : 24.35765
error in iiteration 47 : 24.35356
error in iiteration 48 : 24.34948
error in iiteration 49 : 24.34543
error in iiteration 50 : 24.34141
error in iiteration 51 : 24.33742
error in iiteration 52 : 24.33346
error in iiteration 53 : 24.32954
error in iiteration 54 : 24.32566
error in iiteration 55 : 24.32182
error in iiteration 56 : 24.31803
error in iiteration 57 : 24.31429
error in iiteration 58 : 24.31061
error in iiteration 59 : 24.30697
error in iiteration 60 : 24.30340
error in iiteration 61 : 24.29988
error in iiteration 62 : 24.29642
error in iiteration 63 : 24.29302
error in iiteration 64 : 24.28968
error in iiteration 65 : 24.28640
error in iiteration 66 : 24.28319
error in iiteration 67 : 24.28003
error in iiteration 68 : 24.27694
error in iiteration 69 : 24.27391
error in iiteration 70 : 24.27094
error in iiteration 71 : 24.26804
error in iiteration 72 : 24.26519
error in iiteration 73 : 24.26240
error in iiteration 74 : 24.25967
error in iiteration 75 : 24.25700
error in iiteration 76 : 24.25439
error in iiteration 77 : 24.25183
error in iiteration 78 : 24.24933
error in iiteration 79 : 24.24688
error in iiteration 80 : 24.24449
error in iiteration 81 : 24.24214
error in iiteration 82 : 24.23985
error in iiteration 83 : 24.23760
error in iiteration 84 : 24.23540
error in iiteration 85 : 24.23325
error in iiteration 86 : 24.23114
error in iiteration 87 : 24.22907
error in iiteration 88 : 24.22704
error in iiteration 89 : 24.22505
error in iiteration 90 : 24.22309
error in iiteration 91 : 24.22117
error in iiteration 92 : 24.21928
error in iiteration 93 : 24.21742
error in iiteration 94 : 24.21559
error in iiteration 95 : 24.21378
error in iiteration 96 : 24.21198
error in iiteration 97 : 24.21021
error in iiteration 98 : 24.20845
error in iiteration 99 : 24.20669
error in iiteration 100 : 24.20494
error in iiteration 101 : 24.20319
error in iiteration 102 : 24.20143
error in iiteration 103 : 24.19965
error in iiteration 104 : 24.19785
error in iiteration 105 : 24.19601
error in iiteration 106 : 24.19412
error in iiteration 107 : 24.19218
error in iiteration 108 : 24.19016
error in iiteration 109 : 24.18806
error in iiteration 110 : 24.18583
error in iiteration 111 : 24.18348
error in iiteration 112 : 24.18095
error in iiteration 113 : 24.17823
error in iiteration 114 : 24.17526
error in iiteration 115 : 24.17201
error in iiteration 116 : 24.16841
error in iiteration 117 : 24.16441
error in iiteration 118 : 24.15992
error in iiteration 119 : 24.15484
error in iiteration 120 : 24.14908
error in iiteration 121 : 24.14248
error in iiteration 122 : 24.13488
error in iiteration 123 : 24.12608
error in iiteration 124 : 24.11580
error in iiteration 125 : 24.10370
error in iiteration 126 : 24.08930
error in iiteration 127 : 24.07196
error in iiteration 128 : 24.05074
error in iiteration 129 : 24.02424
error in iiteration 130 : 23.99035
error in iiteration 131 : 23.94577
error in iiteration 132 : 23.88533
error in iiteration 133 : 23.80111
error in iiteration 134 : 23.68156
error in iiteration 135 : 23.51175
error in iiteration 136 : 23.27588
error in iiteration 137 : 22.96193
error in iiteration 138 : 22.56464
error in iiteration 139 : 22.08321
error in iiteration 140 : 21.51466
error in iiteration 141 : 20.84536
error in iiteration 142 : 20.04094
error in iiteration 143 : 19.04305
error in iiteration 144 : 17.81391
error in iiteration 145 : 16.43454
error in iiteration 146 : 15.07840
error in iiteration 147 : 13.85787
error in iiteration 148 : 12.78334
error in iiteration 149 : 11.81603
error in iiteration 150 : 10.93278
error in iiteration 151 : 10.16077
error in iiteration 152 : 9.53827
error in iiteration 153 : 9.06837
error in iiteration 154 : 8.72156
error in iiteration 155 : 8.45982
error in iiteration 156 : 8.25483
error in iiteration 157 : 8.08907
error in iiteration 158 : 7.95184
error in iiteration 159 : 7.83626
error in iiteration 160 : 7.73766
error in iiteration 161 : 7.65270
error in iiteration 162 : 7.57887
error in iiteration 163 : 7.51425
error in iiteration 164 : 7.45732
error in iiteration 165 : 7.40688
error in iiteration 166 : 7.36194
error in iiteration 167 : 7.32168
error in iiteration 168 : 7.28546
error in iiteration 169 : 7.25271
error in iiteration 170 : 7.22298
error in iiteration 171 : 7.19587
error in iiteration 172 : 7.17107
error in iiteration 173 : 7.14828
error in iiteration 174 : 7.12729
error in iiteration 175 : 7.10788
error in iiteration 176 : 7.08988
error in iiteration 177 : 7.07314
error in iiteration 178 : 7.05753
error in iiteration 179 : 7.04294
error in iiteration 180 : 7.02928
error in iiteration 181 : 7.01645
error in iiteration 182 : 7.00437
error in iiteration 183 : 6.99299
error in iiteration 184 : 6.98224
error in iiteration 185 : 6.97207
error in iiteration 186 : 6.96244
error in iiteration 187 : 6.95329
error in iiteration 188 : 6.94459
error in iiteration 189 : 6.93632
error in iiteration 190 : 6.92843
error in iiteration 191 : 6.92090
error in iiteration 192 : 6.91370
error in iiteration 193 : 6.90681
error in iiteration 194 : 6.90022
error in iiteration 195 : 6.89389
error in iiteration 196 : 6.88782
error in iiteration 197 : 6.88199
error in iiteration 198 : 6.87638
error in iiteration 199 : 6.87098
error in iiteration 200 : 6.86577
error in iiteration 201 : 6.86075
error in iiteration 202 : 6.85591
error in iiteration 203 : 6.85123
error in iiteration 204 : 6.84671
error in iiteration 205 : 6.84234
error in iiteration 206 : 6.83810
error in iiteration 207 : 6.83400
error in iiteration 208 : 6.83003
error in iiteration 209 : 6.82617
error in iiteration 210 : 6.82243
error in iiteration 211 : 6.81879
error in iiteration 212 : 6.81526
error in iiteration 213 : 6.81183
error in iiteration 214 : 6.80849
error in iiteration 215 : 6.80524
error in iiteration 216 : 6.80207
error in iiteration 217 : 6.79898
error in iiteration 218 : 6.79598
error in iiteration 219 : 6.79304
error in iiteration 220 : 6.79018
error in iiteration 221 : 6.78739
error in iiteration 222 : 6.78466
error in iiteration 223 : 6.78199
error in iiteration 224 : 6.77938
error in iiteration 225 : 6.77683
error in iiteration 226 : 6.77433
error in iiteration 227 : 6.77189
error in iiteration 228 : 6.76950
error in iiteration 229 : 6.76716
error in iiteration 230 : 6.76486
error in iiteration 231 : 6.76261
error in iiteration 232 : 6.76040
error in iiteration 233 : 6.75823
error in iiteration 234 : 6.75611
error in iiteration 235 : 6.75402
error in iiteration 236 : 6.75197
error in iiteration 237 : 6.74996
error in iiteration 238 : 6.74798
error in iiteration 239 : 6.74603
error in iiteration 240 : 6.74412
error in iiteration 241 : 6.74224
error in iiteration 242 : 6.74038
error in iiteration 243 : 6.73856
error in iiteration 244 : 6.73677
error in iiteration 245 : 6.73500
error in iiteration 246 : 6.73326
error in iiteration 247 : 6.73154
error in iiteration 248 : 6.72985
error in iiteration 249 : 6.72818
error in iiteration 250 : 6.72654
error in iiteration 251 : 6.72492
error in iiteration 252 : 6.72332
error in iiteration 253 : 6.72174
error in iiteration 254 : 6.72019
error in iiteration 255 : 6.71865
error in iiteration 256 : 6.71713
error in iiteration 257 : 6.71563
error in iiteration 258 : 6.71415
error in iiteration 259 : 6.71269
error in iiteration 260 : 6.71124
error in iiteration 261 : 6.70982
error in iiteration 262 : 6.70840
error in iiteration 263 : 6.70701
error in iiteration 264 : 6.70563
error in iiteration 265 : 6.70426
error in iiteration 266 : 6.70291
error in iiteration 267 : 6.70158
error in iiteration 268 : 6.70026
error in iiteration 269 : 6.69895
error in iiteration 270 : 6.69765
error in iiteration 271 : 6.69637
error in iiteration 272 : 6.69510
error in iiteration 273 : 6.69385
error in iiteration 274 : 6.69260
error in iiteration 275 : 6.69137
error in iiteration 276 : 6.69015
error in iiteration 277 : 6.68894
error in iiteration 278 : 6.68774
error in iiteration 279 : 6.68655
error in iiteration 280 : 6.68538
error in iiteration 281 : 6.68421
error in iiteration 282 : 6.68305
error in iiteration 283 : 6.68191
error in iiteration 284 : 6.68077
error in iiteration 285 : 6.67964
error in iiteration 286 : 6.67852
error in iiteration 287 : 6.67742
error in iiteration 288 : 6.67632
error in iiteration 289 : 6.67522
error in iiteration 290 : 6.67414
error in iiteration 291 : 6.67307
error in iiteration 292 : 6.67200
error in iiteration 293 : 6.67094
error in iiteration 294 : 6.66989
error in iiteration 295 : 6.66885
error in iiteration 296 : 6.66781
error in iiteration 297 : 6.66679
error in iiteration 298 : 6.66577
error in iiteration 299 : 6.66475
error in iiteration 300 : 6.66375
error in iiteration 301 : 6.66275
error in iiteration 302 : 6.66176
error in iiteration 303 : 6.66077
error in iiteration 304 : 6.65979
error in iiteration 305 : 6.65882
error in iiteration 306 : 6.65785
error in iiteration 307 : 6.65689
error in iiteration 308 : 6.65594
error in iiteration 309 : 6.65499
error in iiteration 310 : 6.65404
error in iiteration 311 : 6.65311
error in iiteration 312 : 6.65218
error in iiteration 313 : 6.65125
error in iiteration 314 : 6.65033
error in iiteration 315 : 6.64941
error in iiteration 316 : 6.64850
error in iiteration 317 : 6.64760
error in iiteration 318 : 6.64670
error in iiteration 319 : 6.64581
error in iiteration 320 : 6.64492
error in iiteration 321 : 6.64403
error in iiteration 322 : 6.64315
error in iiteration 323 : 6.64228
error in iiteration 324 : 6.64141
error in iiteration 325 : 6.64054
error in iiteration 326 : 6.63968
error in iiteration 327 : 6.63882
error in iiteration 328 : 6.63797
error in iiteration 329 : 6.63712
error in iiteration 330 : 6.63627
error in iiteration 331 : 6.63543
error in iiteration 332 : 6.63460
error in iiteration 333 : 6.63376
error in iiteration 334 : 6.63294
error in iiteration 335 : 6.63211
error in iiteration 336 : 6.63129
error in iiteration 337 : 6.63047
error in iiteration 338 : 6.62966
error in iiteration 339 : 6.62885
error in iiteration 340 : 6.62805
error in iiteration 341 : 6.62724
error in iiteration 342 : 6.62644
error in iiteration 343 : 6.62565
error in iiteration 344 : 6.62486
error in iiteration 345 : 6.62407
error in iiteration 346 : 6.62328
error in iiteration 347 : 6.62250
error in iiteration 348 : 6.62172
error in iiteration 349 : 6.62095
error in iiteration 350 : 6.62017
error in iiteration 351 : 6.61940
error in iiteration 352 : 6.61864
error in iiteration 353 : 6.61787
error in iiteration 354 : 6.61711
error in iiteration 355 : 6.61636
error in iiteration 356 : 6.61560
error in iiteration 357 : 6.61485
error in iiteration 358 : 6.61410
error in iiteration 359 : 6.61335
error in iiteration 360 : 6.61261
error in iiteration 361 : 6.61187
error in iiteration 362 : 6.61113
error in iiteration 363 : 6.61040
error in iiteration 364 : 6.60966
error in iiteration 365 : 6.60893
error in iiteration 366 : 6.60821
error in iiteration 367 : 6.60748
error in iiteration 368 : 6.60676
error in iiteration 369 : 6.60604
error in iiteration 370 : 6.60532
error in iiteration 371 : 6.60461
error in iiteration 372 : 6.60389
error in iiteration 373 : 6.60318
error in iiteration 374 : 6.60247
error in iiteration 375 : 6.60177
error in iiteration 376 : 6.60106
error in iiteration 377 : 6.60036
error in iiteration 378 : 6.59966
error in iiteration 379 : 6.59897
error in iiteration 380 : 6.59827
error in iiteration 381 : 6.59758
error in iiteration 382 : 6.59689
error in iiteration 383 : 6.59620
error in iiteration 384 : 6.59551
error in iiteration 385 : 6.59483
error in iiteration 386 : 6.59415
error in iiteration 387 : 6.59347
error in iiteration 388 : 6.59279
error in iiteration 389 : 6.59211
error in iiteration 390 : 6.59144
error in iiteration 391 : 6.59077
error in iiteration 392 : 6.59010
error in iiteration 393 : 6.58943
error in iiteration 394 : 6.58876
error in iiteration 395 : 6.58810
error in iiteration 396 : 6.58744
error in iiteration 397 : 6.58677
error in iiteration 398 : 6.58611
error in iiteration 399 : 6.58546
error in iiteration 400 : 6.58480
error in iiteration 401 : 6.58415
error in iiteration 402 : 6.58350
error in iiteration 403 : 6.58285
error in iiteration 404 : 6.58220
error in iiteration 405 : 6.58155
error in iiteration 406 : 6.58090
error in iiteration 407 : 6.58026
error in iiteration 408 : 6.57962
error in iiteration 409 : 6.57898
error in iiteration 410 : 6.57834
error in iiteration 411 : 6.57770
error in iiteration 412 : 6.57707
error in iiteration 413 : 6.57643
error in iiteration 414 : 6.57580
error in iiteration 415 : 6.57517
error in iiteration 416 : 6.57454
error in iiteration 417 : 6.57391
error in iiteration 418 : 6.57329
error in iiteration 419 : 6.57266
error in iiteration 420 : 6.57204
error in iiteration 421 : 6.57141
error in iiteration 422 : 6.57079
error in iiteration 423 : 6.57017
error in iiteration 424 : 6.56956
error in iiteration 425 : 6.56894
error in iiteration 426 : 6.56833
error in iiteration 427 : 6.56771
error in iiteration 428 : 6.56710
error in iiteration 429 : 6.56649
error in iiteration 430 : 6.56588
error in iiteration 431 : 6.56527
error in iiteration 432 : 6.56466
error in iiteration 433 : 6.56406
error in iiteration 434 : 6.56345
error in iiteration 435 : 6.56285
error in iiteration 436 : 6.56225
error in iiteration 437 : 6.56165
error in iiteration 438 : 6.56105
error in iiteration 439 : 6.56045
error in iiteration 440 : 6.55985
error in iiteration 441 : 6.55926
error in iiteration 442 : 6.55866
error in iiteration 443 : 6.55807
error in iiteration 444 : 6.55747
error in iiteration 445 : 6.55688
error in iiteration 446 : 6.55629
error in iiteration 447 : 6.55570
error in iiteration 448 : 6.55512
error in iiteration 449 : 6.55453
error in iiteration 450 : 6.55394
error in iiteration 451 : 6.55336
error in iiteration 452 : 6.55277
error in iiteration 453 : 6.55219
error in iiteration 454 : 6.55161
error in iiteration 455 : 6.55103
error in iiteration 456 : 6.55045
error in iiteration 457 : 6.54987
error in iiteration 458 : 6.54929
error in iiteration 459 : 6.54871
error in iiteration 460 : 6.54814
error in iiteration 461 : 6.54756
error in iiteration 462 : 6.54699
error in iiteration 463 : 6.54641
error in iiteration 464 : 6.54584
error in iiteration 465 : 6.54527
error in iiteration 466 : 6.54470
error in iiteration 467 : 6.54413
error in iiteration 468 : 6.54356
error in iiteration 469 : 6.54299
error in iiteration 470 : 6.54242
error in iiteration 471 : 6.54185
error in iiteration 472 : 6.54129
error in iiteration 473 : 6.54072
error in iiteration 474 : 6.54016
error in iiteration 475 : 6.53959
error in iiteration 476 : 6.53903
error in iiteration 477 : 6.53846
error in iiteration 478 : 6.53790
error in iiteration 479 : 6.53734
error in iiteration 480 : 6.53678
error in iiteration 481 : 6.53622
error in iiteration 482 : 6.53566
error in iiteration 483 : 6.53510
error in iiteration 484 : 6.53454
error in iiteration 485 : 6.53398
error in iiteration 486 : 6.53342
error in iiteration 487 : 6.53286
error in iiteration 488 : 6.53231
error in iiteration 489 : 6.53175
error in iiteration 490 : 6.53119
error in iiteration 491 : 6.53064
error in iiteration 492 : 6.53008
error in iiteration 493 : 6.52952
error in iiteration 494 : 6.52897
error in iiteration 495 : 6.52841
error in iiteration 496 : 6.52786
error in iiteration 497 : 6.52730
error in iiteration 498 : 6.52675
error in iiteration 499 : 6.52620
error in iiteration 500 : 6.52564
error in iiteration 501 : 6.52509
error in iiteration 502 : 6.52453
error in iiteration 503 : 6.52398
error in iiteration 504 : 6.52343
error in iiteration 505 : 6.52287
error in iiteration 506 : 6.52232
error in iiteration 507 : 6.52176
error in iiteration 508 : 6.52121
error in iiteration 509 : 6.52066
error in iiteration 510 : 6.52010
error in iiteration 511 : 6.51955
error in iiteration 512 : 6.51899
error in iiteration 513 : 6.51844
error in iiteration 514 : 6.51788
error in iiteration 515 : 6.51733
error in iiteration 516 : 6.51677
error in iiteration 517 : 6.51622
error in iiteration 518 : 6.51566
error in iiteration 519 : 6.51511
error in iiteration 520 : 6.51455
error in iiteration 521 : 6.51399
error in iiteration 522 : 6.51344
error in iiteration 523 : 6.51288
error in iiteration 524 : 6.51232
error in iiteration 525 : 6.51176
error in iiteration 526 : 6.51120
error in iiteration 527 : 6.51064
error in iiteration 528 : 6.51008
error in iiteration 529 : 6.50952
error in iiteration 530 : 6.50895
error in iiteration 531 : 6.50839
error in iiteration 532 : 6.50783
error in iiteration 533 : 6.50726
error in iiteration 534 : 6.50670
error in iiteration 535 : 6.50613
error in iiteration 536 : 6.50556
error in iiteration 537 : 6.50500
error in iiteration 538 : 6.50443
error in iiteration 539 : 6.50386
error in iiteration 540 : 6.50329
error in iiteration 541 : 6.50272
error in iiteration 542 : 6.50214
error in iiteration 543 : 6.50157
error in iiteration 544 : 6.50100
error in iiteration 545 : 6.50042
error in iiteration 546 : 6.49984
error in iiteration 547 : 6.49927
error in iiteration 548 : 6.49869
error in iiteration 549 : 6.49811
error in iiteration 550 : 6.49753
error in iiteration 551 : 6.49695
error in iiteration 552 : 6.49636
error in iiteration 553 : 6.49578
error in iiteration 554 : 6.49519
error in iiteration 555 : 6.49461
error in iiteration 556 : 6.49402
error in iiteration 557 : 6.49343
error in iiteration 558 : 6.49284
error in iiteration 559 : 6.49225
error in iiteration 560 : 6.49166
error in iiteration 561 : 6.49107
error in iiteration 562 : 6.49048
error in iiteration 563 : 6.48988
error in iiteration 564 : 6.48929
error in iiteration 565 : 6.48869
error in iiteration 566 : 6.48810
error in iiteration 567 : 6.48750
error in iiteration 568 : 6.48690
error in iiteration 569 : 6.48630
error in iiteration 570 : 6.48570
error in iiteration 571 : 6.48510
error in iiteration 572 : 6.48450
error in iiteration 573 : 6.48390
error in iiteration 574 : 6.48330
error in iiteration 575 : 6.48270
error in iiteration 576 : 6.48210
error in iiteration 577 : 6.48149
error in iiteration 578 : 6.48089
error in iiteration 579 : 6.48029
error in iiteration 580 : 6.47969
error in iiteration 581 : 6.47908
error in iiteration 582 : 6.47848
error in iiteration 583 : 6.47788
error in iiteration 584 : 6.47728
error in iiteration 585 : 6.47667
error in iiteration 586 : 6.47607
error in iiteration 587 : 6.47547
error in iiteration 588 : 6.47487
error in iiteration 589 : 6.47427
error in iiteration 590 : 6.47368
error in iiteration 591 : 6.47308
error in iiteration 592 : 6.47248
error in iiteration 593 : 6.47189
error in iiteration 594 : 6.47129
error in iiteration 595 : 6.47070
error in iiteration 596 : 6.47011
error in iiteration 597 : 6.46952
error in iiteration 598 : 6.46893
error in iiteration 599 : 6.46835
error in iiteration 600 : 6.46776
error in iiteration 601 : 6.46718
error in iiteration 602 : 6.46660
error in iiteration 603 : 6.46602
error in iiteration 604 : 6.46544
error in iiteration 605 : 6.46487
error in iiteration 606 : 6.46430
error in iiteration 607 : 6.46373
error in iiteration 608 : 6.46316
error in iiteration 609 : 6.46259
error in iiteration 610 : 6.46203
error in iiteration 611 : 6.46147
error in iiteration 612 : 6.46091
error in iiteration 613 : 6.46036
error in iiteration 614 : 6.45981
error in iiteration 615 : 6.45926
error in iiteration 616 : 6.45871
error in iiteration 617 : 6.45817
error in iiteration 618 : 6.45763
error in iiteration 619 : 6.45709
error in iiteration 620 : 6.45656
error in iiteration 621 : 6.45603
error in iiteration 622 : 6.45550
error in iiteration 623 : 6.45498
error in iiteration 624 : 6.45445
error in iiteration 625 : 6.45394
error in iiteration 626 : 6.45342
error in iiteration 627 : 6.45291
error in iiteration 628 : 6.45240
error in iiteration 629 : 6.45189
error in iiteration 630 : 6.45139
error in iiteration 631 : 6.45089
error in iiteration 632 : 6.45039
error in iiteration 633 : 6.44990
error in iiteration 634 : 6.44941
error in iiteration 635 : 6.44892
error in iiteration 636 : 6.44844
error in iiteration 637 : 6.44796
error in iiteration 638 : 6.44748
error in iiteration 639 : 6.44701
error in iiteration 640 : 6.44653
error in iiteration 641 : 6.44607
error in iiteration 642 : 6.44560
error in iiteration 643 : 6.44514
error in iiteration 644 : 6.44468
error in iiteration 645 : 6.44422
error in iiteration 646 : 6.44376
error in iiteration 647 : 6.44331
error in iiteration 648 : 6.44286
error in iiteration 649 : 6.44242
error in iiteration 650 : 6.44197
error in iiteration 651 : 6.44153
error in iiteration 652 : 6.44110
error in iiteration 653 : 6.44066
error in iiteration 654 : 6.44023
error in iiteration 655 : 6.43980
error in iiteration 656 : 6.43937
error in iiteration 657 : 6.43894
error in iiteration 658 : 6.43852
error in iiteration 659 : 6.43810
error in iiteration 660 : 6.43768
error in iiteration 661 : 6.43726
error in iiteration 662 : 6.43685
error in iiteration 663 : 6.43643
error in iiteration 664 : 6.43602
error in iiteration 665 : 6.43561
error in iiteration 666 : 6.43521
error in iiteration 667 : 6.43480
error in iiteration 668 : 6.43440
error in iiteration 669 : 6.43400
error in iiteration 670 : 6.43360
error in iiteration 671 : 6.43320
error in iiteration 672 : 6.43281
error in iiteration 673 : 6.43241
error in iiteration 674 : 6.43202
error in iiteration 675 : 6.43163
error in iiteration 676 : 6.43124
error in iiteration 677 : 6.43085
error in iiteration 678 : 6.43047
error in iiteration 679 : 6.43008
error in iiteration 680 : 6.42970
error in iiteration 681 : 6.42932
error in iiteration 682 : 6.42894
error in iiteration 683 : 6.42856
error in iiteration 684 : 6.42818
error in iiteration 685 : 6.42781
error in iiteration 686 : 6.42743
error in iiteration 687 : 6.42706
error in iiteration 688 : 6.42669
error in iiteration 689 : 6.42631
error in iiteration 690 : 6.42594
error in iiteration 691 : 6.42558
error in iiteration 692 : 6.42521
error in iiteration 693 : 6.42484
error in iiteration 694 : 6.42447
error in iiteration 695 : 6.42411
error in iiteration 696 : 6.42375
error in iiteration 697 : 6.42338
error in iiteration 698 : 6.42302
error in iiteration 699 : 6.42266
error in iiteration 700 : 6.42230
error in iiteration 701 : 6.42194
error in iiteration 702 : 6.42158
error in iiteration 703 : 6.42123
error in iiteration 704 : 6.42087
error in iiteration 705 : 6.42052
error in iiteration 706 : 6.42016
error in iiteration 707 : 6.41981
error in iiteration 708 : 6.41945
error in iiteration 709 : 6.41910
error in iiteration 710 : 6.41875
error in iiteration 711 : 6.41840
error in iiteration 712 : 6.41805
error in iiteration 713 : 6.41770
error in iiteration 714 : 6.41735
error in iiteration 715 : 6.41700
error in iiteration 716 : 6.41666
error in iiteration 717 : 6.41631
error in iiteration 718 : 6.41597
error in iiteration 719 : 6.41562
error in iiteration 720 : 6.41528
error in iiteration 721 : 6.41493
error in iiteration 722 : 6.41459
error in iiteration 723 : 6.41425
error in iiteration 724 : 6.41391
error in iiteration 725 : 6.41356
error in iiteration 726 : 6.41322
error in iiteration 727 : 6.41288
error in iiteration 728 : 6.41254
error in iiteration 729 : 6.41221
error in iiteration 730 : 6.41187
error in iiteration 731 : 6.41153
error in iiteration 732 : 6.41119
error in iiteration 733 : 6.41086
error in iiteration 734 : 6.41052
error in iiteration 735 : 6.41019
error in iiteration 736 : 6.40985
error in iiteration 737 : 6.40952
error in iiteration 738 : 6.40919
error in iiteration 739 : 6.40885
error in iiteration 740 : 6.40852
error in iiteration 741 : 6.40819
error in iiteration 742 : 6.40786
error in iiteration 743 : 6.40753
error in iiteration 744 : 6.40720
error in iiteration 745 : 6.40687
error in iiteration 746 : 6.40654
error in iiteration 747 : 6.40621
error in iiteration 748 : 6.40588
error in iiteration 749 : 6.40556
error in iiteration 750 : 6.40523
error in iiteration 751 : 6.40490
error in iiteration 752 : 6.40458
error in iiteration 753 : 6.40425
error in iiteration 754 : 6.40393
error in iiteration 755 : 6.40361
error in iiteration 756 : 6.40328
error in iiteration 757 : 6.40296
error in iiteration 758 : 6.40264
error in iiteration 759 : 6.40232
error in iiteration 760 : 6.40199
error in iiteration 761 : 6.40167
error in iiteration 762 : 6.40135
error in iiteration 763 : 6.40103
error in iiteration 764 : 6.40071
error in iiteration 765 : 6.40040
error in iiteration 766 : 6.40008
error in iiteration 767 : 6.39976
error in iiteration 768 : 6.39944
error in iiteration 769 : 6.39913
error in iiteration 770 : 6.39881
error in iiteration 771 : 6.39850
error in iiteration 772 : 6.39818
error in iiteration 773 : 6.39787
error in iiteration 774 : 6.39755
error in iiteration 775 : 6.39724
error in iiteration 776 : 6.39693
error in iiteration 777 : 6.39662
error in iiteration 778 : 6.39630
error in iiteration 779 : 6.39599
error in iiteration 780 : 6.39568
error in iiteration 781 : 6.39537
error in iiteration 782 : 6.39506
error in iiteration 783 : 6.39475
error in iiteration 784 : 6.39445
error in iiteration 785 : 6.39414
error in iiteration 786 : 6.39383
error in iiteration 787 : 6.39352
error in iiteration 788 : 6.39322
error in iiteration 789 : 6.39291
error in iiteration 790 : 6.39261
error in iiteration 791 : 6.39230
error in iiteration 792 : 6.39200
error in iiteration 793 : 6.39169
error in iiteration 794 : 6.39139
error in iiteration 795 : 6.39109
error in iiteration 796 : 6.39078
error in iiteration 797 : 6.39048
error in iiteration 798 : 6.39018
error in iiteration 799 : 6.38988
error in iiteration 800 : 6.38958
error in iiteration 801 : 6.38928
error in iiteration 802 : 6.38898
error in iiteration 803 : 6.38868
error in iiteration 804 : 6.38839
error in iiteration 805 : 6.38809
error in iiteration 806 : 6.38779
error in iiteration 807 : 6.38750
error in iiteration 808 : 6.38720
error in iiteration 809 : 6.38690
error in iiteration 810 : 6.38661
error in iiteration 811 : 6.38632
error in iiteration 812 : 6.38602
error in iiteration 813 : 6.38573
error in iiteration 814 : 6.38544
error in iiteration 815 : 6.38514
error in iiteration 816 : 6.38485
error in iiteration 817 : 6.38456
error in iiteration 818 : 6.38427
error in iiteration 819 : 6.38398
error in iiteration 820 : 6.38369
error in iiteration 821 : 6.38340
error in iiteration 822 : 6.38311
error in iiteration 823 : 6.38282
error in iiteration 824 : 6.38254
error in iiteration 825 : 6.38225
error in iiteration 826 : 6.38196
error in iiteration 827 : 6.38168
error in iiteration 828 : 6.38139
error in iiteration 829 : 6.38111
error in iiteration 830 : 6.38082
error in iiteration 831 : 6.38054
error in iiteration 832 : 6.38026
error in iiteration 833 : 6.37997
error in iiteration 834 : 6.37969
error in iiteration 835 : 6.37941
error in iiteration 836 : 6.37913
error in iiteration 837 : 6.37885
error in iiteration 838 : 6.37857
error in iiteration 839 : 6.37829
error in iiteration 840 : 6.37801
error in iiteration 841 : 6.37773
error in iiteration 842 : 6.37745
error in iiteration 843 : 6.37717
error in iiteration 844 : 6.37689
error in iiteration 845 : 6.37662
error in iiteration 846 : 6.37634
error in iiteration 847 : 6.37607
error in iiteration 848 : 6.37579
error in iiteration 849 : 6.37552
error in iiteration 850 : 6.37524
error in iiteration 851 : 6.37497
error in iiteration 852 : 6.37469
error in iiteration 853 : 6.37442
error in iiteration 854 : 6.37415
error in iiteration 855 : 6.37388
error in iiteration 856 : 6.37361
error in iiteration 857 : 6.37333
error in iiteration 858 : 6.37306
error in iiteration 859 : 6.37279
error in iiteration 860 : 6.37253
error in iiteration 861 : 6.37226
error in iiteration 862 : 6.37199
error in iiteration 863 : 6.37172
error in iiteration 864 : 6.37145
error in iiteration 865 : 6.37119
error in iiteration 866 : 6.37092
error in iiteration 867 : 6.37065
error in iiteration 868 : 6.37039
error in iiteration 869 : 6.37012
error in iiteration 870 : 6.36986
error in iiteration 871 : 6.36960
error in iiteration 872 : 6.36933
error in iiteration 873 : 6.36907
error in iiteration 874 : 6.36881
error in iiteration 875 : 6.36854
error in iiteration 876 : 6.36828
error in iiteration 877 : 6.36802
error in iiteration 878 : 6.36776
error in iiteration 879 : 6.36750
error in iiteration 880 : 6.36724
error in iiteration 881 : 6.36698
error in iiteration 882 : 6.36672
error in iiteration 883 : 6.36647
error in iiteration 884 : 6.36621
error in iiteration 885 : 6.36595
error in iiteration 886 : 6.36569
error in iiteration 887 : 6.36544
error in iiteration 888 : 6.36518
error in iiteration 889 : 6.36493
error in iiteration 890 : 6.36467
error in iiteration 891 : 6.36442
error in iiteration 892 : 6.36416
error in iiteration 893 : 6.36391
error in iiteration 894 : 6.36366
error in iiteration 895 : 6.36340
error in iiteration 896 : 6.36315
error in iiteration 897 : 6.36290
error in iiteration 898 : 6.36265
error in iiteration 899 : 6.36240
error in iiteration 900 : 6.36215
error in iiteration 901 : 6.36190
error in iiteration 902 : 6.36165
error in iiteration 903 : 6.36140
error in iiteration 904 : 6.36115
error in iiteration 905 : 6.36090
error in iiteration 906 : 6.36066
error in iiteration 907 : 6.36041
error in iiteration 908 : 6.36016
error in iiteration 909 : 6.35992
error in iiteration 910 : 6.35967
error in iiteration 911 : 6.35943
error in iiteration 912 : 6.35918
error in iiteration 913 : 6.35894
error in iiteration 914 : 6.35869
error in iiteration 915 : 6.35845
error in iiteration 916 : 6.35821
error in iiteration 917 : 6.35796
error in iiteration 918 : 6.35772
error in iiteration 919 : 6.35748
error in iiteration 920 : 6.35724
error in iiteration 921 : 6.35700
error in iiteration 922 : 6.35676
error in iiteration 923 : 6.35652
error in iiteration 924 : 6.35628
error in iiteration 925 : 6.35604
error in iiteration 926 : 6.35580
error in iiteration 927 : 6.35556
error in iiteration 928 : 6.35533
error in iiteration 929 : 6.35509
error in iiteration 930 : 6.35485
error in iiteration 931 : 6.35462
error in iiteration 932 : 6.35438
error in iiteration 933 : 6.35414
error in iiteration 934 : 6.35391
error in iiteration 935 : 6.35367
error in iiteration 936 : 6.35344
error in iiteration 937 : 6.35321
error in iiteration 938 : 6.35297
error in iiteration 939 : 6.35274
error in iiteration 940 : 6.35251
error in iiteration 941 : 6.35227
error in iiteration 942 : 6.35204
error in iiteration 943 : 6.35181
error in iiteration 944 : 6.35158
error in iiteration 945 : 6.35135
error in iiteration 946 : 6.35112
error in iiteration 947 : 6.35089
error in iiteration 948 : 6.35066
error in iiteration 949 : 6.35043
error in iiteration 950 : 6.35020
error in iiteration 951 : 6.34998
error in iiteration 952 : 6.34975
error in iiteration 953 : 6.34952
error in iiteration 954 : 6.34930
error in iiteration 955 : 6.34907
error in iiteration 956 : 6.34884
error in iiteration 957 : 6.34862
error in iiteration 958 : 6.34839
error in iiteration 959 : 6.34817
error in iiteration 960 : 6.34794
error in iiteration 961 : 6.34772
error in iiteration 962 : 6.34750
error in iiteration 963 : 6.34727
error in iiteration 964 : 6.34705
error in iiteration 965 : 6.34683
error in iiteration 966 : 6.34661
error in iiteration 967 : 6.34639
error in iiteration 968 : 6.34616
error in iiteration 969 : 6.34594
error in iiteration 970 : 6.34572
error in iiteration 971 : 6.34550
error in iiteration 972 : 6.34528
error in iiteration 973 : 6.34507
error in iiteration 974 : 6.34485
error in iiteration 975 : 6.34463
error in iiteration 976 : 6.34441
error in iiteration 977 : 6.34419
error in iiteration 978 : 6.34398
error in iiteration 979 : 6.34376
error in iiteration 980 : 6.34354
error in iiteration 981 : 6.34333
error in iiteration 982 : 6.34311
error in iiteration 983 : 6.34290
error in iiteration 984 : 6.34268
error in iiteration 985 : 6.34247
error in iiteration 986 : 6.34225
error in iiteration 987 : 6.34204
error in iiteration 988 : 6.34183
error in iiteration 989 : 6.34161
error in iiteration 990 : 6.34140
error in iiteration 991 : 6.34119
error in iiteration 992 : 6.34098
error in iiteration 993 : 6.34077
error in iiteration 994 : 6.34056
error in iiteration 995 : 6.34035
error in iiteration 996 : 6.34014
error in iiteration 997 : 6.33993
error in iiteration 998 : 6.33972
error in iiteration 999 : 6.33951
1 loop, best of 1: 29.3 s per loop
Out[29]:
<matplotlib.text.Text at 0x7f7c29ee4e80>
/usr/lib/python3/dist-packages/matplotlib/collections.py:549: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison
  if self._edgecolors == 'face':

In [30]:
print (n.weights())


Input weights:
[ -6.91377305 -10.0985927    8.94665596   8.9714853 ]
[  1.41401658 -12.09299175   6.14725427  -3.43163688]
[ -2.74627185   6.39238033  -5.86965163 -11.31238795]
Output weights:
[-9.60761503]
[ 5.01853559]
[-3.78923533]
[ 7.92899817]
None

In [ ]: