Open3D (C++ API)  0.11.0
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
open3d::core::Tensor Class Reference

#include <Tensor.h>

Public Member Functions

 Tensor ()
 
 Tensor (const SizeVector &shape, Dtype dtype, const Device &device=Device("CPU:0"))
 Constructor for creating a contiguous Tensor. More...
 
template<typename T >
 Tensor (const std::vector< T > &init_vals, const SizeVector &shape, Dtype dtype, const Device &device=Device("CPU:0"))
 Constructor for creating a contiguous Tensor with initial values. More...
 
template<typename T >
 Tensor (const T *init_vals, const SizeVector &shape, Dtype dtype, const Device &device=Device("CPU:0"))
 Constructor from raw host buffer. The memory will be copied. More...
 
 Tensor (const SizeVector &shape, const SizeVector &strides, void *data_ptr, Dtype dtype, const std::shared_ptr< Blob > &blob)
 
 Tensor (const Tensor &other)=default
 
 Tensor (Tensor &&other)=default
 
Tensoroperator= (const Tensor &other) &
 
Tensoroperator= (Tensor &&other) &
 
Tensoroperator= (const Tensor &other) &&
 Tensor assignment rvalue = lvalue, e.g. tensor_a[0] = tensor_b More...
 
Tensoroperator= (Tensor &&other) &&
 Tensor assignment rvalue = rvalue, e.g. tensor_a[0] = tensor_b[0] More...
 
template<typename T >
Tensoroperator= (const T &v) &&
 
template<typename Object >
TensorAssignObject (const Object &v) &&
 
template<typename Scalar >
void Fill (Scalar v)
 Fill the whole Tensor with a scalar value, the scalar will be casted to the Tensor's dtype. More...
 
template<typename Object >
void FillObject (const Object &v)
 
Tensor GetItem (const TensorKey &tk) const
 
Tensor GetItem (const std::vector< TensorKey > &tks) const
 
Tensor SetItem (const Tensor &value)
 Set all items. Equivalent to tensor[:] = value in Python. More...
 
Tensor SetItem (const TensorKey &tk, const Tensor &value)
 
Tensor SetItem (const std::vector< TensorKey > &tks, const Tensor &value)
 
void Assign (const Tensor &other)
 Assign (copy) values from another Tensor, shape, dtype, device may change. More...
 
Tensor Broadcast (const SizeVector &dst_shape) const
 Broadcast Tensor to a new broadcastable shape. More...
 
Tensor Expand (const SizeVector &dst_shape) const
 
Tensor Reshape (const SizeVector &dst_shape) const
 
Tensor View (const SizeVector &dst_shape) const
 
Tensor Copy (const Device &device) const
 
Tensor Copy () const
 Copy Tensor to the same device. More...
 
void CopyFrom (const Tensor &other)
 Copy Tensor values to current tensor for source tensor. More...
 
void ShallowCopyFrom (const Tensor &other)
 Shallow copy a tensor, returning a tensor sharing the same memory. More...
 
Tensor To (Dtype dtype, bool copy=false) const
 
std::string ToString (bool with_suffix=true, const std::string &indent="") const
 
Tensor operator[] (int64_t i) const
 Extract the i-th Tensor along the first axis, returning a new view. More...
 
Tensor IndexExtract (int64_t dim, int64_t idx) const
 
Tensor Slice (int64_t dim, int64_t start, int64_t stop, int64_t step=1) const
 
Tensor AsRvalue () const
 
Tensor IndexGet (const std::vector< Tensor > &index_tensors) const
 Advanced indexing getter. More...
 
void IndexSet (const std::vector< Tensor > &index_tensors, const Tensor &src_tensor)
 Advanced indexing getter. More...
 
Tensor Permute (const SizeVector &dims) const
 Permute (dimension shuffle) the Tensor, returns a view. More...
 
Tensor AsStrided (const SizeVector &new_shape, const SizeVector &new_strides) const
 Create a Tensor view of specified shape and strides. The underlying buffer and data_ptr offsets remain the same. More...
 
Tensor Transpose (int64_t dim0, int64_t dim1) const
 Transpose a Tensor by swapping dimension dim0 and dim1. More...
 
Tensor T () const
 Expects input to be <= 2-D Tensor by swapping dimension 0 and 1. More...
 
template<typename T >
T Item () const
 
Tensor Add (const Tensor &value) const
 Adds a tensor and returns the resulting tensor. More...
 
template<typename T >
Tensor Add (T scalar_value) const
 
Tensor operator+ (const Tensor &value) const
 
template<typename T >
Tensor operator+ (T scalar_value) const
 
Tensor Add_ (const Tensor &value)
 
template<typename T >
Tensor Add_ (T scalar_value)
 
Tensor operator+= (const Tensor &value)
 
template<typename T >
Tensor operator+= (T scalar_value)
 
Tensor Sub (const Tensor &value) const
 Substracts a tensor and returns the resulting tensor. More...
 
template<typename T >
Tensor Sub (T scalar_value) const
 
Tensor operator- (const Tensor &value) const
 
template<typename T >
Tensor operator- (T scalar_value) const
 
Tensor Sub_ (const Tensor &value)
 
template<typename T >
Tensor Sub_ (T scalar_value)
 
Tensor operator-= (const Tensor &value)
 
template<typename T >
Tensor operator-= (T scalar_value)
 
Tensor Mul (const Tensor &value) const
 Multiplies a tensor and returns the resulting tensor. More...
 
template<typename T >
Tensor Mul (T scalar_value) const
 
Tensor operator* (const Tensor &value) const
 
template<typename T >
Tensor operator* (T scalar_value) const
 
Tensor Mul_ (const Tensor &value)
 
template<typename T >
Tensor Mul_ (T scalar_value)
 
Tensor operator*= (const Tensor &value)
 
template<typename T >
Tensor operator*= (T scalar_value)
 
Tensor Div (const Tensor &value) const
 Divides a tensor and returns the resulting tensor. More...
 
template<typename T >
Tensor Div (T scalar_value) const
 
Tensor operator/ (const Tensor &value) const
 
template<typename T >
Tensor operator/ (T scalar_value) const
 
Tensor Div_ (const Tensor &value)
 
template<typename T >
Tensor Div_ (T scalar_value)
 
Tensor operator/= (const Tensor &value)
 
template<typename T >
Tensor operator/= (T scalar_value)
 
Tensor Sum (const SizeVector &dims, bool keepdim=false) const
 
Tensor Mean (const SizeVector &dims, bool keepdim=false) const
 
Tensor Prod (const SizeVector &dims, bool keepdim=false) const
 
Tensor Min (const SizeVector &dims, bool keepdim=false) const
 
Tensor Max (const SizeVector &dims, bool keepdim=false) const
 
Tensor ArgMin (const SizeVector &dims) const
 
Tensor ArgMax (const SizeVector &dims) const
 
Tensor Sqrt () const
 Element-wise square root of a tensor, returns a new tensor. More...
 
Tensor Sqrt_ ()
 Element-wise square root of a tensor, in-place. More...
 
Tensor Sin () const
 Element-wise sine of a tensor, returning a new tensor. More...
 
Tensor Sin_ ()
 Element-wise sine of a tensor, in-place. More...
 
Tensor Cos () const
 Element-wise cosine of a tensor, returning a new tensor. More...
 
Tensor Cos_ ()
 Element-wise cosine of a tensor, in-place. More...
 
Tensor Neg () const
 Element-wise negation of a tensor, returning a new tensor. More...
 
Tensor Neg_ ()
 Element-wise negation of a tensor, in-place. More...
 
Tensor Exp () const
 Element-wise exponential of a tensor, returning a new tensor. More...
 
Tensor Exp_ ()
 Element-wise base-e exponential of a tensor, in-place. More...
 
Tensor Abs () const
 Element-wise absolute value of a tensor, returning a new tensor. More...
 
Tensor Abs_ ()
 Element-wise absolute value of a tensor, in-place. More...
 
Tensor LogicalNot () const
 
Tensor LogicalNot_ ()
 
Tensor LogicalAnd (const Tensor &value) const
 
Tensor operator && (const Tensor &value) const
 
template<typename T >
Tensor LogicalAnd (T scalar_value) const
 
Tensor LogicalAnd_ (const Tensor &value)
 
template<typename T >
Tensor LogicalAnd_ (T scalar_value)
 
Tensor LogicalOr (const Tensor &value) const
 
Tensor operator|| (const Tensor &value) const
 
template<typename T >
Tensor LogicalOr (T scalar_value) const
 
Tensor LogicalOr_ (const Tensor &value)
 
template<typename T >
Tensor LogicalOr_ (T scalar_value)
 
Tensor LogicalXor (const Tensor &value) const
 
template<typename T >
Tensor LogicalXor (T scalar_value) const
 
Tensor LogicalXor_ (const Tensor &value)
 
template<typename T >
Tensor LogicalXor_ (T scalar_value)
 
Tensor Gt (const Tensor &value) const
 Element-wise greater-than of tensors, returning a new boolean tensor. More...
 
Tensor operator> (const Tensor &value) const
 
template<typename T >
Tensor Gt (T scalar_value) const
 
Tensor Gt_ (const Tensor &value)
 
template<typename T >
Tensor Gt_ (T scalar_value)
 
Tensor Lt (const Tensor &value) const
 Element-wise less-than of tensors, returning a new boolean tensor. More...
 
Tensor operator< (const Tensor &value) const
 
template<typename T >
Tensor Lt (T scalar_value) const
 
Tensor Lt_ (const Tensor &value)
 
template<typename T >
Tensor Lt_ (T scalar_value)
 
Tensor Ge (const Tensor &value) const
 
Tensor operator>= (const Tensor &value) const
 
template<typename T >
Tensor Ge (T scalar_value) const
 
Tensor Ge_ (const Tensor &value)
 
template<typename T >
Tensor Ge_ (T scalar_value)
 
Tensor Le (const Tensor &value) const
 
Tensor operator<= (const Tensor &value) const
 
template<typename T >
Tensor Le (T scalar_value) const
 
Tensor Le_ (const Tensor &value)
 
template<typename T >
Tensor Le_ (T scalar_value)
 
Tensor Eq (const Tensor &value) const
 Element-wise equals-to of tensors, returning a new boolean tensor. More...
 
Tensor operator== (const Tensor &value) const
 
template<typename T >
Tensor Eq (T scalar_value) const
 
Tensor Eq_ (const Tensor &value)
 
template<typename T >
Tensor Eq_ (T scalar_value)
 
Tensor Ne (const Tensor &value) const
 Element-wise not-equals-to of tensors, returning a new boolean tensor. More...
 
Tensor operator!= (const Tensor &value) const
 
template<typename T >
Tensor Ne (T scalar_value) const
 
Tensor Ne_ (const Tensor &value)
 
template<typename T >
Tensor Ne_ (T scalar_value)
 
std::vector< TensorNonZeroNumpy () const
 
Tensor NonZero () const
 
bool All () const
 
bool Any () const
 
bool AllClose (const Tensor &other, double rtol=1e-5, double atol=1e-8) const
 
Tensor IsClose (const Tensor &other, double rtol=1e-5, double atol=1e-8) const
 
bool IsSame (const Tensor &other) const
 
template<typename T >
std::vector< TToFlatVector () const
 Retrive all values as an std::vector, for debugging and testing. More...
 
bool IsContiguous () const
 
Tensor Contiguous () const
 
Tensor Matmul (const Tensor &rhs) const
 
Tensor Solve (const Tensor &rhs) const
 
Tensor LeastSquares (const Tensor &rhs) const
 
Tensor Inverse () const
 
std::tuple< Tensor, Tensor, TensorSVD () const
 
SizeVector GetShape () const
 
const SizeVectorGetShapeRef () const
 
int64_t GetShape (int64_t dim) const
 
SizeVector GetStrides () const
 
const SizeVectorGetStridesRef () const
 
int64_t GetStride (int64_t dim) const
 
void * GetDataPtr ()
 
const void * GetDataPtr () const
 
Dtype GetDtype () const
 
Device GetDevice () const
 
std::shared_ptr< BlobGetBlob () const
 
int64_t NumElements () const
 
int64_t NumDims () const
 
template<typename T >
void AssertTemplateDtype () const
 
DLManagedTensorToDLPack () const
 Convert the Tensor to DLManagedTensor. More...
 
void AssertShape (const SizeVector &expected_shape) const
 Assert that the Tensor has the specified shape. More...
 
template<>
 Tensor (const std::vector< bool > &init_vals, const SizeVector &shape, Dtype dtype, const Device &device)
 
template<>
std::vector< bool > ToFlatVector () const
 
template<>
bool Item () const
 

Static Public Member Functions

static Tensor Empty (const SizeVector &shape, Dtype dtype, const Device &device=Device("CPU:0"))
 Create a tensor with uninitilized values. More...
 
static Tensor EmptyLike (const Tensor &other)
 
