string Net<Dtype>::Forward(const string& input_blob_protos, Dtype* loss) {
	
		BlobProtoVector blob_proto_vec;

		// 解析序列化字符串,先解析成BlobProto,然后解析获取bottom Blob数据
		if (net_input_blobs_.size()) {
			blob_proto_vec.ParseFromString(input_blob_protos);
			CHECK_EQ(blob_proto_vec.blobs_size(), net_input_blobs_.size())
				<< "Incorrect input size.";
			for (int i = 0; i < blob_proto_vec.blobs_size(); ++i) {
				net_input_blobs_[i]->FromProto(blob_proto_vec.blobs(i));
			}
		}

		// 计算前向输出
		ForwardPrefilled(loss);

		// 将top blob数据先转化为BlobProto数据,
		blob_proto_vec.Clear();
		for (int i = 0; i < net_output_blobs_.size(); ++i) {
			net_output_blobs_[i]->ToProto(blob_proto_vec.add_blobs());
		}

		// 然后将BlobProto数据序列化为字符串
		string output;
		blob_proto_vec.SerializeToString(&output);
		
		return output;
	}
	const vector<Blob<Dtype>*>& Net<Dtype>::Forward(
		const vector<Blob<Dtype>*> & bottom, Dtype* loss) {
			// Copy bottom to internal bottom
			for (int i = 0; i < bottom.size(); ++i) {
				net_input_blobs_[i]->CopyFrom(*bottom[i]);
			}
			return ForwardPrefilled(loss);
	}
示例#3
0
const vector<Blob<Dtype>*>& Net<Dtype>::Forward(
    const vector<Blob<Dtype>*> & bottom) {
  // Copy bottom to internal bottom
  // LOG(INFO) <<"bottom.size() = "<<bottom.size();
  for (int i = 0; i < bottom.size(); ++i) {
    net_input_blobs_[i]->CopyFrom(*bottom[i]);
  }
  return ForwardPrefilled();
}
示例#4
0
文件: net.cpp 项目: AmirooR/caffe
string Net<Dtype>::Forward(const string& input_blob_protos) {
  BlobProtoVector blob_proto_vec;
  if (net_input_blobs_.size()) {
    blob_proto_vec.ParseFromString(input_blob_protos);
    CHECK_EQ(blob_proto_vec.blobs_size(), net_input_blobs_.size())
        << "Incorrect input size.";
    for (int i = 0; i < blob_proto_vec.blobs_size(); ++i) {
      net_input_blobs_[i]->FromProto(blob_proto_vec.blobs(i));
    }
  }
  ForwardPrefilled();
  blob_proto_vec.Clear();
  for (int i = 0; i < net_output_blobs_.size(); ++i) {
    net_output_blobs_[i]->ToProto(blob_proto_vec.add_blobs());
  }
  string output;
  blob_proto_vec.SerializeToString(&output);
  return output;
}