KRDelta 是一种监督学习,它采用Delta规则进行机器学习,它仍然应用于移动应用程序中的推荐系统和实时用户行为分析。
platform :ios, '8.0'
pod 'KRDelta', '~> 1.6.0'
#import "KRDelta.h"
KRDelta *delta = [KRDelta sharedDelta];
delta.activeFunction = KRDeltaActivationTanh;
delta.optimization.method = KRDeltaOptimizationFixedInertia;
delta.batchSize = 1; // kKRDeltaFullBatch or 0 is full-batch, 1 is standard SGD, > 1 is mini-batch.
delta.learningRate = 0.8f;
delta.convergenceValue = 0.001f;
delta.maxIteration = 100;
[delta addPatterns:@[@1.0f, @-2.0f, @0.0f, @-1.0f] target:-1.0f];
[delta addPatterns:@[@0.0f, @1.5f, @-0.5f, @-1.0f] target:1.0f];
[delta addPatterns:@[@1.0f, @1.0f, @1.5f, @0.5f] target:1.0f];
[delta addPatterns:@[@2.0f, @0.5f, @-1.5f, @-0.5f] target:1.0f];
[delta addPatterns:@[@-0.5f, @-1.5f, @0.5f, @1.0f] target:-1.0f];
[delta setupRandomMin:-0.5f max:0.5f];
[delta randomWeights];
[delta trainingWithIteration:^(NSInteger iteration, NSArray *weights) {
NSLog(@"Doing %li iteration : %@", iteration, weights);
} completion:^(BOOL success, NSArray *weights, NSInteger totalIteration) {
NSLog(@"Done %li iteration : %@", totalIteration, weights);
}];
如果神经元完成训练,我们可以在完成块或其他地方通过 KRDeltaFetcher 来保存它。
// Saving
[delta trainingWithCompletion:^(BOOL success, NSArray *weights, NSInteger totalIteration) {
[[KRDeltaFetcher sharedFetcher] save:delta forKey:@"A1"];
}];
// Fetching
KRDelta *trainedDelta = [[KRDeltaFetcher sharedFetcher] objectForKey:@"A1"];
[delta setupWeights:@[@1.0f, @-1.0f, @0.0f, @0.5f]];
[delta setBeforeUpdate:^BOOL(NSInteger iteration, NSArray *deltaWeights){
// YES: keep training.
// NO: stop continue.
return YES;
}];
V1.6.0
MIT.