template<typename T >
static Tensor Full (const SizeVector &shape, T fill_value, Dtype dtype, const Device &device=Device("CPU:0"))
 Create a tensor fill with specified value. More...
 
static Tensor Zeros (const SizeVector &shape, Dtype dtype, const Device &device=Device("CPU:0"))
 Create a tensor fill with zeros. More...
 
static Tensor Ones (const SizeVector &shape, Dtype dtype, const Device &device=Device("CPU:0"))
 Create a tensor fill with ones. More...
 
static Tensor Eye (int64_t n, Dtype dtype, const Device &device)
 Create a identity matrix of size n x n. More...
 
static Tensor Diag (const Tensor &input)
 Create a square matrix with specified diagonal elements in input. More...
 
static SizeVector DefaultStrides (const SizeVector &shape)
 
static std::pair< bool, SizeVectorComputeNewStrides (const SizeVector &old_shape, const SizeVector &old_strides, const SizeVector &new_shape)
 
static Tensor FromDLPack (const DLManagedTensor *dlmt)
 Convert DLManagedTensor to Tensor. More...
 

Protected Member Functions

std::string ScalarPtrToString (const void *ptr) const
 

Protected Attributes

SizeVector shape_ = {0}
 
SizeVector strides_ = {1}
 
void * data_ptr_ = nullptr
 
Dtype dtype_ = Dtype::Undefined
 Data type. More...
 
std::shared_ptr< Blobblob_ = nullptr
 Underlying memory buffer for Tensor. More...
 

Detailed Description

A Tensor is a "view" of a data Blob with shape, stride, data_ptr. Tensor can also be used to perform numerical operations.

Constructor & Destructor Documentation

◆ Tensor() [1/8]

open3d::core::Tensor::Tensor ( )
inline

◆ Tensor() [2/8]

open3d::core::Tensor::Tensor ( const SizeVector shape,
Dtype  dtype,
const Device device = Device("CPU:0") 
)
inline

Constructor for creating a contiguous Tensor.

◆ Tensor() [3/8]

template<typename T >
open3d::core::Tensor::Tensor ( const std::vector< T > &  init_vals,
const SizeVector shape,
Dtype  dtype,
const Device device = Device("CPU:0") 
)
inline

Constructor for creating a contiguous Tensor with initial values.

◆ Tensor() [4/8]

template<typename T >
open3d::core::Tensor::Tensor ( const T init_vals,
const SizeVector shape,
Dtype  dtype,
const Device device = Device("CPU:0") 
)
inline

Constructor from raw host buffer. The memory will be copied.

◆ Tensor() [5/8]

open3d::core::Tensor::Tensor ( const SizeVector shape,
const SizeVector strides,
void *  data_ptr,
Dtype  dtype,
const std::shared_ptr< Blob > &  blob 
)
inline

The fully specified constructor. Since you're responsible for creating the Blob, take care of Blob's deleter if the memory is allocated elsewhere. See Blob.h for more details.

◆ Tensor() [6/8]

open3d::core::Tensor::Tensor ( const Tensor other)
default

Copy constructor performs a "shallow" copy of the Tensor. This takes a lvalue input, e.g. Tensor dst(src).

◆ Tensor() [7/8]

open3d::core::Tensor::Tensor ( Tensor &&  other)
default

Move constructor performs a "shallow" copy of the Tensor. This takes a rvalue input, e.g. Tensor dst(src[0]).

◆ Tensor() [8/8]

template<>
open3d::core::Tensor::Tensor ( const std::vector< bool > &  init_vals,
const SizeVector shape,
Dtype  dtype,
const Device device 
)
inline

Member Function Documentation

◆ Abs()

Tensor open3d::core::Tensor::Abs ( ) const

Element-wise absolute value of a tensor, returning a new tensor.

◆ Abs_()

Tensor open3d::core::Tensor::Abs_ ( )

Element-wise absolute value of a tensor, in-place.

◆ Add() [1/2]

Tensor open3d::core::Tensor::Add ( const Tensor value) const

Adds a tensor and returns the resulting tensor.

◆ Add() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Add ( T  scalar_value) const
inline

◆ Add_() [1/2]

Tensor open3d::core::Tensor::Add_ ( const Tensor value)

Inplace version of Tensor::Add. Adds a tensor to the current tensor and returns the current tensor.

◆ Add_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Add_ ( T  scalar_value)
inline

◆ All()

bool open3d::core::Tensor::All ( ) const

Returns true if all elements in the tensor are true. Only works for boolean tensors. This function does not take reduction dimensions, and the reduction is apply to all dimensions.

◆ AllClose()

bool open3d::core::Tensor::AllClose ( const Tensor other,
double  rtol = 1e-5,
double  atol = 1e-8 
) const

Returns true if the two tensors are element-wise equal within a tolerance.

  • If the device is not the same: throws exception.
  • If the dtype is not the same: throws exception.
  • If the shape is not the same: returns false.
  • Returns true if: abs(self - other) <= (atol + rtol * abs(other)).

The equation is not symmetrial, i.e. a.AllClose(b) might not be the same as b.AllClose(a). Also see Numpy's documentation: https://numpy.org/doc/stable/reference/generated/numpy.allclose.html.

TODO: support nan

Parameters
otherThe other tensor to compare with.
rtolRelative tolerance.
atolAbsolute tolerance.

◆ Any()

bool open3d::core::Tensor::Any ( ) const

Returns true if any elements in the tensor are true. Only works for boolean tensors. This function does not take reduction dimensions, and the reduction is apply to all dimensions.

◆ ArgMax()

Tensor open3d::core::Tensor::ArgMax ( const SizeVector dims) const

Returns maximum index of the tensor along the given dim. The returned tensor has dtype int64_t, and has the same shape as original tensor except that the reduced dimension is removed.

Parameters
dimsdims can only contain a single dimension or all dimensions. If dims contains a single dimension, the index is along the specified dimension. If dims contains all dimensions, the index is into the flattend tensor.

◆ ArgMin()

Tensor open3d::core::Tensor::ArgMin ( const SizeVector dims) const

Returns minimum index of the tensor along the given dim. The returned tensor has dtype int64_t, and has the same shape as original tensor except that the reduced dimension is removed.

Parameters
dimsdims can only contain a single dimension or all dimensions. If dims contains a single dimension, the index is along the specified dimension. If dims contains all dimensions, the index is into the flattend tensor.

◆ AsRvalue()

Tensor open3d::core::Tensor::AsRvalue ( ) const
inline

Convert to rvalue such that the Tensor can be assigned. E.g. in numpy

tensor_a = tensor_b # tensor_a is lvalue, tensor_a variable will
# now reference tensor_b, that is, tensor_a
# and tensor_b share exactly the same memory.
tensor_a[:] = tensor_b # tensor_a[:] is rvalue, tensor_b's values are
# assigned to tensor_a's memory.

◆ AssertShape()

void open3d::core::Tensor::AssertShape ( const SizeVector expected_shape) const

Assert that the Tensor has the specified shape.

◆ AssertTemplateDtype()

template<typename T >
void open3d::core::Tensor::AssertTemplateDtype ( ) const
inline

◆ Assign()

void open3d::core::Tensor::Assign ( const Tensor other)

Assign (copy) values from another Tensor, shape, dtype, device may change.

Assign (copy) values from another Tensor, shape, dtype, device may change. Slices of the original Tensor still keeps the original memory. After assignment, the Tensor will be contiguous.

◆ AssignObject()

template<typename Object >
Tensor& open3d::core::Tensor::AssignObject ( const Object &  v) &&
inline

Assign an object to a tensor. The tensor being assigned to must be a scalr tensor of shape {}. The element byte size of the tensor must be the same as the size of the object. The object must be a POD.

◆ AsStrided()

Tensor open3d::core::Tensor::AsStrided ( const SizeVector new_shape,
const SizeVector new_strides 
) const

Create a Tensor view of specified shape and strides. The underlying buffer and data_ptr offsets remain the same.

◆ Broadcast()

Tensor open3d::core::Tensor::Broadcast ( const SizeVector dst_shape) const

Broadcast Tensor to a new broadcastable shape.

◆ ComputeNewStrides()

std::pair< bool, SizeVector > open3d::core::Tensor::ComputeNewStrides ( const SizeVector old_shape,
const SizeVector old_strides,
const SizeVector new_shape 
)
static
  1. Separate oldshape into chunks of dimensions, where the dimensions are ``contiguous'' in each chunk, i.e., oldstride[i] = oldshape[i+1] * oldstride[i+1]
  2. newshape must be able to be separated into same number of chunks as oldshape was separated into, where each chunk of newshape has matching ``numel'', i.e., number of subspaces, as the corresponding chunk of oldshape. Ref: aten/src/ATen/TensorUtils.cpp

◆ Contiguous()

Tensor open3d::core::Tensor::Contiguous ( ) const

Returns a contiguous Tensor containing the same data in the same device. If self tensor is already contiguous, the same underlying memory will be used.

◆ Copy() [1/2]

Tensor open3d::core::Tensor::Copy ( const Device device) const

Copy Tensor to a specified device. The resulting Tensor will be compacted and contiguous.

◆ Copy() [2/2]

Tensor open3d::core::Tensor::Copy ( ) const
inline

Copy Tensor to the same device.

◆ CopyFrom()

void open3d::core::Tensor::CopyFrom ( const Tensor other)

Copy Tensor values to current tensor for source tensor.

◆ Cos()

Tensor open3d::core::Tensor::Cos ( ) const

Element-wise cosine of a tensor, returning a new tensor.

◆ Cos_()

Tensor open3d::core::Tensor::Cos_ ( )

Element-wise cosine of a tensor, in-place.

◆ DefaultStrides()

SizeVector open3d::core::Tensor::DefaultStrides ( const SizeVector shape)
static

◆ Diag()

Tensor open3d::core::Tensor::Diag ( const Tensor input)
static

Create a square matrix with specified diagonal elements in input.

◆ Div() [1/2]

Tensor open3d::core::Tensor::Div ( const Tensor value) const

Divides a tensor and returns the resulting tensor.

◆ Div() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Div ( T  scalar_value) const
inline

◆ Div_() [1/2]

Tensor open3d::core::Tensor::Div_ ( const Tensor value)

Inplace version of Tensor::Div. Divides a tensor to the current tensor and returns the current tensor.

◆ Div_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Div_ ( T  scalar_value)
inline

◆ Empty()

Tensor open3d::core::Tensor::Empty ( const SizeVector shape,
Dtype  dtype,
const Device device = Device("CPU:0") 
)
static

Create a tensor with uninitilized values.

◆ EmptyLike()

static Tensor open3d::core::Tensor::EmptyLike ( const Tensor other)
inlinestatic

Create a tensor with uninitilized values with the same dtype and device as the other tensor.

◆ Eq() [1/2]

Tensor open3d::core::Tensor::Eq ( const Tensor value) const

Element-wise equals-to of tensors, returning a new boolean tensor.

◆ Eq() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Eq ( T  scalar_value) const
inline

◆ Eq_() [1/2]

Tensor open3d::core::Tensor::Eq_ ( const Tensor value)

Element-wise equals-to of tensors, in-place. This operation won't change the tensor's dtype.

◆ Eq_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Eq_ ( T  scalar_value)
inline

◆ Exp()

Tensor open3d::core::Tensor::Exp ( ) const

Element-wise exponential of a tensor, returning a new tensor.

◆ Exp_()

Tensor open3d::core::Tensor::Exp_ ( )

Element-wise base-e exponential of a tensor, in-place.

◆ Expand()

Tensor open3d::core::Tensor::Expand ( const SizeVector dst_shape) const

Expand Tensor to a new broadcastable shape, returning a new view.

Tensors can be expanded to broadcastable shape by setting dimension of size 1 to have stride 0, without allocating new memory.

◆ Eye()

Tensor open3d::core::Tensor::Eye ( int64_t  n,
Dtype  dtype,
const Device device 
)
static

Create a identity matrix of size n x n.

◆ Fill()

template<typename Scalar >
void open3d::core::Tensor::Fill ( Scalar  v)
inline

Fill the whole Tensor with a scalar value, the scalar will be casted to the Tensor's dtype.

◆ FillObject()

template<typename Object >
void open3d::core::Tensor::FillObject ( const Object &  v)
inline

◆ FromDLPack()

Tensor open3d::core::Tensor::FromDLPack ( const DLManagedTensor dlmt)
static

Convert DLManagedTensor to Tensor.

◆ Full()

template<typename T >
static Tensor open3d::core::Tensor::Full ( const SizeVector shape,
T  fill_value,
Dtype  dtype,
const Device device = Device("CPU:0") 
)
inlinestatic

Create a tensor fill with specified value.

◆ Ge() [1/2]

Tensor open3d::core::Tensor::Ge ( const Tensor value) const

Element-wise greater-than-or-equals-to of tensors, returning a new boolean tensor.

◆ Ge() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Ge ( T  scalar_value) const
inline

◆ Ge_() [1/2]

