| 669 | } |
| 670 | |
| 671 | PyObject* TensorWrapper::shape() { |
| 672 | auto shape = m_tensor->shape(); |
| 673 | |
| 674 | if (!shape) { |
| 675 | Py_RETURN_NONE; |
| 676 | } |
| 677 | py::tuple ret(shape->ndim); |
| 678 | for (size_t i = 0; i < shape->ndim; ++i) { |
| 679 | ret[i] = shape->at(i); |
| 680 | } |
| 681 | return ret.release().ptr(); |
| 682 | } |
| 683 | |
| 684 | PyObject* TensorWrapper::dtype() { |
| 685 | return py::cast(m_tensor->dtype()).release().ptr(); |