2016-11-01 3 views
0

Ich bin ein Anfänger zu caffe . Kürzlich habe ich gelernt, wie man ein vortrainiertes Caffe-Modell benutzt, um einige Vorhersagen in meinem eigenen Projekt zu machen, und jetzt versuche ich eine iterative Vorhersage zu machen, während in jeder Schleife neue Daten (Eingabe) existieren und verwendet werden etwas vorhersagen.Iterativ Vorhersage mit Caffe in einem C++ Projekt

Ich verwende Speicherdatenschicht als meine Dateneingabeschicht.

Bevor die Schleife eintritt, werde ich einige Erklärung machen

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(); 

Und in jeder Schleife „mydata“ einige neue Daten erhalten und werden für eine neue Vorhersage verwendet werden.

Hier ist, was ich in jeder Schleife tun

("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; 
     } 

Für die erste Schleife ist das Ergebnis korrekt ist. Aber für die folgende Schleife, obwohl "Mydata" die neuen Daten erhalten, bleibt die Ausgabe unverändert, es zeigt immer noch das gleiche Ergebnis wie die erste Schleife.

Habe ich einen notwendigen Schritt übersprungen? Wie es zu beheben?

Danke.

Antwort

0

Gelöst von

datum.clear_data(); 

zu

datum.clear_float_data(); 

ersetzen Ich denke, es liegt daran, dass Schwimmer Daten so einen anderen Speicherplatz nehmen, wenn ich die alten Schwimmer Daten aufklären wollen ich löschen müssen der Speicherplatz für Float-Daten.

Verwandte Themen