Tensor open3d::core::Tensor::Ge_ ( const Tensor value)

Element-wise greater-than-or-equals-to of tensors, in-place. This operation won't change the tensor's dtype.

◆ Ge_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Ge_ ( T  scalar_value)
inline

◆ GetBlob()

std::shared_ptr<Blob> open3d::core::Tensor::GetBlob ( ) const
inline

◆ GetDataPtr() [1/2]

void* open3d::core::Tensor::GetDataPtr ( )
inline

◆ GetDataPtr() [2/2]

const void* open3d::core::Tensor::GetDataPtr ( ) const
inline

◆ GetDevice()

Device open3d::core::Tensor::GetDevice ( ) const

◆ GetDtype()

Dtype open3d::core::Tensor::GetDtype ( ) const
inline

◆ GetItem() [1/2]

Tensor open3d::core::Tensor::GetItem ( const TensorKey tk) const

Pythonic getitem for tensor.

Returns a view of the original tensor, if TensorKey is TensorKeyMode::Index or TensorKeyMode::Slice. Returns a copy if the TensorKey contains TensorKeyMode::IndexTensor (advanced indexing).

For example, in numpy:

t = np.empty((4, 5), dtype=np.float32)
t1 = t[2]
t2 = t[0:4:2]

The equivalent Open3D C++ calls:

Tensor t1 = t.GetItem(TensorIndex(2));
Tensor t2 = t.GetItem(TensorSlice(0, 4, 2));

◆ GetItem() [2/2]

Tensor open3d::core::Tensor::GetItem ( const std::vector< TensorKey > &  tks) const

Pythonic getitem for tensor.

Returns a view of the original tensor, if TensorKey only contains TensorKeyMode::Index or TensorKeyMode::Slice. Returns a copy if the TensorKey contains IndexTensor (advanced indexing).

For example, in numpy:

t = np.empty((4, 5), dtype=np.float32)
t1 = t[1, 0:4:2]

The equivalent Open3D C++ calls:

Tensor t1 = t.GetItem({TensorIndex(2), TensorSlice(0, 4, 2)});

◆ GetShape() [1/2]

SizeVector open3d::core::Tensor::GetShape ( ) const
inline

◆ GetShape() [2/2]

int64_t open3d::core::Tensor::GetShape ( int64_t  dim) const
inline

◆ GetShapeRef()

const SizeVector& open3d::core::Tensor::GetShapeRef ( ) const
inline

◆ GetStride()

int64_t open3d::core::Tensor::GetStride ( int64_t  dim) const
inline

◆ GetStrides()

SizeVector open3d::core::Tensor::GetStrides ( ) const
inline

◆ GetStridesRef()

const SizeVector& open3d::core::Tensor::GetStridesRef ( ) const
inline

◆ Gt() [1/2]

Tensor open3d::core::Tensor::Gt ( const Tensor value) const

Element-wise greater-than of tensors, returning a new boolean tensor.

◆ Gt() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Gt ( T  scalar_value) const
inline

◆ Gt_() [1/2]

Tensor open3d::core::Tensor::Gt_ ( const Tensor value)

Element-wise greater-than of tensors, in-place. This operation won't change the tensor's dtype.

◆ Gt_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Gt_ ( T  scalar_value)
inline

◆ IndexExtract()

Tensor open3d::core::Tensor::IndexExtract ( int64_t  dim,
int64_t  idx 
) const

Extract the idx -th sub-tensor in dimension dim. After IndexExtract, the dimension dim will be removed.

◆ IndexGet()

Tensor open3d::core::Tensor::IndexGet ( const std::vector< Tensor > &  index_tensors) const

Advanced indexing getter.

We use the Numpy advanced indexing symnatics, see: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

◆ IndexSet()

void open3d::core::Tensor::IndexSet ( const std::vector< Tensor > &  index_tensors,
const Tensor src_tensor 
)

Advanced indexing getter.

We use the Numpy advanced indexing symnatics, see: https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

Note: Only support 1D index tensors. Note: Only support advanced indices are all next to each other.

◆ Inverse()

Tensor open3d::core::Tensor::Inverse ( ) const

Computes the matrix inversion of the square matrix *this with LU factorization and returns the result.

◆ IsClose()

Tensor open3d::core::Tensor::IsClose ( const Tensor other,
double  rtol = 1e-5,
double  atol = 1e-8 
) const

Element-wise version of Tensor::AllClose.

  • If the device is not the same: throws exception.
  • If the dtype is not the same: throws exception.
  • If the shape is not the same: throws exception.
  • For each element in the returned tensor: abs(self - other) <= (atol + rtol * abs(other)).

The equation is not symmetrial, i.e. a.AllClose(b) might not be the same as b.AllClose(a). Also see Numpy's documentation: https://numpy.org/doc/stable/reference/generated/numpy.allclose.html.

TODO: support nan

Parameters
otherThe other tensor to compare with.
rtolRelative tolerance.
atolAbsolute tolerance.
Returns
A boolean tensor indicating whether the tensor is close.

◆ IsContiguous()

bool open3d::core::Tensor::IsContiguous ( ) const
inline

Returns True if the underlying memory buffer is contiguous. A contiguous Tensor's data_ptr_ does not need to point to the beginning of blob_.

◆ IsSame()

bool open3d::core::Tensor::IsSame ( const Tensor other) const

Returns true iff the tensor is the other tensor. This means that, the two tensors have the same underlying memory, device, dtype, shape, strides and etc.

◆ Item() [1/2]

template<typename T >
T open3d::core::Tensor::Item ( ) const
inline

Helper function to return scalar value of a scalar Tensor, the Tensor mush have empty shape ()

◆ Item() [2/2]

template<>
bool open3d::core::Tensor::Item ( ) const
inline

◆ Le() [1/2]

Tensor open3d::core::Tensor::Le ( const Tensor value) const

Element-wise less-than-or-equals-to of tensors, returning a new boolean tensor.

◆ Le() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Le ( T  scalar_value) const
inline

◆ Le_() [1/2]

Tensor open3d::core::Tensor::Le_ ( const Tensor value)

Element-wise less-than-or-equals-to of tensors, in-place. This operation won't change the tensor's dtype.

◆ Le_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Le_ ( T  scalar_value)
inline

◆ LeastSquares()

Tensor open3d::core::Tensor::LeastSquares ( const Tensor rhs) const

Solves the linear system AX = B with QR decomposition and returns X. A is a (m, n) matrix with m >= n.

◆ LogicalAnd() [1/2]

Tensor open3d::core::Tensor::LogicalAnd ( const Tensor value) const

