2016-07-20 6 views
0

Ich suche den Caffe Quellcode ein wenig, und die ReadImageToDatum Funktion in caffe/src/caffe/util/io.cpp unterstützt nur int Typ Etiketten.Wie kann ich numerische Label für die Regression in Caffe verwenden?

Ich habe auch festgestellt, dass es eine array_to_datum Funktion in caffe/python/caffe/io.py, die nicht die Beschränkung auf die Art der Beschriftung zu haben scheint, aber ich bin mir nicht genau sicher, wie ich es verwenden soll.

Wie kann ich numerische (nicht ganze Zahlen) Etiketten für die Regression verwenden?

Antwort

1

Ich nehme an, Datum Typ wurde mit Bildklassifizierung im Hinterkopf entwickelt.
Für die Regression empfehle ich die Verwendung der Eingangsschicht "HDF5Data".
Siehe zum Beispiel this answer.

Die Verwendung von hdf5-Binärdateien ermöglicht mehr Flexibilität bei der Anzahl, Form und Art der Eingaben, die Sie in Ihr Netz eingeben.

+0

Dank für die Beantwortung viel danken, würden Sie keine Gedanken über [diese Frage] (http: // Stackoverflow. com/q/38432568/3041068)? – dontloo

1

Zusätzlich zu Shai's answer, Caffe Datum Klasse unterstützt nur int Typ Etiketten. In caffe/src/caffe/proto/caffe.proto ist es

message Datum { 
    optional int32 channels = 1; 
    optional int32 height = 2; 
    optional int32 width = 3; 
    // the actual image data, in bytes 
    optional bytes data = 4; 
    optional int32 label = 5; 
    // Optionally, the datum could also hold float data. 
    repeated float float_data = 6; 
    // If true data contains an encoded image that need to be decoded 
    optional bool encoded = 7 [default = false]; 
} 

So in der generierten caffe.pb.h Datei ist definiert es wie

private: 
    ... 
    ::google::protobuf::int32 channels_; 
    ::google::protobuf::int32 height_; 
    ::std::string* data_; 
    ::google::protobuf::int32 width_; 
    ::google::protobuf::int32 label_; 
    ::google::protobuf::RepeatedField<float> float_data_; 
    bool encoded_; 
    ...