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();
を交換することによって解決