void FramesWeightFrame::mousePressEvent(QMouseEvent* mouseEvent) { mouseDown = true; weightedFrame = mouseEvent->x()/FrameBarWidth; adjustWeight(mouseEvent->y()); repaint(); }
void FramesWeightFrame::mouseMoveEvent(QMouseEvent* mouseEvent) { if(mouseDown) { weightedFrame = mouseEvent->x()/FrameBarWidth; if(weightedFrame<0 || weightedFrame>=frameCount()) return; adjustWeight(mouseEvent->y()); repaint(); } }
void BpAlgSt::start(){ Q_ASSERT(net != NULL); Q_ASSERT(data != NULL); emit started(); //value initialization running = true; actIter = 1; actTime = 0; timer.restart(); double sumErr = 0; for(int i = 0; i < data->minPatternCount(); i++){ output = net->layerOutput(data->inputVector(i)); sumErr += calcError(i); } actError = sumErr; emit update(0, actTime, actError); //learning main cycle while(running){ for(int i = 0; i < data->minPatternCount(); i++){ //feedforward output = net->layerOutput(data->inputVector(i)); //output layer delta calculation calcOutputDelta(i); //inner layer delta calculation calcInnerDelta(); //weight adjustment adjustWeight(); } //current time actTime = timer.elapsed(); //output error calculation double sumErr = 0; for(int i = 0; i < data->minPatternCount(); i++){ output = net->layerOutput(data->inputVector(i)); sumErr += calcError(i); } actError = sumErr; //emits update signal once per each update interval if(actIter % updateInterv == 0){ emit update(actIter, actTime, actError); } //stop conditions if(actTime >= stopTimeVal) break; if(actIter >= stopIter) break; if(actError <= stopErrorVal) break; actIter++; } //running flag to false running = false; //signal that tells that learning is finished emit stoped(); }