0
我是caffe 的初學者。最近我一直在學習如何使用pretrained 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」獲取新數據,但輸出保持不變,仍然顯示與第一個循環相同的結果。
我跳過了任何必要的步驟嗎? 如何解決它?
謝謝。