Example. Introduction: Predicting Text - acortix/fdk GitHub Wiki
#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. ") );
}
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() )