Element-wise logical and of a tensor, returning a new boolean tensor.

If the tensor is not boolean, zero will be treated as False, while non-zero values will be treated as True.

◆ LogicalAnd() [2/2]

template<typename T >
Tensor open3d::core::Tensor::LogicalAnd ( T  scalar_value) const
inline

◆ LogicalAnd_() [1/2]

Tensor open3d::core::Tensor::LogicalAnd_ ( const Tensor value)

Element-wise logical and of tensors, in-place. This operation won't change the tensor's dtype.

If the tensor is not boolean, 0 will be treated as False, while non-zero will be treated as True. The tensor will be filled with 0 or 1 casted to the tensor's dtype.

◆ LogicalAnd_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::LogicalAnd_ ( T  scalar_value)
inline

◆ LogicalNot()

Tensor open3d::core::Tensor::LogicalNot ( ) const

Element-wise logical not of a tensor, returning a new boolean tensor.

If the tensor is not boolean, 0 will be treated as False, while non-zero will be treated as True.

◆ LogicalNot_()

Tensor open3d::core::Tensor::LogicalNot_ ( )

Element-wise logical not of a tensor, in-place. This operation won't change the tensor's dtype.

If the tensor is not boolean, 0 will be treated as False, while non-zero will be treated as True. The tensor will be filled with 0 or 1 casted to the tensor's dtype.

◆ LogicalOr() [1/2]

Tensor open3d::core::Tensor::LogicalOr ( const Tensor value) const

Element-wise logical or of tensors, returning a new boolean tensor.

If the tensor is not boolean, zero will be treated as False, while non-zero values will be treated as True.

◆ LogicalOr() [2/2]

template<typename T >
Tensor open3d::core::Tensor::LogicalOr ( T  scalar_value) const
inline

◆ LogicalOr_() [1/2]

Tensor open3d::core::Tensor::LogicalOr_ ( const Tensor value)

Element-wise logical or of tensors, in-place. This operation won't change the tensor's dtype.

If the tensor is not boolean, 0 will be treated as False, while non-zero will be treated as True. The tensor will be filled with 0 or 1 casted to the tensor's dtype.

◆ LogicalOr_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::LogicalOr_ ( T  scalar_value)
inline

◆ LogicalXor() [1/2]

Tensor open3d::core::Tensor::LogicalXor ( const Tensor value) const

Element-wise logical exclusive-or of tensors, returning a new boolean tensor.

If the tensor is not boolean, zero will be treated as False, while non-zero values will be treated as True.

◆ LogicalXor() [2/2]

template<typename T >
Tensor open3d::core::Tensor::LogicalXor ( T  scalar_value) const
inline

◆ LogicalXor_() [1/2]

Tensor open3d::core::Tensor::LogicalXor_ ( const Tensor value)

Element-wise logical exclusive-or of tensors, in-place. This operation won't change the tensor's dtype.

If the tensor is not boolean, zero will be treated as False, while non-zero values will be treated as True. The tensor will be filled with 0 or 1 casted to the tensor's dtype.

◆ LogicalXor_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::LogicalXor_ ( T  scalar_value)
inline

◆ Lt() [1/2]

Tensor open3d::core::Tensor::Lt ( const Tensor value) const

Element-wise less-than of tensors, returning a new boolean tensor.

◆ Lt() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Lt ( T  scalar_value) const
inline

◆ Lt_() [1/2]

Tensor open3d::core::Tensor::Lt_ ( const Tensor value)

Element-wise less-than of tensors, in-place. This operation won't change the tensor's dtype.

◆ Lt_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Lt_ ( T  scalar_value)
inline

◆ Matmul()

Tensor open3d::core::Tensor::Matmul ( const Tensor rhs) const

Computes matrix multiplication with *this and rhs and returns the result.

◆ Max()

Tensor open3d::core::Tensor::Max ( const SizeVector dims,
bool  keepdim = false 
) const

Returns max of the tensor along the given dims.

Parameters
dimsA list of dimensions to be reduced.
keepdimIf true, the reduced dims will be retained as size 1.

◆ Mean()

Tensor open3d::core::Tensor::Mean ( const SizeVector dims,
bool  keepdim = false 
) const

Returns the mean of the tensor along the given dims.

Parameters
dimsA list of dimensions to be reduced.
keepdimIf true, the reduced dims will be retained as size 1.

◆ Min()

Tensor open3d::core::Tensor::Min ( const SizeVector dims,
bool  keepdim = false 
) const

Returns min of the tensor along the given dims.

Parameters
dimsA list of dimensions to be reduced.
keepdimIf true, the reduced dims will be retained as size 1.

◆ Mul() [1/2]

Tensor open3d::core::Tensor::Mul ( const Tensor value) const

Multiplies a tensor and returns the resulting tensor.

◆ Mul() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Mul ( T  scalar_value) const
inline

◆ Mul_() [1/2]

Tensor open3d::core::Tensor::Mul_ ( const Tensor value)

Inplace version of Tensor::Mul. Multiplies a tensor to the current tensor and returns the current tensor.

◆ Mul_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Mul_ ( T  scalar_value)
inline

◆ Ne() [1/2]

Tensor open3d::core::Tensor::Ne ( const Tensor value) const

Element-wise not-equals-to of tensors, returning a new boolean tensor.

◆ Ne() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Ne ( T  scalar_value) const
inline

◆ Ne_() [1/2]

Tensor open3d::core::Tensor::Ne_ ( const Tensor value)

Element-wise equals-to of tensors, in-place. This operation won't change the tensor's dtype.

◆ Ne_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Ne_ ( T  scalar_value)
inline

◆ Neg()

Tensor open3d::core::Tensor::Neg ( ) const

Element-wise negation of a tensor, returning a new tensor.

◆ Neg_()

Tensor open3d::core::Tensor::Neg_ ( )

Element-wise negation of a tensor, in-place.

◆ NonZero()

Tensor open3d::core::Tensor::NonZero ( ) const

Find the indices of the elements that are non-zero. Returns an int64 tensor of shape {num_dims, num_non_zeros}, where the i-th row contains the indices of the non-zero elements in i-th dimension of the original tensor.

◆ NonZeroNumpy()

std::vector< Tensor > open3d::core::Tensor::NonZeroNumpy ( ) const

Find the indices of the elements that are non-zero. Returns a vector of int64 Tensors, each containing the indices of the non-zero elements in each dimension.

◆ NumDims()

int64_t open3d::core::Tensor::NumDims ( ) const
inline

◆ NumElements()

int64_t open3d::core::Tensor::NumElements ( ) const
inline

