SparseTensor

Python Wrapper for C Classes

class onnxruntime.SparseTensor(sparse_tensor)

A data structure that project the C++ SparseTensor object The class provides API to work with the object. Depending on the format, the class will hold more than one buffer depending on the format

Internal constructor

__init__(sparse_tensor)

Internal constructor

_get_c_tensor()
as_blocksparse_view()

The method will return coo representation of the sparse tensor which will enable querying BlockSparse indices. If the instance did not contain BlockSparse format, it would throw. You can query coo indices as:

block_sparse_indices = sparse_tensor.as_blocksparse_view().indices()

which will return a numpy array that is backed by the native memory

as_coo_view()

The method will return coo representation of the sparse tensor which will enable querying COO indices. If the instance did not contain COO format, it would throw. You can query coo indices as:

coo_indices = sparse_tensor.as_coo_view().indices()

which will return a numpy array that is backed by the native memory.

as_csrc_view()

The method will return CSR(C) representation of the sparse tensor which will enable querying CRS(C) indices. If the instance dit not contain CSR(C) format, it would throw. You can query indices as:

inner_ndices = sparse_tensor.as_csrc_view().inner()
outer_ndices = sparse_tensor.as_csrc_view().outer()

returning numpy arrays backed by the native memory.

data_type()

Returns a string data type of the data in the OrtValue

dense_shape()

Returns a numpy array(int64) containing a dense shape of a sparse tensor

device_name()

Returns the name of the device where the SparseTensor data buffers reside e.g. cpu, cuda

format()

Returns a OrtSparseFormat enumeration

static sparse_coo_from_numpy(dense_shape, values, coo_indices, ort_device)

Factory method to construct a SparseTensor in COO format from given arguments

Parameters
  • dense_shape – 1-D numpy array(int64) or a python list that contains a dense_shape of the sparse tensor must be on cpu memory

  • values – a homogeneous, contiguous 1-D numpy array that contains non-zero elements of the tensor of a type.

  • coo_indices – contiguous numpy array(int64) that contains COO indices for the tensor. coo_indices may have a 1-D shape when it contains a linear index of non-zero values and its length must be equal to that of the values. It can also be of 2-D shape, in which has it contains pairs of coordinates for each of the nnz values and its length must be exactly twice of the values length.

  • ort_device

    • describes the backing memory owned by the supplied nummpy arrays. Only CPU memory is

    suppored for non-numeric data types.

For primitive types, the method will map values and coo_indices arrays into native memory and will use them as backing storage. It will increment the reference count for numpy arrays and it will decrement it on GC. The buffers may reside in any storage either CPU or GPU. For strings and objects, it will create a copy of the arrays in CPU memory as ORT does not support those on other devices and their memory can not be mapped.

static sparse_csr_from_numpy(dense_shape, values, inner_indices, outer_indices, ort_device)

Factory method to construct a SparseTensor in CSR format from given arguments

Parameters
  • dense_shape – 1-D numpy array(int64) or a python list that contains a dense_shape of the sparse tensor (rows, cols) must be on cpu memory

  • values – a contiguous, homogeneous 1-D numpy array that contains non-zero elements of the tensor of a type.

  • inner_indices – contiguous 1-D numpy array(int64) that contains CSR inner indices for the tensor. Its length must be equal to that of the values.

  • outer_indices – contiguous 1-D numpy array(int64) that contains CSR outer indices for the tensor. Its length must be equal to the number of rows + 1.

  • ort_device

    • describes the backing memory owned by the supplied nummpy arrays. Only CPU memory is

    suppored for non-numeric data types.

For primitive types, the method will map values and indices arrays into native memory and will use them as backing storage. It will increment the reference count and it will decrement then count when it is GCed. The buffers may reside in any storage either CPU or GPU. For strings and objects, it will create a copy of the arrays in CPU memory as ORT does not support those on other devices and their memory can not be mapped.

to_cuda(ort_device)

Returns a copy of this instance on the specified cuda device

Parameters

ort_device – with name ‘cuda’ and valid gpu device id

The method will throw if:

  • this instance contains strings

  • this instance is already on GPU. Cross GPU copy is not supported

  • CUDA is not present in this build

  • if the specified device is not valid

values()

