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

Method UnsafeAddDim

tensorflow/core/framework/tensor_shape.cc:424–466  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

422
423template <class Shape>
424void TensorShapeBase<Shape>::UnsafeAddDim(int64 size, int64 new_num_elements) {
425 const int nd = ndims_byte();
426 if (tag() == REP16 && nd < 6 && size < kMaxRep16) {
427 as16()->dims_[nd] =
428 kIsPartial && size < 0 ? kUnknownRep16 : static_cast<uint16>(size);
429 } else if (tag() == REP32 && nd < 3 && size < kMaxRep32) {
430 as32()->dims_[nd] =
431 kIsPartial && size < 0 ? kUnknownRep32 : static_cast<uint32>(size);
432 } else if (tag() == REP_OUT_OF_LINE) {
433 as64()->dims_->push_back(size);
434 } else {
435 // Need to change representation
436 gtl::InlinedVector<int64, 8> vals;
437 AppendTo(*this, &vals);
438 vals.push_back(size);
439 // We know we can't be REP16. See if we have a small enough
440 // number of dimensions and each dimension's size is small enough
441 // to allow REP32.
442 bool can_be_rep32 = (vals.size() <= 3);
443 if (can_be_rep32) {
444 for (size_t i = 0; i < vals.size(); i++) {
445 if (vals[i] >= kMaxRep32) {
446 can_be_rep32 = false;
447 break;
448 }
449 }
450 }
451 if (can_be_rep32) {
452 set_tag(REP32);
453 for (size_t d = 0; d < vals.size(); d++) {
454 as32()->dims_[d] = kIsPartial && vals[d] < 0
455 ? kUnknownRep32
456 : static_cast<uint32>(vals[d]);
457 }
458 } else {
459 set_tag(REP_OUT_OF_LINE);
460 as64()->dims_ =
461 new gtl::InlinedVector<int64, 4>(vals.begin(), vals.end());
462 }
463 }
464 set_ndims_byte(nd + 1);
465 set_num_elements(new_num_elements);
466}
467
468template <class Shape>
469void TensorShapeBase<Shape>::AppendShape(const TensorShapeBase& shape) {

Callers 1

MakeShapeHelperFunction · 0.80

Calls 5

AppendToFunction · 0.85
push_backMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected