全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1268
推到 Plurk!
推到 Facebook!

有關讀取大小為11.2MB的文字檔案造成程式異常停頓的問題

尚未結案
Saladin
一般會員


發表:18
回覆:9
積分:5
註冊:2005-01-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-02 09:48:11 IP:59.113.xxx.xxx 未訂閱
各位前輩:         我有寫一個類神經網路程式是要把文字檔中的資料擷取部份並運行, 不過遇到一個難理解的問題是,不管試幾次,我讀的文字檔如果是11.2MB的話,執行到2回合, 或許也可以說是執行11秒程式就停了,而且感覺很像是當掉的感覺(在點選其他視窗再點選 回此程式的視窗時會有空白現象發生),但是因為我在程式裡有在for迴圈主體的最後放 Application->ProcessMessages(),因此本來是都可以觀察出現在狀況為何;           此外,我觀察工作管理員,程式佔有的記憶體是65MB左右,而且不停的上下移動(60~70),CPU使用率一直佔99%.        本來我也想說是自己程式的問題,但是在資料量為5.6MB時(刪去前面一半的資料), 卻能夠在65秒內執行完畢,當然資料量更少的時候也就更快執行完畢,我讀資料的方式是, 開檔讀取資料到Memo裡,
    int tdlen=MemoData->GetTextLen();//training data length
    string td=MemoData->Lines->Text.c_str();//training data
再用上面兩列指令讀取資料到td裡,執行程式時再從裡面擷取所要的資料 請各位前輩賜教了
chtai
高階會員


發表:68
回覆:238
積分:116
註冊:2004-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-02 14:22:58 IP:211.78.xxx.xxx 未訂閱
你把文字丟到 Memo 裡頭,還得花時間秀出來。 建議你用 TStringList,把文字丟到 StringList 裡頭, 然後做好所有要對文字的處理,最後再把 StringList 丟到 Memo 裡頭秀出來。 這樣應該會快一點 :) -- http://www.csie.nctu.edu.tw/~chtai/software.php 好用免費軟體的收集網頁
------
My Web: http://nelson.csie.us
My Blog: http://blog.nelson.csie.us
Saladin
一般會員


發表:18
回覆:9
積分:5
註冊:2005-01-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-02 14:46:18 IP:61.223.xxx.xxx 未訂閱
我的程式是執行到//2.訓練網路下面的 while(1){}裡面,都是在epochs為2時爆掉的 此button完整程式碼如下:
         //基本資訊獲取
    int tdlen=MemoData->GetTextLen();//training data length
    string td=MemoData->Lines->Text.c_str();//training data
    //td[tdlen]='\0';
    td.insert(td.size(),"\0");
    int a=td.size();
    int innum=StrToInt(FormControl->EditIn->Text.c_str());
    int hidnum=StrToInt(FormControl->EditHid->Text.c_str());
    int outnum=StrToInt(FormControl->EditOut->Text.c_str());
    char comma=',';
    twinRowNums test;
    test=checkTwoNodesNum(td,comma);//test trainingData
    double rmse;//RootMeanSquareError
    int digitLen=StrToInt(FormControl->EditLength->Text.c_str());
    double la=StrToFloat(FormControl->EditLR->Text.c_str());
    double rmset=StrToFloat(FormControl->EditT->Text.c_str());//rootMeanSquareErrorThreshold
    double rmsed;//rootMeanSquareErrorDifference
    double rmsedt=StrToFloat(FormControl->EditD->Text.c_str());//rootMeanSquareErrorDifferenceThreshold
    int et=StrToInt(FormControl->EditE->Text.c_str());;//epochsThreshold
    int periods=10;
    //不分類        ProgressBar1->Max=et;
    ProgressBar1->Step=1;
    Chart1->RemoveAllSeries();
    ls = new TLineSeries(Chart1);
    ls->ParentChart = Chart1;
    gList->Add(ls);        Chart2->RemoveAllSeries();
    ls2 = new TLineSeries(Chart2);
    ls2->ParentChart = Chart2;
    gList->Add(ls2);        //用於產生亂數的宣告
    randomize();//每次取亂數皆不同
    double lb=StrToFloat(FormControl->EditL->Text.c_str());//low bound
    double hb=StrToFloat(FormControl->EditU->Text.c_str());//high bound
    int precise=StrToInt(FormControl->EditP->Text.c_str());
    double p=0;//前一個        //宣告常用的index變數
    int i,j,k;
    double rTemp;//for rmse
    double prmse;//previous rmse
    float stime;//時間差
    double hits;
    double hitRatio;
    int epochs;
    //暫存用
    double sTemp;//暫存變數,用於累加(sum)
    char*cTemp=new char[digitLen];//用於轉換成浮點數(convert)
    int iIndex,oIndex;
    char c;
    int maxAnswerIndex;
    double maxAnswer;
    int maxResultIndex;
    double maxResult;
    double*rmser=new double[et];//Root Mean Square Error Records
    runtime  ;
//---------------------------------------------------------------------------
    //0.檢查程式是否出錯
    if(test.firstNum!=innum)//可能是input nodes跟輸入資料的數目不合,或是下面的狀況
    {
      ShowMessage("警告:網路設定有問題,程式結束!!");
      //delete td;
      exit(1);
    }
    if(trainState==2)
    {
      if(test.firstNum==0)
      {
        ShowMessage("警告:偶數列或奇數列的含有的數目彼此不同,程式結束!!");
        //delete td;
        exit(1);
      }
    }
    else
    {
      //配置記憶體空間給weight bias陣列,並做亂數設定(0~1)
      fpw=new double*[innum];
      for(i=0;i
我想你的意思應該是認為我遇到的問題是讀檔讀到爆< > 不過事實上我是執行程式時爆掉< > 謝謝回應
系統時間:2024-05-18 5:37:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!