The method returns a numpy array that is backed by the native memory if the data type is numeric. Otherwise, the returned numpy array that contains copies of the strings.

C classes

SparseTensor

class onnxruntime.capi._pybind_state.SparseTensor
__init__(*args, **kwargs)
static blocksparse_from_numpy(arg0: List[int], arg1: numpy.ndarray, arg2: numpy.ndarray[numpy.int32], arg3: onnxruntime.capi.onnxruntime_pybind11_state.OrtDevice) onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor
data_type(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor) str
dense_shape(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor) list
device_name(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor) str
property format
get_blocksparse_data(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor) onnxruntime.capi.onnxruntime_pybind11_state.SparseBlockSparseView
get_coo_data(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor) onnxruntime.capi.onnxruntime_pybind11_state.SparseCooView
get_csrc_data(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor) onnxruntime.capi.onnxruntime_pybind11_state.SparseCsrView
static sparse_coo_from_numpy(arg0: List[int], arg1: numpy.ndarray, arg2: numpy.ndarray[numpy.int64], arg3: onnxruntime.capi.onnxruntime_pybind11_state.OrtDevice) onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor
static sparse_csr_from_numpy(arg0: List[int], arg1: numpy.ndarray, arg2: numpy.ndarray[numpy.int64], arg3: numpy.ndarray[numpy.int64], arg4: onnxruntime.capi.onnxruntime_pybind11_state.OrtDevice) onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor
to_cuda(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor, arg0: onnxruntime.capi.onnxruntime_pybind11_state.OrtDevice) None
values(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseTensor) numpy.ndarray

OrtSparseFormat

class onnxruntime.capi._pybind_state.OrtSparseFormat(self: onnxruntime.capi.onnxruntime_pybind11_state.OrtSparseFormat, value: int) None

Members:

ORT_SPARSE_UNDEFINED

ORT_SPARSE_COO

ORT_SPARSE_CSRC

ORT_SPARSE_BLOCK_SPARSE

ORT_SPARSE_BLOCK_SPARSE = <OrtSparseFormat.ORT_SPARSE_BLOCK_SPARSE: 4>
ORT_SPARSE_COO = <OrtSparseFormat.ORT_SPARSE_COO: 1>
ORT_SPARSE_CSRC = <OrtSparseFormat.ORT_SPARSE_CSRC: 2>
ORT_SPARSE_UNDEFINED = <OrtSparseFormat.ORT_SPARSE_UNDEFINED: 0>
__eq__(self: object, other: object) bool
__getstate__(self: object) int
__hash__(self: object) int
__index__(self: onnxruntime.capi.onnxruntime_pybind11_state.OrtSparseFormat) int
__init__(self: onnxruntime.capi.onnxruntime_pybind11_state.OrtSparseFormat, value: int) None
__int__(self: onnxruntime.capi.onnxruntime_pybind11_state.OrtSparseFormat) int
__members__ = {'ORT_SPARSE_BLOCK_SPARSE': <OrtSparseFormat.ORT_SPARSE_BLOCK_SPARSE: 4>, 'ORT_SPARSE_COO': <OrtSparseFormat.ORT_SPARSE_COO: 1>, 'ORT_SPARSE_CSRC': <OrtSparseFormat.ORT_SPARSE_CSRC: 2>, 'ORT_SPARSE_UNDEFINED': <OrtSparseFormat.ORT_SPARSE_UNDEFINED: 0>}
__ne__(self: object, other: object) bool
__repr__(self: object) str
__setstate__(self: onnxruntime.capi.onnxruntime_pybind11_state.OrtSparseFormat, state: int) None
__str__()

name(self: handle) -> str

property name
property value

SparseCooView

class onnxruntime.capi._pybind_state.SparseCooView
__init__(*args, **kwargs)
indices(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseCooView) numpy.ndarray

SparseCsrView

class onnxruntime.capi._pybind_state.SparseCsrView
__init__(*args, **kwargs)
inner(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseCsrView) numpy.ndarray
outer(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseCsrView) numpy.ndarray

SparseBlockSparseView

class onnxruntime.capi._pybind_state.SparseBlockSparseView
__init__(*args, **kwargs)
indices(self: onnxruntime.capi.onnxruntime_pybind11_state.SparseBlockSparseView) numpy.ndarray