2012-01-14 5 views
1

私はかなり長い間この問題に取り組んでいますが、ここで問題を把握することができません。私はOpencvでEclipseを使用してUbuntuで作業しています。私はいくつかのvalues.Aいくつかのサンプル値を持つニューラルネットワークを訓練しようとしています はここ 62 63 45 0.175925925925926 0.285714285714286 0.247058823529412 1 49 51 37 0.190476190476190 0.274509803921569 0.200000000000000 1opencvでニューラルネットワークを練習中にエラーが発生しました

あるニューラルネットワークの訓練のループ全体です。 FILE * fid = fopen( "treewall"、 "r");

  while (fscanf(fid,"%f",&a)==1) 
      { 
        printf("%f\n",a); 
        trainsamplecount=trainsamplecount+1; 
      } 
      cout<<trainsamplecount<<endl; 
      rewind(fid); 
      float td[2000][7]; 
      int numoftestpoints; 
      CvMat* traindata=cvCreateMat(trainsamplecount,6,CV_32FC1); 
      CvMat* trainclasses=cvCreateMat(trainsamplecount,1,CV_32FC1); 
      CvMat* samplewts=cvCreateMat(trainsamplecount,1,CV_32FC1); 
      CvMat* neurallayers=cvCreateMat(4,1,CV_32SC1); 
      CvMat traindata1,trainclasses1,neurallayers1,samplewts1; 


      cvGetRows(neurallayers,&neurallayers1,0,4); 

      cvSet1D(&neurallayers1, 0, cvScalar(6)); 
      cvSet1D(&neurallayers1,1,cvScalar(3)); 
      cvSet1D(&neurallayers1,2,cvScalar(3)); 
      cvSet1D(&neurallayers1, 3, cvScalar(1)); 

     // CvMat* outdata=Mat::ones(trainsamplecount/7,1,CV_8U); 
     // CvMat* testdata(numoftestpoints,7,CV_32FC1); 
      cout<<traindata->rows<<endl; 
      cout<<traindata->cols<<endl; 
      int i=0,j=0; 

      if(fid) 
      { 
      for(int i=0;i<trainsamplecount;i++) 
       fscanf(fid,"%f %f %f %f %f %f %f ",&td[i][0],&td[i][1],&td[i][2],&td[i][3],&td[i][4],&td[i][5],&td[i][6]); 


      for (i=0;i<trainsamplecount;i++) 
      { 
       cout<<i<<endl; 
       cvGetRow(traindata,&traindata1,i); 
       cvSetReal2D(&traindata1,i,0,(float)td[i][0]); 
       cvSetReal2D(&traindata1,i,1,(float)td[i][1]); 
       cvSetReal2D(&traindata1,i,2,(float)td[i][2]); 
       cvSetReal2D(&traindata1,i,3,(float)td[i][3]); 
       cvSetReal2D(&traindata1,i,4,(float)td[i][4]); 
       cvSetReal2D(&traindata1,i,5,(float)td[i][5]); 
       cvGetRow(trainclasses,&trainclasses1,i); 
       cvSet1D(&trainclasses1,i,cvRealScalar(1)); 
       cvGetRow(samplewts,&samplewts1,i); 


       cvSet1D(samplewts,i,cvRealScalar(1)); 

      } 
      } 

しかし、このループはステートメントcvGetRow(trainclasses、& trainclasses1、I)で終了します。 行cvSet1D(samplewts、i、cvRealScalar(1))で不正な引数エラーを表示する前に使用しました。

私は解決策を考えることができないので、この問題を解決するのを手伝ってください。

答えて

0

私はtrainclasses1 1行と1列を有することになるので、ライン

cvSet1D(&trainclasses1,i,cvRealScalar(1)); 

は、

cvSet1D(&trainclasses1,0,cvRealScalar(1)); 

されるべきだと思います。

関連する問題