| 312 | }; // end of tensor class |
| 313 | |
| 314 | inline size_t Product(const Shape &shape, int start = 0, size_t len = 0) { |
| 315 | if (len == 0) len = shape.size(); |
| 316 | if (len == 0) return 0; |
| 317 | CHECK_LE(len, shape.size()); |
| 318 | size_t v = 1; |
| 319 | for (unsigned int i = start; i < len; i++) v *= shape[i]; |
| 320 | return v; |
| 321 | } |
| 322 | |
| 323 | inline void CheckDataTypeAndLang(const Tensor &in1, const Tensor &in2) { |
| 324 | CHECK_EQ(in1.data_type(), in2.data_type()); |