| 611 | } |
| 612 | |
| 613 | Status MakeShapeFromFormat(TensorFormat format, DimensionOrConstant N, |
| 614 | const std::vector<DimensionOrConstant>& spatial, |
| 615 | DimensionOrConstant C, ShapeHandle* out, |
| 616 | shape_inference::InferenceContext* context) { |
| 617 | const int num_dims = GetTensorDimsFromSpatialDims(spatial.size(), format); |
| 618 | std::vector<DimensionHandle> dims_actual(num_dims); |
| 619 | dims_actual[GetTensorBatchDimIndex(num_dims, format)] = context->MakeDim(N); |
| 620 | int outer_c_index = GetTensorFeatureDimIndex(num_dims, format); |
| 621 | dims_actual[outer_c_index] = context->MakeDim(C); |
| 622 | if (format == FORMAT_NCHW_VECT_C) { |
| 623 | dims_actual[GetTensorInnerFeatureDimIndex(num_dims, format)] = |
| 624 | context->MakeDim(4); |
| 625 | } else if (format == FORMAT_NHWC_VECT_W) { |
| 626 | dims_actual[GetTensorInnerWidthDimIndex(num_dims, format)] = |
| 627 | context->MakeDim(4); |
| 628 | } |
| 629 | for (int spatial_dim = 0; spatial_dim < spatial.size(); spatial_dim++) { |
| 630 | dims_actual[GetTensorSpatialDimIndex(num_dims, format, spatial_dim)] = |
| 631 | context->MakeDim(spatial[spatial_dim]); |
| 632 | } |
| 633 | *out = context->MakeShape(dims_actual); |
| 634 | return Status::OK(); |
| 635 | } |
| 636 | |
| 637 | Status DimensionsFromShape(ShapeHandle shape, TensorFormat format, |
| 638 | DimensionHandle* batch_dim, |
no test coverage detected