Skip to content

No issue just a finding that i had... #1

@snapo

Description

@snapo

First of all a lot of thanks for publishing your code. In your video you mention it is unknown how many layers / neurons should be sufficient. So i run some very basic tests on RLS. From my finding i estimate to get 100% accuracy you would require 1.1x the neurons of all possible outcomes.

To do the test i chose Majority bit as a test. where you have 3-12 input bits and the more bits are 1 the output is one, if more bits are 0 on the input , then the output should be 0 too. I run it for different neuron counts and different majority gates sizes all in a one-shot (so training data only seen once) like mentioned in the video and the github description.

Here is the adjusted code i used:

import numpy as np
import itertools

class RlsNode:
    """
    Recursive Least Squares Estimation (This is the update part of Kalman filter)
    """
    def __init__(self, _m, _name):
        self.name = _name;
        self.M = _m;
        self.w = np.random.rand(1, _m);
        self.P = np.eye(_m)/1;

    def RlsPredict(self, v):
        return np.dot(self.w , v);
    
    def RlsLearn(self, v, e):
        pv = np.dot(self.P, v)
        vv = np.dot(pv.T, v)        
        eMod = pv/vv;
        ee = eMod * e;        
        self.w = self.w + ee
        outer = np.outer(eMod , pv);
        self.P = self.P - outer

        
class Net:
    """ 
    neural network (single hidden layer where the weights in first layer (iWh) are randomly initialized)
    """
    def __init__(self, _input_size, _neurons):
        self.input_size = _input_size;
        self.neurons = _neurons;
        self.iWh = (np.random.rand(_neurons, _input_size)-0.5)*1
        self.nodes = [];
        
    def CreateOutputNode(self, _name):
        nn = RlsNode(self.neurons, _name);
        self.nodes.append(nn)
        
    def sigmoid(self, x):
        return 1 / (1 + np.e ** -x)

    def FeedForwardL1(self, v):
        vout = np.dot(self.iWh, v);
        # tout = np.tanh(vout);
        tout = self.sigmoid(vout);
        return tout + 0.0000000000000001 ## adding a small value to avoid dividion by zero in the upcoming computations!
    
    ### RLS layer (Trainable weights using RLS algorthim)
    def FeedForwardL2(self, tout):
        yhats = [];
        for i in range(len(self.nodes)):
            p = self.nodes[i].RlsPredict(tout);
            yhats.append(p[0]);
        return np.asarray(yhats)
    
    ### Error Evaluation
    def Evaluate(self, ys, yhats):
        errs = ys - yhats
        return errs
    
    def Learn(self, acts, errs):
        for i in range(len(self.nodes)):
            self.nodes[i].RlsLearn(acts, errs[i]) #change to errs[0][i] if indexing error happen

for l in [80,128,156,225,256,285,450,512,560,900,1024,1124,1800,2048,2248,3600,4096,4400]:
    print(f" --------------------- Neurons {l} ---------------------")

    for r in range(3,13):
        # #### Example Usage ###            
        lengthmaj = r # Create list and results of the majority gates with 11 bits
        x = [list(input_bits) for input_bits in itertools.product([0, 1], repeat=lengthmaj)]
        y = [int(sum(input_bits) >= lengthmaj/2) for input_bits in x]



        ## configuring the network
        n_input = lengthmaj
        n_neurons = l
        n_output = 1
        net = Net(n_input, n_neurons)
        for i in range(n_output):
            net.CreateOutputNode(i)

        ## training
        N = len(x) ## you only need one iteration over the samples to learn (RLS is a near one-shot learning!)
        #for x in range(0,1): # train 5 epochs
        for i in range(N):
            inputt = x[i][:]
            L1 = net.FeedForwardL1(inputt);
            yhats = net.FeedForwardL2(L1)
            errs = net.Evaluate(y[i], yhats)
            net.Learn(L1, errs)

        ## evaluate after learning
        yh= [];
        countright = 0
        for i in range(N):
            inputt = x[i][:] 
            L1 = net.FeedForwardL1(inputt);
            yhats = net.FeedForwardL2(L1)
            prediction = yhats[0]
            if prediction > 0.5 and y[i] == 1:
                countright += 1
            if prediction < 0.5 and y[i] == 0:
                countright += 1

            #print(f"input {inputt} predicted output: {abs(round(yhats[0], 2))} | truth output {y[i]} | Counter : {countright}")

        
        print(f"Majority Gate width: {r} -- Lenght targets: {len(y)} -- Total correct Counter : {countright} -- Neurons used : {n_neurons} -- Percentage correct : {round(countright / len(y) * 100, 2)}%")

