laden Ich habe Caffe auf Python bisher verwendet und jetzt versuche ich C++ zu verwenden, um mich vertraut zu machen.Wie Caffe Modell in C++ für die Vorhersage
Was ich getan habe, ist ich habe versucht, die Caffe FC Schichten durch die Berechnung von Funktionen und Laden durch HDF5-Schicht zu erkunden. Ich habe das Modell trainiert und es funktioniert sehr gut mit Python mit dem folgenden Code:
caffe.set_device(0)
caffe.set_mode_gpu()
net = caffe.Net(proto_file, caffe_model, caffe.TEST)
feats, labels = get_features('test/test.txt') #AlexNet features
for feature, label in zip(feats, labels):
net.blobs['data'].data[...] = feature
output = net.forward()
output_prob = output['loss'][0]
print output_prob.argmax(), ", ", label
diesen Python-Code verwenden kann ich überprüfen, und es funktioniert sehr gut.
Ich versuche, den Code in C++ zu schreiben, um die gleiche Vorhersage zu machen. Diese Linie
net.blobs['data'].data[...] = feature
ist etwas schwierig, und ich kann das gleiche in c nicht tun ++: Wie kann ich Funktionen in der Datenschicht in c laden ++:
mein C++ Code so weit ist:
caffe::Caffe::SetDevice(0);
caffe::Caffe::set_mode(caffe::Caffe::GPU);
boost::shared_ptr<caffe::Net<float> > net_;
net_.reset(new caffe::Net<float>(model_file, caffe::TEST));
net_->CopyTrainedLayersFrom(trained_file);
std::cout << "LOADED CAFFE MODEL\n";
LOG(INFO) << "Blob size: "<< net_->input_blobs().size();
This caffe example ist nützlich, aber es lädt Bild und trennt dann die Kanäle. In meinem Fall habe ich 4096-D Merkmalsvektor von AlexNet, den ich direkt wie im Python-Code laden möchte.