Non-linear and linear perceptron model of machine learning.
Objective-C Ruby
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
KRPerceptron.xcodeproj
KRPerceptron
ML
.gitignore
KRPerceptron.podspec
LICENSE
README.md

README.md

About

KRPerceptron implemented non-linear and linear algorithm in perceptron model of machine learning.

Podfile

platform :ios, '7.0'
pod "KRPerceptron", "~> 1.0.1"

How To Get Started & Samples

Import

#import "KRPerceptron.h"

Identify Numbers

KRPerceptron *_perceptron   = [KRPerceptron sharedPerceptron];
_perceptron.activeFunction  = KRPerceptronActiveFunctionBySigmoid;
_perceptron.maxIteration    = 1000;
_perceptron.learningRate    = 0.8f;
_perceptron.runOnMainThread = YES;

// Number 1
[_perceptron addPatterns:@[@0, @0, @0, @0, @0, @0, @0, @0, @0, @0, @0, @0,
                           @0, @0, @0, @0, @0, @0, @0, @0, @0, @0, @0, @0,
                           @0, @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1]
                 outputs:@[@1, @0, @0, @0, @0, @0, @0, @0, @0, @0]];

// Number 2
[_perceptron addPatterns:@[@1, @0, @0, @0, @1, @1, @1, @1, @1, @1, @0, @0,
                           @0, @1, @0, @0, @0, @1, @1, @0, @0, @0, @1, @0,
                           @0, @0, @1, @1, @1, @1, @1, @1, @0, @0, @0, @1]
                 outputs:@[@0, @1, @0, @0, @0, @0, @0, @0, @0, @0]];

// Number 3
[_perceptron addPatterns:@[@1, @0, @0, @0, @1, @0, @0, @0, @1, @1, @0, @0,
                           @0, @1, @0, @0, @0, @1, @1, @0, @0, @0, @1, @0,
                           @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @1, @0, @0, @0, @0, @0, @0, @0]];

// Number 4
[_perceptron addPatterns:@[@1, @1, @1, @1, @1, @0, @0, @0, @0, @0, @0, @0,
                           @0, @1, @0, @0, @0, @0, @0, @0, @0, @0, @1, @0,
                           @0, @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @0, @1, @0, @0, @0, @0, @0, @0]];

// Number 5
[_perceptron addPatterns:@[@1, @1, @1, @1, @1, @0, @0, @0, @1, @1, @0, @0,
                           @0, @1, @0, @0, @0, @1, @1, @0, @0, @0, @1, @0,
                           @0, @0, @1, @1, @0, @0, @0, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @0, @0, @1, @0, @0, @0, @0, @0]];

// Number 6
[_perceptron addPatterns:@[@1, @1, @1, @1, @1, @1, @1, @1, @1, @1, @0, @0,
                           @0, @1, @0, @0, @0, @1, @1, @0, @0, @0, @1, @0,
                           @0, @0, @1, @1, @0, @0, @0, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @0, @0, @0, @1, @0, @0, @0, @0]];

// Number 7
[_perceptron addPatterns:@[@1, @0, @0, @0, @0, @0, @0, @0, @0, @1, @0, @0,
                           @0, @0, @0, @0, @0, @0, @1, @0, @0, @0, @0, @0,
                           @0, @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @0, @0, @0, @0, @1, @0, @0, @0]];

// Number 8
[_perceptron addPatterns:@[@1, @1, @1, @1, @1, @1, @1, @1, @1, @1, @0, @0,
                           @0, @1, @0, @0, @0, @1, @1, @0, @0, @0, @1, @0,
                           @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @0, @0, @0, @0, @0, @1, @0, @0]];

// Number 9
[_perceptron addPatterns:@[@1, @1, @1, @1, @1, @0, @0, @0, @0, @1, @0, @0,
                           @0, @1, @0, @0, @0, @0, @1, @0, @0, @0, @1, @0,
                           @0, @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @0, @0, @0, @0, @0, @0, @1, @0]];

// Number 0
[_perceptron addPatterns:@[@1, @1, @1, @1, @1, @1, @1, @1, @1, @1, @0, @0,
                           @0, @0, @0, @0, @0, @1, @1, @0, @0, @0, @0, @0,
                           @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1, @1]
                 outputs:@[@0, @0, @0, @0, @0, @0, @0, @0, @0, @1]];

// Random settings
[_perceptron randomWeightsAndBiases];

__block typeof(_perceptron) _weakPerceptron = _perceptron;
[_perceptron setTrainingIteraion:^(NSInteger iteration, NSArray *weights) {
    NSLog(@"%li iteration, weights : %@", iteration, weights);
}];

[_perceptron trainingWithCompletion:^(BOOL success, NSArray *weights, NSInteger totalIteration) {
    if( success )
    {
        NSLog(@"total Iteration : %li", totalIteration);
        NSLog(@"Trained weights : %@", weights);
        
        // Verified number " 7 " which has some defects.
        NSArray *_verifyPatterns = @[@1, @1, @1, @0, @0, @0, @0, @0, @0, @1, @0, @0,
                                     @0, @0, @0, @0, @0, @0, @1, @0, @0, @0, @0, @0,
                                     @0, @0, @0, @1, @1, @1, @1, @1, @1, @1, @1, @1];
        [_weakPerceptron directOutputAtPatterns:_verifyPatterns
                                     completion:^(NSInteger iteration, NSArray *networkOutputs, NSArray *inputs) {
                                         NSLog(@"Verified networkOutputs : %@", networkOutputs);
                                     }];
    }
}];

Version

V1.0.1

LICENSE

MIT.