Skip to content

Instantly share code, notes, and snippets.

@yjxiong
Last active August 29, 2015 14:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yjxiong/2ef628a0c32f266ccd0e to your computer and use it in GitHub Desktop.
Save yjxiong/2ef628a0c32f266ccd0e to your computer and use it in GitHub Desktop.
Run with Vector Data
int ReadVectorToDatum(float* data_ptr, int data_len, Datum* datum){
//reshape and clear data
datum->set_channels(data_len);
datum->set_height(1);
datum->set_width(1);
datum->set_label(0);
datum->clear_data();
datum->clear_float_data();
//insert new data
for (int i = 0; i < data_len; ++i){
datum->add_float_data(data_ptr[i]);
}
return 0;
}
int RunVectorDataInference(char* layer_name, float* data_ptr, int data_len){
CHECK(caffe_net != NULL);
Datum datum;
CHECK(ReadVectorToDatum(data_ptr, data_len &datum));
const shared_ptr<MemoryDataLayer<float>> memory_data_layer =
static_pointer_cast<MemoryDataLayer<float>>(
caffe_net->layer_by_name(layer_name));
memory_data_layer->AddDatumVector(vector<Datum>({datum}));
vector<Blob<float>* > dummy_bottom_vec;
float loss;
clock_t t_start = clock();
const vector<Blob<float>*>& result = caffe_net->Forward(dummy_bottom_vec, &loss);
clock_t t_end = clock();
LOG(DEBUG) << "Prediction time: " << 1000.0 * (t_end - t_start) / CLOCKS_PER_SEC << " ms.";
const float* output = result[1]->cpu_data();
for (int i = 0; i < result[1]->count(); i++) {
LOG(INFO) << " Output: "<< i << " value:"
<< output[i];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment