3
我一直在使用Caffe到目前爲止,現在我正嘗試使用C++來熟悉我自己。如何在C++中加載caffe模型進行預測
我所做的是我試圖通過計算功能和加載HDF5層來探索caffe FC層。我已經訓練了模型,並使用下面的代碼可以非常好地蟒蛇:
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
使用這個Python代碼,我可以檢查和它工作得很好。
我想在C++中編寫代碼來做相同的預測。這條線
net.blobs['data'].data[...] = feature
是有點棘手,我不能做同樣的在C++中:我怎樣才能加載功能集成到數據層在C++:
我的C++代碼到目前爲止是:
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是有用的,但它加載圖像,然後分離渠道。在我的情況下,我有AlexNet的4096-D特徵向量,我想直接在Python代碼中加載。