◆ Ones()

Tensor open3d::core::Tensor::Ones ( const SizeVector shape,
Dtype  dtype,
const Device device = Device("CPU:0") 
)
static

Create a tensor fill with ones.

◆ operator &&()

Tensor open3d::core::Tensor::operator&& ( const Tensor value) const
inline

◆ operator!=()

Tensor open3d::core::Tensor::operator!= ( const Tensor value) const
inline

◆ operator*() [1/2]

Tensor open3d::core::Tensor::operator* ( const Tensor value) const
inline

◆ operator*() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator* ( T  scalar_value) const
inline

◆ operator*=() [1/2]

Tensor open3d::core::Tensor::operator*= ( const Tensor value)
inline

◆ operator*=() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator*= ( T  scalar_value)
inline

◆ operator+() [1/2]

Tensor open3d::core::Tensor::operator+ ( const Tensor value) const
inline

◆ operator+() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator+ ( T  scalar_value) const
inline

◆ operator+=() [1/2]

Tensor open3d::core::Tensor::operator+= ( const Tensor value)
inline

◆ operator+=() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator+= ( T  scalar_value)
inline

◆ operator-() [1/2]

Tensor open3d::core::Tensor::operator- ( const Tensor value) const
inline

◆ operator-() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator- ( T  scalar_value) const
inline

◆ operator-=() [1/2]

Tensor open3d::core::Tensor::operator-= ( const Tensor value)
inline

◆ operator-=() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator-= ( T  scalar_value)
inline

◆ operator/() [1/2]

Tensor open3d::core::Tensor::operator/ ( const Tensor value) const
inline

◆ operator/() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator/ ( T  scalar_value) const
inline

◆ operator/=() [1/2]

Tensor open3d::core::Tensor::operator/= ( const Tensor value)
inline

◆ operator/=() [2/2]

template<typename T >
Tensor open3d::core::Tensor::operator/= ( T  scalar_value)
inline

◆ operator<()

Tensor open3d::core::Tensor::operator< ( const Tensor value) const
inline

◆ operator<=()

Tensor open3d::core::Tensor::operator<= ( const Tensor value) const
inline

◆ operator=() [1/5]

Tensor & open3d::core::Tensor::operator= ( const Tensor other) &

Tensor assignment lvalue = lvalue, e.g. tensor_a = tensor_b. This results in a "shallow" copy.

◆ operator=() [2/5]

Tensor & open3d::core::Tensor::operator= ( Tensor &&  other) &

Tensor assignment lvalue = rvalue, e.g. tensor_a = tensor_b[0]. This results in a "shallow" copy.

◆ operator=() [3/5]

Tensor & open3d::core::Tensor::operator= ( const Tensor other) &&

Tensor assignment rvalue = lvalue, e.g. tensor_a[0] = tensor_b

Tensor assignment rvalue = lvalue, e.g. tensor_a[0] = tensor_b. An actual copy of the data will be performed.

◆ operator=() [4/5]

Tensor & open3d::core::Tensor::operator= ( Tensor &&  other) &&

Tensor assignment rvalue = rvalue, e.g. tensor_a[0] = tensor_b[0]

Tensor assignment rvalue = rvalue, e.g. tensor_a[0] = tensor_b[0]. An actual copy of the data will be performed.

◆ operator=() [5/5]

template<typename T >
Tensor& open3d::core::Tensor::operator= ( const T v) &&
inline

Tensor assignment rvalue = rvalue_scalar, e.g. tensor_a[0] = 100 Implicit casting is performed to the underlying dtype.

Note that we don't have lvalue = rvalue_scalar, e.g. we don't support Tensor a_slice = tensor_a[0]; a_slice = 100;

◆ operator==()

Tensor open3d::core::Tensor::operator== ( const Tensor value) const
inline

◆ operator>()

Tensor open3d::core::Tensor::operator> ( const Tensor value) const
inline

◆ operator>=()

Tensor open3d::core::Tensor::operator>= ( const Tensor value) const
inline

◆ operator[]()

Tensor open3d::core::Tensor::operator[] ( int64_t  i) const

Extract the i-th Tensor along the first axis, returning a new view.

◆ operator||()

Tensor open3d::core::Tensor::operator|| ( const Tensor value) const
inline

◆ Permute()

Tensor open3d::core::Tensor::Permute ( const SizeVector dims) const

Permute (dimension shuffle) the Tensor, returns a view.

Parameters
dimsThe desired ordering of dimensions.
Returns
A Tensor with the desired ordering of the dimensions.

◆ Prod()

Tensor open3d::core::Tensor::Prod ( const SizeVector dims,
bool  keepdim = false 
) const

Returns the product of the tensor along the given dims.

Parameters
dimsA list of dimensions to be reduced.
keepdimIf true, the reduced dims will be retained as size 1.

◆ Reshape()

Tensor open3d::core::Tensor::Reshape ( const SizeVector dst_shape) const

Returns a tensor with the same data and number of elements as input, but with the specified shape. When possible, the returned tensor will be a view of input. Otherwise, it will be a copy.

Contiguous inputs and inputs with compatible strides can be reshaped without copying, but you should not depend on the copying vs. viewing behavior.

Ref: https://pytorch.org/docs/stable/tensors.html aten/src/ATen/native/TensorShape.cpp aten/src/ATen/TensorUtils.cpp

◆ ScalarPtrToString()

std::string open3d::core::Tensor::ScalarPtrToString ( const void *  ptr) const
protected

◆ SetItem() [1/3]

Tensor open3d::core::Tensor::SetItem ( const Tensor value)

Set all items. Equivalent to tensor[:] = value in Python.

◆ SetItem() [2/3]

Tensor open3d::core::Tensor::SetItem ( const TensorKey tk,
const Tensor value 
)

Pythonic setitem for tensor.

For example, in numpy:

t = np.empty((4, 5), dtype=np.float32)
t[2] = np.empty((5,), dtype=np.float32)
t[0:4:2] = np.empty((2, 5), dtype=np.float32)

The equivalent Open3D C++ calls:

t.SetItem(TensorIndex(2), Tensor({5}, Dtype::Float32));
t.SetItem(TensorSlice(0, 4, 2), Tensor({2, 5}, Dtype::Float32));

◆ SetItem() [3/3]

Tensor open3d::core::Tensor::SetItem ( const std::vector< TensorKey > &  tks,
const Tensor value 
)

Pythonic setitem for tensor.

For example, in numpy:

t = np.empty((4, 5), dtype=np.float32)
t[2, 0:4:2] = np.empty((2, 5), dtype=np.float32)

