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

Function VerifyNumericTensorBuffer

tensorflow/lite/tools/verifier.cc:114–178  ·  view source on GitHub ↗

Verifies numeric tensor has legit buffer.

Source from the content-addressed store, hash-verified

112
113// Verifies numeric tensor has legit buffer.
114bool VerifyNumericTensorBuffer(const Tensor& tensor, const Buffer& buffer,
115 ErrorReporter* error_reporter) {
116 uint64_t bytes_required = 1;
117 if (!tensor.shape()) {
118 // Empty tensor. Avoid further checks.
119 return true;
120 }
121 for (int dim : *tensor.shape()) {
122 bytes_required *= dim;
123 if (bytes_required > UINT_MAX) {
124 ReportError(error_reporter, "Tensor %s dimension overflow",
125 tensor.name()->c_str());
126 return false;
127 }
128 }
129 switch (tensor.type()) {
130 case TensorType_FLOAT32:
131 bytes_required *= sizeof(float);
132 break;
133 case TensorType_FLOAT16:
134 bytes_required *= sizeof(uint16_t);
135 break;
136 case TensorType_INT32:
137 bytes_required *= sizeof(int32_t);
138 break;
139 case TensorType_UINT8:
140 bytes_required *= sizeof(uint8_t);
141 break;
142 case TensorType_INT8:
143 bytes_required *= sizeof(int8_t);
144 break;
145 case TensorType_INT64:
146 bytes_required *= sizeof(int64_t);
147 break;
148 case TensorType_BOOL:
149 bytes_required *= sizeof(bool);
150 break;
151 case TensorType_INT16:
152 bytes_required *= sizeof(uint16_t);
153 break;
154 case TensorType_COMPLEX64:
155 bytes_required *= sizeof(std::complex<float>);
156 break;
157 default:
158 ReportError(error_reporter, "Tensor %s invalid type: %d",
159 tensor.name()->c_str(), tensor.type());
160 return false;
161 }
162 if (bytes_required > UINT_MAX) {
163 ReportError(error_reporter, "Tensor %s dimension overflow",
164 tensor.name()->c_str());
165 return false;
166 }
167
168 if (bytes_required != buffer.data()->size()) {
169 ReportError(
170 error_reporter,
171 "Tensor %s requires %d bytes, but is allocated with %d bytes buffer",

Callers 1

VerifyTensorsFunction · 0.85

Calls 7

c_strMethod · 0.80
ReportErrorFunction · 0.70
nameMethod · 0.65
typeMethod · 0.65
shapeMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected