BOOL CSoftComputingWndDoc::OnOpenDocument(LPCTSTR lpszPathName) { if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; CString filetype = lpszPathName; if ((filetype.Find(".jpg") > -1) || (filetype.Find(".JPG") > -1) || (filetype.Find(".gif") > -1) || (filetype.Find(".GIF") > -1) || (filetype.Find(".bmp") > -1) || (filetype.Find(".BMP") > -1) || (filetype.Find(".tif") > -1) || (filetype.Find(".TIF") > -1)) { m_image = cvvLoadImage(lpszPathName); CMainFrame* mainframe = (CMainFrame*)AfxGetMainWnd(); m_frtk.imgview = (CImageBaseView*)mainframe->GetImageBaseView(); for (int i=0; i<4; i++) m_frtk.debug[i] = (CImageBaseView*)mainframe->GetDebugImage(i); m_frtk.msgview = (CLogView*)mainframe->GetDJMessage(); m_frtk.FRTKinit(m_image); } return TRUE; }
void CNNfunction::NNtrain(float *inputs, float *outputs, int no_sample) { CMainFrame* main = (CMainFrame*)AfxGetMainWnd(); int i, j; int epoch; float **input, **output; input = new float *[no_sample]; for (i=0; i<no_sample; i++) { input[i] = new float[no_input]; for (j=0; j<no_input; j++) input[i][j] = *(inputs + j + i*no_input); } output = new float *[no_sample]; for (i=0; i<no_sample; i++) { output[i] = new float[no_output]; for (j=0; j<no_output; j++) output[i][j] = *(outputs + j + i*no_output); } CString str; str.Format("\r\nLearning Start! Ep[%d] & Err[%.0e]", step, avg_err); (main->GetDJMessage())->AddLine(str); RLsTrainMLPBackPropagation(psNN, input, no_sample, no_input, output, no_output, eta, step, avg_err, mo, &epoch); if (RLGetStatus() != RL_StsOk) exit(0); str.Format("Learning Stop [%d]", epoch); (main->GetDJMessage())->AddLine(str); }
void CNNfunction::NNeval(float *inputs, float* outputs, int no_sample) { CMainFrame* main = (CMainFrame*)AfxGetMainWnd(); int i, j; float *result = new float[no_output]; float maxval = -1.0f; int maxid, maxid2; int cmat[7][7]; for (i=0; i<7; i++) for (j=0; j<7; j++) cmat[i][j] = 0; float rr = 0.0f; for (j=0; j<no_sample; j++) { RLsEvalMLPFeedForward(psNN, (inputs +j*no_input), no_input, result, no_output); maxval = -1.0f; for (i=0; i<no_output; i++) { if (result[i] > maxval) { maxval = result[i]; maxid = i; } } for (i=0; i<no_output; i++) { if (outputs[j*no_output + i] == 0.8f) { maxid2 = i; break; } } cmat[maxid2][maxid]++; } int sum = 0; for (i=0; i<no_output; i++) { sum += cmat[i][i]; } rr = (float)sum/(float)no_sample*100.0f; CString str; str.Format("\r\nRec. Rate for Set[%.2f]", rr); (main->GetDJMessage())->AddLine(str); CString str2; str2.Format(""); for (i=0; i<no_output; i++) { str.Format("%d ", cmat[i][i]); str2 += str; } (main->GetDJMessage())->AddLine(str2); delete [] result; result = NULL; }