void Network::run(int n) { if (!initialized_) { initialize(); } if (phaseInfo_.empty()) return; NTA_CHECK(maxEnabledPhase_ < phaseInfo_.size()) << "maxphase: " << maxEnabledPhase_ << " size: " << phaseInfo_.size(); for(int iter = 0; iter < n; iter++) { iteration_++; // compute on all enabled regions in phase order for (UInt32 phase = minEnabledPhase_; phase <= maxEnabledPhase_; phase++) { for (std::set<Region*>::iterator i = phaseInfo_[phase].begin(); i != phaseInfo_[phase].end(); i++) { Region *r = *i; r->prepareInputs(); r->compute(); } } // invoke callbacks for (UInt32 i = 0; i < callbacks_.getCount(); i++) { std::pair<std::string, callbackItem>& callback = callbacks_.getByIndex(i); callback.second.first(this, iteration_, callback.second.second); } } return; }
int main(int argc, const char * argv[]) { // Create network Network net = Network(); // Add VectorFileSensor region to network Region* region = net.addRegion("region", "VectorFileSensor", "{activeOutputCount: 1}"); // Set region dimensions Dimensions dims; dims.push_back(1); std::cout << "Setting region dimensions" << dims.toString() << std::endl; region->setDimensions(dims); // Load data std::string path = Path::makeAbsolute("../../src/examples/regions/Data.csv"); std::cout << "Loading data from " << path << std::endl; std::vector<std::string> loadFileArgs; loadFileArgs.push_back("loadFile"); loadFileArgs.push_back(path); loadFileArgs.push_back("2"); region->executeCommand(loadFileArgs); // Initialize network std::cout << "Initializing network" << std::endl; net.initialize(); ArrayRef outputArray = region->getOutputData("dataOut"); // Compute std::cout << "Compute" << std::endl; region->compute(); // Get output Real64 *buffer = (Real64*) outputArray.getBuffer(); for (size_t i = 0; i < outputArray.getCount(); i++) { std::cout << " " << i << " " << buffer[i] << "" << std::endl; } // Serialize Network net2; { std::stringstream ss; net.write(ss); net2.read(ss); } net2.initialize(); Region* region2 = net2.getRegions().getByName("region"); region2->executeCommand(loadFileArgs); ArrayRef outputArray2 = region2->getOutputData("dataOut"); Real64 *buffer2 = (Real64*)outputArray2.getBuffer(); net.run(1); net2.run(1); NTA_ASSERT(outputArray2.getCount() == outputArray.getCount()); for (size_t i = 0; i < outputArray.getCount(); i++) { std::cout << " " << i << " " << buffer[i] << " " << buffer2[i] << std::endl; } return 0; }