The equivalent Open3D C++ calls:

t.SetItem({TensorIndex(2), TensorSlice(0, 4, 2)},

◆ ShallowCopyFrom()

void open3d::core::Tensor::ShallowCopyFrom ( const Tensor other)

Shallow copy a tensor, returning a tensor sharing the same memory.

◆ Sin()

Tensor open3d::core::Tensor::Sin ( ) const

Element-wise sine of a tensor, returning a new tensor.

◆ Sin_()

Tensor open3d::core::Tensor::Sin_ ( )

Element-wise sine of a tensor, in-place.

◆ Slice()

Tensor open3d::core::Tensor::Slice ( int64_t  dim,
int64_t  start,
int64_t  stop,
int64_t  step = 1 
) const

Slice Tensor.

Parameters
dimThe dimension to slice.
startThe start index (inclusive).
stopThe end index (exclusive).
stepPick one eleemnt for every step elements.

◆ Solve()

Tensor open3d::core::Tensor::Solve ( const Tensor rhs) const

Solves the linear system AX = B with QR decomposition and returns X. A must be a square matrix.

◆ Sqrt()

Tensor open3d::core::Tensor::Sqrt ( ) const

Element-wise square root of a tensor, returns a new tensor.

◆ Sqrt_()

Tensor open3d::core::Tensor::Sqrt_ ( )

Element-wise square root of a tensor, in-place.

◆ Sub() [1/2]

Tensor open3d::core::Tensor::Sub ( const Tensor value) const

Substracts a tensor and returns the resulting tensor.

◆ Sub() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Sub ( T  scalar_value) const
inline

◆ Sub_() [1/2]

Tensor open3d::core::Tensor::Sub_ ( const Tensor value)

Inplace version of Tensor::Sub. Substracts a tensor to the current tensor and returns the current tensor.

◆ Sub_() [2/2]

template<typename T >
Tensor open3d::core::Tensor::Sub_ ( T  scalar_value)
inline

◆ Sum()

Tensor open3d::core::Tensor::Sum ( const SizeVector dims,
bool  keepdim = false 
) const

Returns the sum of the tensor along the given dims.

Parameters
dimsA list of dimensions to be reduced.
keepdimIf true, the reduced dims will be retained as size 1.

◆ SVD()

std::tuple< Tensor, Tensor, Tensor > open3d::core::Tensor::SVD ( ) const

Computes the matrix SVD decomposition A = U S VT and returns the result. Note VT (V transpose) is returned instead of V.

◆ T()

Tensor open3d::core::Tensor::T ( ) const

Expects input to be <= 2-D Tensor by swapping dimension 0 and 1.

0-D and 1-D Tensor remains the same.

◆ To()

Tensor open3d::core::Tensor::To ( Dtype  dtype,
bool  copy = false 
) const

Returns a tensor with the specified dtype.

Parameters
dtypeThe targeted dtype to convert to.
copyIf true, a new tensor is always created; if false, the copy is avoided when the original tensor already have the targeted dtype.

◆ ToDLPack()

DLManagedTensor * open3d::core::Tensor::ToDLPack ( ) const

Convert the Tensor to DLManagedTensor.

◆ ToFlatVector() [1/2]

template<typename T >
std::vector<T> open3d::core::Tensor::ToFlatVector ( ) const
inline

Retrive all values as an std::vector, for debugging and testing.

◆ ToFlatVector() [2/2]

template<>
std::vector<bool> open3d::core::Tensor::ToFlatVector ( ) const
inline

◆ ToString()

std::string open3d::core::Tensor::ToString ( bool  with_suffix = true,
const std::string &  indent = "" 
) const

◆ Transpose()

Tensor open3d::core::Tensor::Transpose ( int64_t  dim0,
int64_t  dim1 
) const

Transpose a Tensor by swapping dimension dim0 and dim1.

Parameters
dim0The first dimension to be transposed.
dim1The second dimension to be transposed.

◆ View()

Tensor open3d::core::Tensor::View ( const SizeVector dst_shape) const

Returns a new tensor view with the same data but of a different shape.

The returned tensor shares the same data and must have the same number of elements, but may have a different size. For a tensor to be viewed, the new view size must be compatible with its original size and stride, i.e., each new view dimension must either be a subspace of an original dimension, or only span across original dimensions d, d+1, ..., d+kd,d+1, ..., d+k that satisfy the following contiguity-like condition that for all i = 0, ..., k-1, strides[i] = stride[i + 1] * shape[i + 1].

Otherwise, contiguous() needs to be called before the tensor can be viewed. See also: reshape(), which returns a view if the shapes are compatible, and copies (equivalent to calling contiguous()) otherwise.

Ref: https://pytorch.org/docs/stable/tensors.html aten/src/ATen/native/TensorShape.cpp aten/src/ATen/TensorUtils.cpp

◆ Zeros()

Tensor open3d::core::Tensor::Zeros ( const SizeVector shape,
Dtype  dtype,
const Device device = Device("CPU:0") 
)
static

Create a tensor fill with zeros.

Field Documentation

◆ blob_

std::shared_ptr<Blob> open3d::core::Tensor::blob_ = nullptr
protected

Underlying memory buffer for Tensor.

◆ data_ptr_

void* open3d::core::Tensor::data_ptr_ = nullptr
protected

Data pointer pointing to the beginning element of the Tensor.

Note that this is not necessarily the same as blob_.GetDataPtr(). When this happens, it means that the beginning element of the Tensor is not located a the beginning of the underlying blob. This could happen, for instance, at slicing:

// a.GetDataPtr() == a.GetBlob().GetDataPtr()
Tensor a({2, 3}, dtype, "CPU:0");
// b.GetDataPtr() != b.GetBlob().GetDataPtr()
b = a[1];

◆ dtype_

Dtype open3d::core::Tensor::dtype_ = Dtype::Undefined
protected

Data type.

◆ shape_

SizeVector open3d::core::Tensor::shape_ = {0}
protected

SizeVector of the Tensor. SizeVector[i] is the legnth of dimension i.

◆ strides_

SizeVector open3d::core::Tensor::strides_ = {1}
protected

Stride of a Tensor. The stride of a n-dimensional tensor is also n-dimensional. Stride(i) is the number of elements (not bytes) to jump in a continuous memory space before eaching the next element in dimension i. For example, a 2x3x4 float32 dense tensor has shape(2, 3, 4) and stride(12, 4, 1). A slicing operation performed on the tensor can change the shape and stride.


The documentation for this class was generated from the following files: