MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / Proto2Tensor

Function Proto2Tensor

serving/processor/serving/util.cc:478–790  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

476}
477
478TensorWithStatus Proto2Tensor(const std::string& key,
479 const eas::ArrayProto& input) {
480 TensorShape tensor_shape;
481 int64 total_size = 1;
482 for (int i = 0; i < input.array_shape().dim_size(); ++i) {
483 tensor_shape.AddDim(input.array_shape().dim(i));
484 total_size *= input.array_shape().dim(i);
485 }
486
487 TensorWithStatus ret;
488 ret.status = Status::OK();
489 switch (input.dtype()) {
490 case tensorflow::eas::DT_FLOAT: {
491 if (total_size != input.float_val_size()) {
492 ret.status = errors::InvalidArgument(
493 "Invalid input: ", key, " . shape size VS input size = ",
494 std::to_string(total_size), " VS ", std::to_string(input.float_val_size()));
495 break;
496 }
497 Tensor tensor(DT_FLOAT, tensor_shape);
498 auto flat = tensor.flat<float>();
499 memcpy(flat.data(), input.float_val().data(),
500 input.float_val_size() * sizeof(float));
501
502 ret.tensor = std::move(tensor);
503 break;
504 }
505 case tensorflow::eas::DT_DOUBLE: {
506 if (total_size != input.double_val_size()) {
507 ret.status = errors::InvalidArgument(
508 "Invalid input: ", key, " . shape size VS input size = ",
509 std::to_string(total_size), " VS ", std::to_string(input.double_val_size()));
510 break;
511 }
512 Tensor tensor(DT_DOUBLE, tensor_shape);
513 auto flat = tensor.flat<double>();
514 memcpy(flat.data(), input.double_val().data(),
515 input.double_val_size() * sizeof(double));
516 ret.tensor = std::move(tensor);
517 break;
518 }
519 case tensorflow::eas::DT_INT32: {
520 if (total_size != input.int_val_size()) {
521 ret.status = errors::InvalidArgument(
522 "Invalid input: ", key, " . shape size VS input size = ",
523 std::to_string(total_size), " VS ", std::to_string(input.int_val_size()));
524 break;
525 }
526 Tensor tensor(DT_INT32, tensor_shape);
527 auto flat = tensor.flat<int>();
528 memcpy(flat.data(), input.int_val().data(),
529 input.int_val_size() * sizeof(int));
530 ret.tensor = std::move(tensor);
531 break;
532 }
533 case tensorflow::eas::DT_UINT8: {
534 if (total_size != input.int_val_size()) {
535 ret.status = errors::InvalidArgument(

Callers 2

ParseRequestMethod · 0.70

Calls 9

InvalidArgumentFunction · 0.85
to_stringFunction · 0.85
FloatToBFloat16Function · 0.50
halfClass · 0.50
dim_sizeMethod · 0.45
AddDimMethod · 0.45
dimMethod · 0.45
dtypeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected