Class: ArrowFormat::Org::Apache::Arrow::Flatbuf::SparseTensorIndexCOO
- Inherits:
-
FlatBuffers::Table
- Object
- FlatBuffers::Table
- ArrowFormat::Org::Apache::Arrow::Flatbuf::SparseTensorIndexCOO
- Defined in:
- lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_coo.rb
Overview
EXPERIMENTAL: Data structures for sparse tensors Coordinate (COO) format of sparse tensor index.
COO’s index list is represented as an NxM matrix, where N is the number of non-zero values, and M is the number of dimensions of a sparse tensor.
indicesBuffer stores the location and size of the data of these indices matrix. The value type and the stride of the indices matrix is specified in indicesType and indicesStrides fields.
For example, let X be a 2x3x4x5 tensor, and it has the following 6 non-zero values: “‘text
X[0, 1, 2, 0] := 1
X[1, 1, 2, 3] := 2
X[0, 2, 1, 0] := 3
X[0, 1, 3, 0] := 4
X[0, 1, 2, 1] := 5
X[1, 2, 0, 4] := 6
“‘ In COO format, the index matrix of X is the following 4x6 matrix: “`text
[[0, 0, 0, 0, 1, 1],
[1, 1, 1, 2, 1, 2],
[2, 2, 3, 1, 2, 0],
[0, 1, 0, 0, 3, 4]]
“‘ When isCanonical is true, the indices are sorted in lexicographical order (row-major order), and it does not have duplicated entries. Otherwise, the indices may not be sorted, or may have duplicated entries.
Constant Summary collapse
- FIELDS =
{ indices_type: ::FlatBuffers::Field.new(:indices_type, 0, 4, "::ArrowFormat::Org::Apache::Arrow::Flatbuf::Int", 0), indices_strides: ::FlatBuffers::Field.new(:indices_strides, 1, 6, [:long], 0), indices_buffer: ::FlatBuffers::Field.new(:indices_buffer, 2, 8, "::ArrowFormat::Org::Apache::Arrow::Flatbuf::Buffer", 0), canonical?: ::FlatBuffers::Field.new(:canonical?, 3, 10, :bool, 0), }
- Data =
define_data_class
Instance Method Summary collapse
-
#canonical? ⇒ Boolean
This flag is true if and only if the indices matrix is sorted in row-major order, and does not have duplicated entries.
-
#indices_buffer ⇒ Object
The location and size of the indices matrix’s data.
-
#indices_strides ⇒ Object
Non-negative byte offsets to advance one value cell along each dimension If omitted, default to row-major order (C-like).
-
#indices_type ⇒ Object
The type of values in indicesBuffer.
Instance Method Details
#canonical? ⇒ Boolean
This flag is true if and only if the indices matrix is sorted in row-major order, and does not have duplicated entries. This sort order is the same as of Tensorflow’s SparseTensor, but it is inverse order of SciPy’s canonical coo_matrix (SciPy employs column-major order for its coo_matrix).
91 92 93 94 95 96 |
# File 'lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_coo.rb', line 91 def canonical? field_offset = @view.unpack_virtual_offset(10) return false if field_offset.zero? @view.unpack_bool(field_offset) end |
#indices_buffer ⇒ Object
The location and size of the indices matrix’s data
59 60 61 62 63 64 |
# File 'lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_coo.rb', line 59 def indices_buffer field_offset = @view.unpack_virtual_offset(8) return nil if field_offset.zero? @view.unpack_struct(::ArrowFormat::Org::Apache::Arrow::Flatbuf::Buffer, field_offset) end |
#indices_strides ⇒ Object
Non-negative byte offsets to advance one value cell along each dimension If omitted, default to row-major order (C-like).
68 69 70 71 72 73 74 75 76 |
# File 'lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_coo.rb', line 68 def indices_strides field_offset = @view.unpack_virtual_offset(6) return nil if field_offset.zero? element_size = 8 @view.unpack_vector(field_offset, element_size) do |element_offset| @view.unpack_long(element_offset) end end |
#indices_type ⇒ Object
The type of values in indicesBuffer
79 80 81 82 83 84 |
# File 'lib/arrow-format/org/apache/arrow/flatbuf/sparse_tensor_index_coo.rb', line 79 def indices_type field_offset = @view.unpack_virtual_offset(4) return nil if field_offset.zero? @view.unpack_table(::ArrowFormat::Org::Apache::Arrow::Flatbuf::Int, field_offset) end |