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

Method PadArray2D

tensorflow/compiler/xla/reference_util.h:502–533  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

500 // Returns the result of a 2D pad on an input matrix.
501 template <typename NativeT>
502 static std::unique_ptr<Array2D<NativeT>> PadArray2D(
503 const Array2D<NativeT>& operand, const PaddingConfig& padding,
504 const NativeT pad) {
505 int64 in0 = operand.n1();
506 int64 high_padding0 = padding.dimensions(0).edge_padding_high();
507 int64 low_padding0 = padding.dimensions(0).edge_padding_low();
508 int64 interior_padding0 = padding.dimensions(0).interior_padding();
509 int64 out0 =
510 in0 + low_padding0 + high_padding0 + (in0 - 1) * interior_padding0;
511
512 int64 in1 = operand.n2();
513 int64 high_padding1 = padding.dimensions(1).edge_padding_high();
514 int64 low_padding1 = padding.dimensions(1).edge_padding_low();
515 int64 interior_padding1 = padding.dimensions(1).interior_padding();
516 int64 out1 =
517 in1 + low_padding1 + high_padding1 + (in1 - 1) * interior_padding1;
518
519 auto result = absl::make_unique<Array2D<NativeT>>(out0, out1);
520 result->Fill(pad);
521 int64 o0 = low_padding0;
522 for (int64 i0 = 0; i0 < in0; ++i0) {
523 int64 o1 = low_padding1;
524 for (int64 i1 = 0; i1 < in1; ++i1) {
525 if (o0 >= 0 && o1 >= 0 && o0 < out0 && o1 < out1) {
526 (*result)(o0, o1) = operand(i0, i1);
527 }
528 o1 += interior_padding1 + 1;
529 }
530 o0 += interior_padding0 + 1;
531 }
532 return result;
533 }
534
535 // Returns the result of a 3D pad on an input matrix.
536 template <typename NativeT>

Callers

nothing calls this directly

Calls 4

n1Method · 0.45
dimensionsMethod · 0.45
n2Method · 0.45
FillMethod · 0.45

Tested by

no test coverage detected