Here is the output with the accuracys:

 --------------------- Neurons 80 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 80 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 80 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 80 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 80 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 45 -- Neurons used : 80 -- Percentage correct : 35.16%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 127 -- Neurons used : 80 -- Percentage correct : 49.61%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 282 -- Neurons used : 80 -- Percentage correct : 55.08%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 363 -- Neurons used : 80 -- Percentage correct : 35.45%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 1005 -- Neurons used : 80 -- Percentage correct : 49.07%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2163 -- Neurons used : 80 -- Percentage correct : 52.81%
 --------------------- Neurons 128 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 128 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 128 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 128 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 128 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 122 -- Neurons used : 128 -- Percentage correct : 95.31%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 138 -- Neurons used : 128 -- Percentage correct : 53.91%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 291 -- Neurons used : 128 -- Percentage correct : 56.84%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 656 -- Neurons used : 128 -- Percentage correct : 64.06%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 992 -- Neurons used : 128 -- Percentage correct : 48.44%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2290 -- Neurons used : 128 -- Percentage correct : 55.91%
 --------------------- Neurons 156 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 156 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 156 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 156 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 156 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 156 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 131 -- Neurons used : 156 -- Percentage correct : 51.17%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 286 -- Neurons used : 156 -- Percentage correct : 55.86%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 688 -- Neurons used : 156 -- Percentage correct : 67.19%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 1079 -- Neurons used : 156 -- Percentage correct : 52.69%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2332 -- Neurons used : 156 -- Percentage correct : 56.93%
 --------------------- Neurons 225 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 225 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 225 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 225 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 225 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 225 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 123 -- Neurons used : 225 -- Percentage correct : 48.05%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 239 -- Neurons used : 225 -- Percentage correct : 46.68%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 617 -- Neurons used : 225 -- Percentage correct : 60.25%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 1059 -- Neurons used : 225 -- Percentage correct : 51.71%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 1977 -- Neurons used : 225 -- Percentage correct : 48.27%
 --------------------- Neurons 256 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 256 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 256 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 256 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 256 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 256 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 256 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 178 -- Neurons used : 256 -- Percentage correct : 34.77%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 482 -- Neurons used : 256 -- Percentage correct : 47.07%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 1199 -- Neurons used : 256 -- Percentage correct : 58.54%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2002 -- Neurons used : 256 -- Percentage correct : 48.88%
 --------------------- Neurons 285 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 285 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 285 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 285 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 285 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 285 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 285 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 337 -- Neurons used : 285 -- Percentage correct : 65.82%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 574 -- Neurons used : 285 -- Percentage correct : 56.05%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 816 -- Neurons used : 285 -- Percentage correct : 39.84%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 1767 -- Neurons used : 285 -- Percentage correct : 43.14%
 --------------------- Neurons 450 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 450 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 450 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 450 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 450 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 450 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 450 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 255 -- Neurons used : 450 -- Percentage correct : 49.8%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 479 -- Neurons used : 450 -- Percentage correct : 46.78%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 904 -- Neurons used : 450 -- Percentage correct : 44.14%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2075 -- Neurons used : 450 -- Percentage correct : 50.66%
 --------------------- Neurons 512 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 512 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 512 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 512 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 512 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 512 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 512 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 359 -- Neurons used : 512 -- Percentage correct : 70.12%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 545 -- Neurons used : 512 -- Percentage correct : 53.22%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 898 -- Neurons used : 512 -- Percentage correct : 43.85%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2725 -- Neurons used : 512 -- Percentage correct : 66.53%
 --------------------- Neurons 560 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 560 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 560 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 560 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 560 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 560 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 560 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 560 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 500 -- Neurons used : 560 -- Percentage correct : 48.83%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 927 -- Neurons used : 560 -- Percentage correct : 45.26%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2245 -- Neurons used : 560 -- Percentage correct : 54.81%
 --------------------- Neurons 900 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 900 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 900 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 900 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 900 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 900 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 900 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 900 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 628 -- Neurons used : 900 -- Percentage correct : 61.33%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 1002 -- Neurons used : 900 -- Percentage correct : 48.93%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 1798 -- Neurons used : 900 -- Percentage correct : 43.9%
 --------------------- Neurons 1024 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 1024 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 1024 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 1024 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 1024 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 1024 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 1024 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 1024 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 556 -- Neurons used : 1024 -- Percentage correct : 54.3%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 937 -- Neurons used : 1024 -- Percentage correct : 45.75%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2169 -- Neurons used : 1024 -- Percentage correct : 52.95%
 --------------------- Neurons 1124 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 1024 -- Neurons used : 1124 -- Percentage correct : 100.0%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 854 -- Neurons used : 1124 -- Percentage correct : 41.7%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 1944 -- Neurons used : 1124 -- Percentage correct : 47.46%
 --------------------- Neurons 1800 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 1024 -- Neurons used : 1800 -- Percentage correct : 100.0%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 826 -- Neurons used : 1800 -- Percentage correct : 40.33%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2004 -- Neurons used : 1800 -- Percentage correct : 48.93%
 --------------------- Neurons 2048 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 1024 -- Neurons used : 2048 -- Percentage correct : 100.0%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 980 -- Neurons used : 2048 -- Percentage correct : 47.85%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2041 -- Neurons used : 2048 -- Percentage correct : 49.83%
 --------------------- Neurons 2248 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 1024 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 2048 -- Neurons used : 2248 -- Percentage correct : 100.0%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 1929 -- Neurons used : 2248 -- Percentage correct : 47.09%
 --------------------- Neurons 3600 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 1024 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 2048 -- Neurons used : 3600 -- Percentage correct : 100.0%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 2115 -- Neurons used : 3600 -- Percentage correct : 51.64%
 --------------------- Neurons 4096 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 1024 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 2048 -- Neurons used : 4096 -- Percentage correct : 100.0%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 1591 -- Neurons used : 4096 -- Percentage correct : 38.84%
 --------------------- Neurons 4400 ---------------------
