Open3D (C++ API)
|
#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... | |
Tensor (const SizeVector &shape, const SizeVector &strides, void *data_ptr, Dtype dtype, const std::shared_ptr< Blob > &blob) | |
The fully specified constructor. More... | |
Tensor (const Tensor &other) | |
Shallow copy constructor with lvalue input, e.g. Tensor dst(src) . More... | |
Tensor (Tensor &&other) | |
Shallow copy constructor with rvalue input, e.g. Tensor dst(src[0]) . More... | |
Tensor & | operator= (const Tensor &other) & |
Tensor assignment lvalue = lvalue, e.g. tensor_a = tensor_b More... | |
Tensor & | operator= (Tensor &&other) & |
Tensor assignment lvalue = rvalue, e.g. tensor_a = tensor_b[0] More... | |
Tensor & | operator= (const Tensor &other) && |
Tensor assignment rvalue = lvalue, e.g. tensor_a[0] = tensor_b More... | |
Tensor & | operator= (Tensor &&other) && |
Tensor assignment rvalue = rvalue, e.g. tensor_a[0] = tensor_b[0] More... | |
template<typename T > | |
Tensor & | operator= (const T &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) |
DLManagedTensor * | ToDLPack () const |
void | Assign (const Tensor &other) |
Assign (copy) values from another Tensor, shape, dtype, device may change. More... | |
template<typename T > | |
void | Fill (T v) |
Fill the whole Tensor with a scalar value, the scalar will be casted to the Tensor's dtype. 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 |
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 |
Slice Tensor. More... | |
Tensor | AsRvalue () const |
template<> | |
Tensor (const std::vector< bool > &init_vals, const SizeVector &shape, Dtype dtype, const Device &device) | |
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... | |
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 | FromDLPack (DLManagedTensor *src) |
A Tensor is a "view" of a data Blob with shape, stride, data_ptr. Tensor can also be used to perform numerical operations.
|
inline |
|
inline |
Constructor for creating a contiguous Tensor.
|
inline |
Constructor for creating a contiguous Tensor with initial values.
|
inline |
The fully specified constructor.
|
inline |
Shallow copy constructor with lvalue input, e.g. Tensor dst(src)
.
|
inline |
Shallow copy constructor with rvalue input, e.g. Tensor dst(src[0])
.
|
inline |
|
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
tensor_a[:] = tensor_b # tensor_a[:] is rvalue, tensor_b's values are
void open3d::Tensor::Assign | ( | const Tensor & | other | ) |
Tensor open3d::Tensor::Broadcast | ( | const SizeVector & | dst_shape | ) | const |
Broadcast Tensor to a new broadcastable shape.
void open3d::Tensor::CopyFrom | ( | const Tensor & | other | ) |
Copy Tensor values to current tensor for source tensor.
|
static |
Create a tensor with uninitilized values.
Tensor open3d::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.
|
inline |
|
inlinestatic |
|
inlinestatic |
Create a tensor fill with specified value.
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:
The equivalent Open3D C++ calls:
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:
The equivalent Open3D C++ calls:
Tensor open3d::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.
|
static |
Create a tensor fill with ones.
Tensor assignment rvalue = lvalue, e.g. tensor_a[0] = tensor_b
Tensor assignment rvalue = rvalue, e.g. tensor_a[0] = tensor_b[0]
|
inline |
Tensor open3d::Tensor::operator[] | ( | int64_t | i | ) | const |
Extract the i-th Tensor along the first axis, returning a new view.
Tensor open3d::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
Set all items. Equivalent to tensor[:] = value
in Python.
Pythonic setitem for tensor.
For example, in numpy:
The equivalent Open3D C++ calls:
Pythonic setitem for tensor.
For example, in numpy:
The equivalent Open3D C++ calls:
void open3d::Tensor::ShallowCopyFrom | ( | const Tensor & | other | ) |
Shallow copy a tensor, returning a tensor sharing the same memory.
Tensor open3d::Tensor::Slice | ( | int64_t | dim, |
int64_t | start, | ||
int64_t | stop, | ||
int64_t | step = 1 |
||
) | const |
Slice Tensor.
Returns a tensor with the specified dtype
.
dtype | The targeted dtype to convert to. |
copy | If true, a new tensor is always created; if false, the copy is avoided when the original tensor already have the targeted dtype. |
|
inline |
std::string open3d::Tensor::ToString | ( | bool | with_suffix = true , |
const std::string & | indent = "" |
||
) | const |
Tensor open3d::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
|
static |
Create a tensor fill with zeros.