| 562 | |
| 563 | template <class Shape> |
| 564 | void TensorShapeBase<Shape>::RemoveDimRange(int begin, int end) { |
| 565 | if (unknown_rank()) return; |
| 566 | begin = begin < 0 ? dims() + begin + 1 : begin; |
| 567 | end = end < 0 ? dims() + end + 1 : end; |
| 568 | CHECK_GE(begin, 0); |
| 569 | CHECK_LE(begin, dims()); |
| 570 | CHECK_GE(end, 0); |
| 571 | CHECK_LE(end, dims()); |
| 572 | if (begin >= end) return; |
| 573 | gtl::InlinedVector<int64, 8> vals; |
| 574 | AppendTo(*this, &vals); |
| 575 | vals.erase(vals.begin() + begin, vals.begin() + end); |
| 576 | ClearAllButDataType(); |
| 577 | for (auto dval : vals) { |
| 578 | AddDim(dval); |
| 579 | } |
| 580 | TF_CHECK_OK(RecomputeNumElements()); |
| 581 | } |
| 582 | |
| 583 | bool TensorShape::IsSameSize(const TensorShape& b) const { |
| 584 | if (b.dims() != dims()) return false; |