Majority Gate width: 3 -- Lenght targets: 8 -- Total correct Counter : 8 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 4 -- Lenght targets: 16 -- Total correct Counter : 16 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 5 -- Lenght targets: 32 -- Total correct Counter : 32 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 6 -- Lenght targets: 64 -- Total correct Counter : 64 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 7 -- Lenght targets: 128 -- Total correct Counter : 128 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 8 -- Lenght targets: 256 -- Total correct Counter : 256 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 9 -- Lenght targets: 512 -- Total correct Counter : 512 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 10 -- Lenght targets: 1024 -- Total correct Counter : 1024 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 11 -- Lenght targets: 2048 -- Total correct Counter : 2048 -- Neurons used : 4400 -- Percentage correct : 100.0%
Majority Gate width: 12 -- Lenght targets: 4096 -- Total correct Counter : 4095 -- Neurons used : 4400 -- Percentage correct : 99.98%

Considering using it for a large language model (just for fun) which has unlimited meassureable outputs it would be impossible to use this network as the size would be in the 10^80 in size neurons. It would learn it perfectly all languages and code, but we would be unable to run it anywhere with current compute.

Am i doing something wrong, or is this the expected behaviour? Did you also run some tests on it?

Update: did run a test if epochs matter, and statistically they dont matter, 1 epoch is enough , but the neurons have to be at least 10% greater than the different possible outputs. Did run the test from 1-512 epochs...

Best regards

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions