int TestConnProbe::outputState(double timed){ //Grab weights of probe and test for the value of .625/1.5, or .4166666 HyPerConn* conn = getTargetHyPerConn(); int numPreExt = conn->preSynapticLayer()->getNumExtended(); int syw = conn->yPatchStride(); // stride in patch for(int kPre = 0; kPre < numPreExt; kPre++){ PVPatch * weights = conn->getWeights(kPre, 0); int nk = conn->fPatchSize() * weights->nx; pvwdata_t * data = conn->get_wData(0,kPre); int ny = weights->ny; for (int y = 0; y < ny; y++) { pvwdata_t * dataYStart = data + y * syw; for(int k = 0; k < nk; k++){ if(fabs(timed - 0) < (parent->getDeltaTime()/2)){ if(fabs(dataYStart[k] - 1) > .01){ std::cout << "dataYStart[k]: " << dataYStart[k] << "\n"; } assert(fabs(dataYStart[k] - 1) <= .01); } else if(fabs(timed - 1) < (parent->getDeltaTime()/2)){ if(fabs(dataYStart[k] - 1.375) > .01){ std::cout << "dataYStart[k]: " << dataYStart[k] << "\n"; } assert(fabs(dataYStart[k] - 1.375) <= .01); } } } } return PV_SUCCESS; }
int MomentumTestConnProbe::outputState(double timed){ //Grab weights of probe and test for the value of .625/1.5, or .4166666 HyPerConn* conn = getTargetHyPerConn(); int numPreExt = conn->preSynapticLayer()->getNumExtended(); int syw = conn->yPatchStride(); // stride in patch for(int kPre = 0; kPre < numPreExt; kPre++){ PVPatch * weights = conn->getWeights(kPre, 0); int nk = conn->fPatchSize() * weights->nx; pvwdata_t * data = conn->get_wData(0,kPre); int ny = weights->ny; pvdata_t wCorrect; for (int y = 0; y < ny; y++) { pvwdata_t * dataYStart = data + y * syw; for(int k = 0; k < nk; k++){ pvdata_t wObserved = dataYStart[k]; if(timed < 3){ wCorrect = 0; } else{ wCorrect = .376471; for(int i = 0; i < (timed-3); i++){ wCorrect += .376471 * exp(-(2*(i+1))); } } assert(fabs(wObserved - wCorrect) <= 1e-4); } } } return PV_SUCCESS; }
int customexit(HyPerCol * hc, int argc, char ** argv) { BaseConnection * baseConn; baseConn = hc->getConnFromName("initializeFromInitWeights"); HyPerConn * initializeFromInitWeightsConn = dynamic_cast<HyPerConn *>(baseConn); // There must be a connection named initializeFromInitWeights. It should have a single weight with value 1 assert(initializeFromInitWeightsConn); assert(initializeFromInitWeightsConn->xPatchSize()==1); assert(initializeFromInitWeightsConn->yPatchSize()==1); assert(initializeFromInitWeightsConn->fPatchSize()==1); assert(initializeFromInitWeightsConn->numberOfAxonalArborLists()==1); assert(initializeFromInitWeightsConn->get_wData(0,0)[0] == 1.0f); // There must be a connection named initializeFromCheckpoint. It should have a single weight with value 2 baseConn = hc->getConnFromName("initializeFromCheckpoint"); HyPerConn * initializeFromCheckpointConn = dynamic_cast<HyPerConn *>(baseConn); assert(initializeFromCheckpointConn); assert(initializeFromCheckpointConn->xPatchSize()==1); assert(initializeFromCheckpointConn->yPatchSize()==1); assert(initializeFromCheckpointConn->fPatchSize()==1); assert(initializeFromCheckpointConn->numberOfAxonalArborLists()==1); assert(initializeFromCheckpointConn->get_wData(0,0)[0] == 2.0f); return PV_SUCCESS; }