Example. Introduction: Predicting Text - acortix/fdk GitHub Wiki

Description

Code

Setup

#include <FDK/fdk.h>
#include <string>
FDK::Brain * brain;
FDK::Region * region;
FDK::SparseCharEncoder * encoder;
FDK::Connection * connection;

FDK::RegionSettings regionSettings;
regionSettings.sensorSettings.width = 45;
regionSettings.sensorSettings.height = 45;
regionSettings.depth = 4;
regionSettings.learningRate = 0.1;
regionSettings.sparsity = 0.02;
regionSettings.desiredSparsity = (FDK::UInt)( (FDK::Float)(45*45)*0.02f);

std::string stringOfCharacters = "qwertyuiopasdfghjklzxcvbnm. ";
vector<char> charactersToLearn;
for(char ch : stringOfCharacters){
    charactersToLearn.push_back(ch);
}

FDK::EncoderSettings<char> encoderSettings;
encoderSettings.regionSettings = regionSettings;
encoderSettings.possibleSignals = charactersToLearn;

brain = FrankDevelopmentKit::createBrain();
region = FrankDevelopmentKit::createRegion(regionSettings);
encoder = FrankDevelopmentKit::createSparseCharEncoder(encoderSettings);
connection = FrankDevelopmentKit::createConnection(encoder->output(),region->input());

brain->addConnection(connection);
brain->addEncoder(encoder);
brain->addRegion(region);

// Feed encoder some information
for(int x = 0; x < 10000; x++){
    encoder->appendToBuffer( string("the quick brown fox jumps over the lazy dog. ") );
}

Usage

The following code may be run in a loop. It does all the job

brain->step();

To access next character in the encoder buffer use:

encoder->nextCharacter()

To decode current prediction use:

encoder->decode( region->output() )
⚠️ **GitHub.com Fallback** ⚠️