本文整理汇总了C++中Meter::AttachPopulation方法的典型用法代码示例。如果您正苦于以下问题:C++ Meter::AttachPopulation方法的具体用法?C++ Meter::AttachPopulation怎么用?C++ Meter::AttachPopulation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Meter
的用法示例。
在下文中一共展示了Meter::AttachPopulation方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: NetworkSetupMeters
void NetworkProjectionTests::NetworkSetupMeters()
{
Meter* layerMeterOut = new Meter("TestProjectionsLayer1.csv", Storage::CSV);
layerMeterOut->AttachPopulation(this->GetLayer(0));
Meter* layerMeterOut2 = new Meter("TestProjectionsLayer2.csv", Storage::CSV);
layerMeterOut2->AttachPopulation(this->GetLayer(1));
this->AddMeter(layerMeterOut);
this->AddMeter(layerMeterOut2);
}
示例2: NetworkTestTrieschAndFoldiak
void NetworkTests::NetworkTestTrieschAndFoldiak(int mpiRank, int mpiSize)
{
DataSources dataSources;
int sizeX = 5;//10;
int sizeY = 5;//10;
int nrItems = 2500;
bool isTriesch = true;
Network* network = new Network();
network->SetMPIParameters(mpiRank,mpiSize);
int nrInputHypercolumns = 1;
int nrInputRateUnits = sizeX*sizeY;
int nrOutputHypercolumns = 2;
int nrOutputRateUnits = 5;//sizeX+sizeY;
PopulationColumns* layer1 = new PopulationColumns(network,nrInputHypercolumns,nrInputRateUnits,PopulationColumns::GradedThresholded);
PopulationColumns* layer2 = new PopulationColumns(network,nrOutputHypercolumns,nrOutputRateUnits,PopulationColumns::GradedThresholded);
network->AddPopulation(layer1);
network->AddPopulation(layer2);
FullConnectivity* full = new FullConnectivity();
FullConnectivity* full2;
FullConnectivityNoLocalHypercolumns* full3NoLocal;
layer2->AddPre(layer1,full);
bool thresholded = true;
ProjectionModifierTriesch* eTriesch = new ProjectionModifierTriesch(0.002f,0.2f,0.05f,1.0f/float(nrOutputRateUnits), thresholded);//0.05,0.2,0.005,1.0/(float)nrOutputRateUnits, thresholded);
if(isTriesch)
full->AddProjectionsEvent(eTriesch);
//float eta1 = 3, eta2= 2.4, eta3 = 1.5, alpha = 0.005, beta = 200;
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++)
{
//.........这里部分代码省略.........
示例3: NetworkTestSwitching
// Switching
void NetworkTests::NetworkTestSwitching(int mpiRank, int mpiSize)
{
int nrHypercolumns = 5;
int nrRateUnits = 10;
int nrItems = 2;
DataSources sources;
srand(2);
vector<vector<float> > data = sources.GetRandomHCs(nrHypercolumns,nrRateUnits,nrItems);//sources.GetRandom(size,0.1,nrItems);
// setup recurrent network
Network* network = new Network();
network->SetMPIParameters(mpiRank,mpiSize);
PopulationColumns* layer1 = new PopulationColumns(network,nrHypercolumns,nrRateUnits,PopulationColumns::Graded);
FullConnectivity* full = new FullConnectivity();//FullConnectivity(false,"");
layer1->AddPre(layer1,full);
network->AddPopulation(layer1);
ProjectionModifierBcpnnOnline* eBcpnn = new ProjectionModifierBcpnnOnline();
ProjectionModifierTriesch* eTriesch = new ProjectionModifierTriesch();
ProjectionModifierHebbSimple* eHebb = new ProjectionModifierHebbSimple();
ProjectionModifierBCM* eBCM = new ProjectionModifierBCM();
full->AddProjectionsEvent(eBcpnn); // incl adding transfer fcn
//full->AddProjectionsEvent(eTriesch); // incl adding transfer fcn
//full->AddProjectionsEvent(eHebb);
//full->AddProjectionsEvent(eBCM);
PopulationModifierAdaptation2* eAdaptation = new PopulationModifierAdaptation2();
//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);
//.........这里部分代码省略.........