| 1501 | } |
| 1502 | |
| 1503 | tensorflow::Status ConvertPlaceholderOperator( |
| 1504 | const NodeDef& node, const TensorFlowImportFlags& tf_import_flags, |
| 1505 | const ModelFlags& model_flags, Model* model) { |
| 1506 | CHECK(node.op() == "Placeholder" || node.op() == "LegacyFedInput"); |
| 1507 | if (node.op() == "Placeholder") { |
| 1508 | TF_QCHECK_OK(CheckInputsCount(node, tf_import_flags, 0)); |
| 1509 | } |
| 1510 | |
| 1511 | bool inside_input_arrays = false; |
| 1512 | for (const auto& input_array : model_flags.input_arrays()) { |
| 1513 | if (node.name() == input_array.name()) { |
| 1514 | inside_input_arrays = true; |
| 1515 | break; |
| 1516 | } |
| 1517 | } |
| 1518 | |
| 1519 | if (!inside_input_arrays) { |
| 1520 | model->AddInvalidInputArray(node.name()); |
| 1521 | } |
| 1522 | |
| 1523 | auto& array = model->GetOrCreateArray(node.name()); |
| 1524 | if (node.attr().count("dtype")) { |
| 1525 | array.data_type = ConvertDataType(GetDataTypeAttr(node, "dtype")); |
| 1526 | } |
| 1527 | if (node.attr().count("shape")) { |
| 1528 | const auto& shape = GetShapeAttr(node, "shape"); |
| 1529 | auto num_dims = shape.dim_size(); |
| 1530 | // TODO(b/62716978): This logic needs to be revisited. During dims |
| 1531 | // refactoring it is an interim fix. |
| 1532 | if (num_dims > 0 && !HasWildcardDimension(shape)) { |
| 1533 | auto& dst_array_dims = *array.mutable_shape()->mutable_dims(); |
| 1534 | dst_array_dims.resize(num_dims); |
| 1535 | for (std::size_t i = 0; i < num_dims; i++) { |
| 1536 | dst_array_dims[i] = shape.dim(i).size(); |
| 1537 | } |
| 1538 | } |
| 1539 | } |
| 1540 | return tensorflow::Status::OK(); |
| 1541 | } |
| 1542 | |
| 1543 | tensorflow::Status ConvertNoOpOperator( |
| 1544 | const NodeDef& node, const TensorFlowImportFlags& tf_import_flags, |
nothing calls this directly
no test coverage detected