2016-11-01 3 views
0

私は初心者から です。最近、私は自分のプロジェクトで、ある程度の予測をするために事前に計算されたCaffeモデルを使用する方法を学んでいます。今度は、それぞれのループに新しいデータ(入力)がある間に反復的な予測をしようとしています。何かを予測する。C++プロジェクトでcaffeを使用した反復予測

私はデータ入力層としてメモリデータ層を使用します。

ループに入る前に、私はいくつかの宣言

caffe::Datum datum; 
    datum.set_channels(1); 
    datum.set_height(1); 
    datum.set_width(30); 
    vector<float> mydata; 

    vector<caffe::Datum> dvector; 
    boost::shared_ptr<MemoryDataLayer<float> > memory_data_layer; 
    memory_data_layer = boost::static_pointer_cast<MemoryDataLayer<float>>(net.layer_by_name("datas")); 
    const boost::shared_ptr<Blob<float>> & blobs = net.blob_by_name("result"); 
    const float* output = blobs->cpu_data(); 

そして、各ループ内を行います、「MYDATAは、」いくつかの新しいデータを取得し、新たな予測のために使用されます。ここで

は、私が最初のループのために、各ループ

("mydata" updated) 

    datum.clear_data(); 

    for(int i=0;i<30;i++) 
    datum.add_float_data(mydata[i]); 

    dvector.clear(); 
    dvector.push_back(datum); 

    memory_data_layer->AddDatumVector(dvector); 

    float loss = 0.0; 
    net.Forward(&loss); 
    for (int i = 0; i < 10; i =++) 
     {    
       cout<< output[i] <<endl; 
     } 

に何をすべきかです、結果は正しいです。 しかし、次のループでは、 "mydata"は新しいデータを取得しますが、出力は変更されず、最初のループと同じ結果を示します。

必要な手順を省略しましたか? 修正方法?

ありがとうございました。

私はフロートデータiが古い浮動小数点データをクリアしたい場合 私はクリアする必要があるので、別のメモリ空間 を取るので、それがあると思い

datum.clear_float_data(); 

datum.clear_data(); 

を交換することによって解決

答えて

0

浮動小数点データのためのスペース。

関連する問題