本文整理汇总了C++中Network::RecordAll方法的典型用法代码示例。如果您正苦于以下问题:C++ Network::RecordAll方法的具体用法?C++ Network::RecordAll怎么用?C++ Network::RecordAll使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Network
的用法示例。
在下文中一共展示了Network::RecordAll方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NetworkTestInclTimingBCPNNRecurrent
//.........这里部分代码省略.........
network->AddPopulation(layer1);
FullConnectivity* full = new FullConnectivity();//false,"minicolumns");
full->SetRandomWeights(0,0);
RandomConnectivity* randConn = new RandomConnectivity(probConnectivity);//0.1);
randConn->SetRandomWeights(0,0);
//network->AddTiming(randConn);
layer1->AddPre(layer1,randConn); // recurrent
// Add Projection changes
float lambda0 = 10e-6;
float alpha = 0.05;
ProjectionModifierBcpnnOnline* bStandard = new ProjectionModifierBcpnnOnline(alpha,lambda0);
//full->AddProjectionsEvent(bStandard);
randConn->AddProjectionsEvent(bStandard);
WTA* wta = new WTA();
layer1->AddPopulationModifier(wta);
// Construct initial network
network->Initialize();
//vector<int> partsOfDataToUseAsInput = layer1->GetMPIDistribution(network->MPIGetNodeId());
// Specify input data
// - change to only create local part
DataSources source;
// not correct right now as SetValuesAll working locally and this is global
vector<vector<float> > data = source.GetRandomHCsOrthogonal(nrHypercolumns/100,nrRateUnits,nrItems);
// Meters
Meter* l1meter = new Meter("layer1.csv", Storage::CSV);
if(storeData)
{
l1meter->AttachPopulation(layer1);
network->AddMeter(l1meter);
}
Meter* c1meter = new Meter("Projections1.csv",Storage::CSV);
if(storeData)
{
c1meter->AttachProjection(layer1->GetIncomingProjections()[0],0);
network->AddMeter(c1meter);
}
// Timings
network->AddTiming(bStandard);
network->AddTiming(layer1);
network->AddTiming(full);
// need to access after it has been built
network->AddTiming(layer1->GetIncomingProjections()[0]);
// Training
// set fixed pattern
layer1->SwitchOnOff(false);
int trainIterations = 1;
int testIterations = 5;
for(int i=0;i<trainIterations;i++)
{
//cout<<i<<"\n";
for(int j=0;j<data.size();j++)
{
layer1->SetValuesAll(data[j]);
// next time step
network->Simulate(10);
}
}
// Testing
if(doTesting == true)
{
layer1->SwitchOnOff(true);
bStandard->SwitchOnOff(false);
for(int i=0;i<testIterations;i++)
{
for(int j=0;j<data.size();j++)
{
// clear all events before switching so no disturbance, can remove if moving average activity etc.
network->ClearEventsIncoming();
layer1->SetValuesAll(data[j]);
network->Simulate(10);
//for(int i=0;i<testIterations;i++)
// next time step
// network->Simulate();
}
}
}
network->RecordAll();
network->StoreAnalysis();
}
示例2: NetworkTestTrieschAndFoldiak
//.........这里部分代码省略.........
float eta1 = 0.5, eta2= 0.02, eta3 = 0.02, alpha = 0.0005, beta = 10;//alpha = 1.0/8.0, beta = 10;
bool lateral = false;
ProjectionModifierFoldiak* eFoldiak = new ProjectionModifierFoldiak(eta1, eta2, eta3, alpha, beta, lateral);
lateral = true;
alpha = 0.75;
ProjectionModifierFoldiak* eFoldiakLateral = new ProjectionModifierFoldiak(eta1, eta2, eta3, alpha, beta, lateral);
//ProjectionModifierBCM* eBCM = new ProjectionModifierBCM(0.1,0.05,20);
if(!isTriesch)
{
full2 = new FullConnectivity();
layer2->AddPre(layer2,full2);
full->AddProjectionsEvent(eFoldiak);
full2->AddProjectionsEvent(eFoldiakLateral);
}
else
{
full3NoLocal = new FullConnectivityNoLocalHypercolumns();
//full3NoLocal->AddProjectionsEvent(eBCM);
full3NoLocal->AddProjectionsEvent(eFoldiakLateral);
layer2->AddPre(layer2,full3NoLocal);
}
// implements N here
SoftMax* softmax = new SoftMax(SoftMax::WTAThresholded,0.5);//(10.0, SoftMax::ProbWTA);
WTA* wta = new WTA();
//layer2->AddPopulationModifier(wta);
layer2->AddPopulationModifier(softmax);
network->Initialize();
//////////////////////////////
// Meters
char* name1 = new char[50];
char* name2 = new char[50];
sprintf(name1,"Projection_triesch_n%d.csv",mpiRank);
Meter* connMeter = new Meter(name1, Storage::CSV);
connMeter->AttachProjection(layer2->GetIncomingProjections()[0],0);
network->AddMeter(connMeter);
sprintf(name2,"Layer2Activity_triesch.csv");
Meter* layerMeter = new Meter(name2, Storage::CSV);
layerMeter->AttachPopulation(layer2);
network->AddMeter(layerMeter);
// end Meters
//////////////////////////////
vector<vector<float> > trainData = dataSources.GetBars(sizeX,sizeY, nrItems);
int iterations = 1;
int iterSameStimuli = 100;
if(!isTriesch)
iterSameStimuli = 10;
layer1->SwitchOnOff(false); // fixed during training phase
for(int j=0;j<iterations;j++)
{
for(int i=0;i<trainData.size();i++)
{
/*if(!isTriesch)
{
// in order to settle recurrent activity
eFoldiak->SwitchOnOff(false);
eFoldiakLateral->SwitchOnOff(false);
}*/
for(int k=0;k<iterSameStimuli;k++)
{
/* if(!isTriesch && k==iterSameStimuli-1)
{
eFoldiak->SwitchOnOff(true);
eFoldiakLateral->SwitchOnOff(true);
}
*/
for(int m=0;m<1;m++)
{
layer1->SetValuesAll(trainData[i]);
//for(int n=0;n<3;n++)
network->Simulate();
}
}
// allow units to reset
network->Reset();
/*if(i%50 == 0)
{
network->RecordAll();
if(mpiRank == 0)
cout<<"Storing.";
}*/
}
}
network->RecordAll();
}
示例3: NetworkTestSwitching
//.........这里部分代码省略.........
//eAdaptation->SetParameters(0,0); // adaptation off initially
eAdaptation->SetParameters(0); // adaptation off initially
layer1->AddPopulationModifier(eAdaptation);
WTA* wta = new WTA();
layer1->AddPopulationModifier(wta);//wta);//softmax);
network->Initialize();
eAdaptation->Initm_Aj(1); // initialize m_Aj vector
// set up meters
char* name1 = new char[30];
char* name2 = new char[30];
char* name3 = new char[30];
sprintf(name1,"Projections_n%d.csv",mpiRank);
sprintf(name2,"Layer1ActivityWTA.csv");
sprintf(name3,"Layer1Activity.csv");
Meter* connMeter = new Meter(name1, Storage::CSV);
connMeter->AttachProjection(layer1->GetIncomingProjections()[0],0);
network->AddMeter(connMeter);
Meter* layerMeter = new Meter(name3, Storage::CSV);
layerMeter->AttachPopulation(layer1);
network->AddMeter(layerMeter);
Meter* eventLayerMeter=new Meter(name2, Storage::CSV);
eventLayerMeter->AttachPopulationModifier(eAdaptation);
network->AddMeter(eventLayerMeter);
int nrIters = 10;
int stimuliOn = 10;
layer1->SwitchOnOff(false); // fixed input
// store patterns
for(unsigned int i=0;i<nrIters;i++)
{
for(unsigned int j=0;j<data.size();j++)
{
for(unsigned int k=0;k<stimuliOn; k++)
{
layer1->SetValuesAll(data[j]);
network->Simulate();
}
}
}
// random stimulation
vector<float> randVec(data[0].size());
for(unsigned int i=0;i<randVec.size();i++)
randVec[i] = 0.5f*float(rand()/RAND_MAX);
// mixture
vector<float> mixVec(data[0].size());
for(unsigned int i=0;i<mixVec.size();i++)
mixVec[i] = 1*(data[0][i] + data[1][i]);
layer1->SetValuesAll(mixVec);//randVec);
// Test without adaptation turned on
layer1->SwitchOnOff(true);
//eHebb->SetEtaHebb(0.0);
eBCM->SwitchOnOff(false);
eBcpnn->SwitchOnOff(false);
for(int i=0;i<nrIters;i++)
{
for(unsigned int j=0;j<data.size();j++)
{
layer1->SetValuesAll(mixVec);//data[j]);
for(int k=0;k<stimuliOn; k++)
{
network->Simulate();
}
}
}
// Turn on adaptation
//eAdaptation->SetParameters(10,0.2);
eAdaptation->SetParameters(0.2f);
for(int i=0;i<nrIters;i++)
{
for(unsigned int j=0;j<data.size();j++)
{
layer1->SetValuesAll(mixVec);
for(int k=0;k<stimuliOn; k++)
{
network->Simulate();
}
}
}
network->RecordAll();
// check switching
}