A Variable
augments a Tensor
with the ability to interact in our autograd machinery.
More...
#include <variable.h>
Public Member Functions | |
Variable ()=default | |
Default constructor. | |
Variable (at::Tensor const &rhs) | |
Variable (at::Tensor &&rhs) | |
const at::Tensor & | data () const noexcept |
at::Tensor & | data () noexcept |
const std::shared_ptr< Function > & | grad_fn () const |
Gets the gradient function of the Variable . More... | |
Function * | grad_fn_unsafe () const |
Gets the raw gradient function pointer, whatever it currently is. | |
void | set_grad_accumulator (std::weak_ptr< Function > grad_accumulator) |
Set the gradient accumulator of the Variable . More... | |
std::shared_ptr< Function > | try_get_grad_accumulator () const |
Attempts to get a pointer to the gradient accumulator of the Variable , if it still exists. More... | |
std::shared_ptr< Function > | grad_accumulator () const |
Gets the gradient accumulator of the Variable if it has one, or else create one on the fly and return it. More... | |
Edge | gradient_edge () const |
Returns the "canonical" gradient edge of this Variable , i.e. More... | |
Variable | detach () const |
Returns a copy of this Variable that is detached from its autograd graph and has a blank version. More... | |
void | detach_ () |
Like detach() , but removes this Variable in-place. More... | |
void | backward (c10::optional< Tensor > gradient, bool keep_graph, bool create_graph) const |
Computes the gradient of current tensor w.r.t. graph leaves. | |
void | set_data (const at::Tensor &new_data) |
Sets the Tensor held by this Variable to the one supplied. More... | |
void | set_gradient_edge (Edge edge) noexcept |
Set the gradient edge – i.e. More... | |
uint32_t | output_nr () const noexcept |
Returns the input index of the gradient Function to which this Variable is connected. More... | |
bool | is_leaf () const noexcept |
True if this Variable is a leaf and thus does not have a grad_fn . | |
void | bump_version () noexcept |
Increments the version count of this Variable . | |
void | set_version_counter (const VariableVersion &version_counter) noexcept |
const VariableVersion & | version_counter () const noexcept |
Retrieves this Variable s version counter. | |
uint32_t | current_version () const noexcept |
Retrieves the current value of the Variable 's version counter. More... | |
void | rebase_history (Edge gradient_edge) |
Update the grad_fn of an existing Variable. More... | |
void | add_hook (std::shared_ptr< FunctionPreHook > hook) |
const std::vector< std::shared_ptr< FunctionPreHook > > & | hooks () const noexcept |
void | clear_hooks () |
bool | is_view () const noexcept |
Returns true if this Variable is a view of another Variable . | |
const Variable & | base () const |
Returns the Variable that this Variable is a view of. More... | |
void | set_name (const std::string &name) |
const std::string & | name () const noexcept |
PyObject * | pyobj () const noexcept |
void | set_pyobj (PyObject *pyobj) noexcept |
Variable::AutogradMeta * | get_autograd_meta () const noexcept |
void | set_requires_grad (bool requires_grad, at::TensorImpl *self_impl) override |
Sets the requires_grad property of Variable . More... | |
bool | requires_grad () const override |
Variable & | grad () override |
Accesses the gradient Variable of this Variable . | |
const Variable & | grad () const override |
bool | requires_grad () const override |
Impl (at::Tensor data, std::unique_ptr< Variable::AutogradMeta > autograd_meta, bool requires_grad=false, Edge gradient_edge=Edge()) | |
int64_t | numel () const override |
at::IntArrayRef | sizes () const override |
at::IntArrayRef | strides () const override |
bool | is_contiguous () const override |
int64_t | size (int64_t d) const override |
int64_t | stride (int64_t d) const override |
void | resize_dim (int64_t ndim) override |
void | set_size (int64_t dim, int64_t new_size) override |
void | set_stride (int64_t dim, int64_t new_stride) override |
void | set_storage_offset (int64_t storage_offset) override |
int64_t | dim () const override |
bool | has_storage () const override |
const at::Storage & | storage () const override |
void * | slow_data () const override |
void | set_data (const at::Tensor &new_data) |
void | release_resources () override |
Reset all expensive fields to free up resources. | |
Variable::AutogradMeta * | get_autograd_meta () const |
int64_t | storage_offset () const override |
DifferentiableViewImpl (Variable base, at::Tensor data, Edge gradient_edge, std::unique_ptr< Variable::DifferentiableViewMeta > autograd_meta) | |
void | release_resources () override |
Reset all expensive fields to free up resources. | |
Public Member Functions inherited from at::Tensor | |
Tensor (c10::intrusive_ptr< TensorImpl, UndefinedTensorImpl > tensor_impl) | |
Tensor (const Tensor &)=default | |
Tensor (Tensor &&)=default | |
Tensor (C10Tensor tensor) | |
operator C10Tensor () const & | |
operator C10Tensor ()&& | |
int64_t | dim () const |
int64_t | storage_offset () const |
TensorImpl * | unsafeGetTensorImpl () const |
TensorImpl * | unsafeReleaseTensorImpl () |
const c10::intrusive_ptr< TensorImpl, UndefinedTensorImpl > & | getIntrusivePtr () const |
bool | defined () const |
void | reset () |
Tensor & | operator= (const Tensor &x)& |
Tensor & | operator= (Tensor &&x)& |
Tensor & | operator= (Scalar v)&& |
Tensor & | operator= (const Tensor &)&& |
Tensor & | operator= (Tensor &&)&& |
bool | is_same (const Tensor &other) const noexcept |
size_t | use_count () const noexcept |
size_t | weak_use_count () const noexcept |
const char * | toString () const |
IntArrayRef | sizes () const |
IntArrayRef | strides () const |
int64_t | ndimension () const |
bool | is_contiguous () const |
size_t | nbytes () const |
size_t | itemsize () const |
size_t | element_size () const |
Type & | type () const |
TensorTypeId | type_id () const |
ScalarType | scalar_type () const |
bool | has_storage () const |
const Storage & | storage () const |
bool | is_alias_of (const at::Tensor &other) const |
Tensor | toType (const Type &t, bool non_blocking=false) const |
Tensor & | copy_ (const Tensor &src, bool non_blocking=false) |
Tensor | toType (ScalarType t) const |
Tensor | toBackend (Backend b) const |
bool | is_variable () const noexcept |
Returns true if the Tensor is actually a torch::autograd::Variable . More... | |
Layout | layout () const noexcept |
Returns a Tensor 's layout. Defined in Type.h. | |
caffe2::TypeMeta | dtype () const noexcept |
Returns a Tensor 's dtype (TypeMeta ). Defined in TensorMethods.h. | |
Device | device () const |
Returns a Tensor 's device. | |
int64_t | get_device () const |
Returns a Tensor 's device index. | |
bool | is_cuda () const |
Returns if a Tensor has CUDA backend. | |
bool | is_hip () const |
Returns if a Tensor has HIP backend. | |
bool | is_sparse () const |
Returns if a Tensor has sparse backend. | |
TensorOptions | options () const |
Returns the TensorOptions corresponding to this Tensor . More... | |
template<typename T > | |
T * | data () const |
template<typename T > | |
T | item () const |
void | print () const |
template<typename T , size_t N> | |
TensorAccessor< T, N > | accessor () const & |
template<typename T , size_t N> | |
TensorAccessor< T, N > | accessor ()&&=delete |
template<typename T , size_t N, template< typename U > class PtrTraits = DefaultPtrTraits, typename index_t = int64_t> | |
PackedTensorAccessor< T, N, PtrTraits, index_t > | packed_accessor () const & |
template<typename T , size_t N, template< typename U > class PtrTraits = DefaultPtrTraits, typename index_t = int64_t> | |
PackedTensorAccessor< T, N > | packed_accessor ()&&=delete |
Tensor | operator- () const |
Tensor & | operator+= (const Tensor &other) |
Tensor & | operator+= (Scalar other) |
Tensor & | operator-= (const Tensor &other) |
Tensor & | operator-= (Scalar other) |
Tensor & | operator*= (const Tensor &other) |
Tensor & | operator*= (Scalar other) |
Tensor & | operator/= (const Tensor &other) |
Tensor & | operator/= (Scalar other) |
Tensor | operator[] (Scalar index) const |
Tensor | operator[] (Tensor index) const |
Tensor | operator[] (int64_t index) const |
Tensor | cpu () const |
Tensor | cuda () const |
Tensor | hip () const |
Tensor & | set_requires_grad (bool requires_grad) |
bool | requires_grad () const |
Tensor & | grad () |
const Tensor & | grad () const |
void | set_data (Tensor new_data) |
void | backward (c10::optional< Tensor > gradient=c10::nullopt, bool keep_graph=false, bool create_graph=false) |
Computes the gradient of current tensor w.r.t. graph leaves. | |
Tensor | abs () const |
Tensor & | abs_ () |
Tensor | acos () const |
Tensor & | acos_ () |
Tensor | add (const Tensor &other, Scalar alpha=1) const |
Tensor & | add_ (const Tensor &other, Scalar alpha=1) |
Tensor | add (Scalar other, Scalar alpha=1) const |
Tensor & | add_ (Scalar other, Scalar alpha=1) |
Tensor | addmv (const Tensor &mat, const Tensor &vec, Scalar beta=1, Scalar alpha=1) const |
Tensor & | addmv_ (const Tensor &mat, const Tensor &vec, Scalar beta=1, Scalar alpha=1) |
Tensor | addr (const Tensor &vec1, const Tensor &vec2, Scalar beta=1, Scalar alpha=1) const |
Tensor & | addr_ (const Tensor &vec1, const Tensor &vec2, Scalar beta=1, Scalar alpha=1) |
Tensor | all (int64_t dim, bool keepdim=false) const |
bool | allclose (const Tensor &other, double rtol=1e-05, double atol=1e-08, bool equal_nan=false) const |
Tensor | any (int64_t dim, bool keepdim=false) const |
Tensor | argmax (c10::optional< int64_t > dim=c10::nullopt, bool keepdim=false) const |
Tensor | argmin (c10::optional< int64_t > dim=c10::nullopt, bool keepdim=false) const |
Tensor | as_strided (IntArrayRef size, IntArrayRef stride, c10::optional< int64_t > storage_offset=c10::nullopt) const |
Tensor & | as_strided_ (IntArrayRef size, IntArrayRef stride, c10::optional< int64_t > storage_offset=c10::nullopt) |
Tensor | asin () const |
Tensor & | asin_ () |
Tensor | atan () const |
Tensor & | atan_ () |
Tensor | baddbmm (const Tensor &batch1, const Tensor &batch2, Scalar beta=1, Scalar alpha=1) const |
Tensor & | baddbmm_ (const Tensor &batch1, const Tensor &batch2, Scalar beta=1, Scalar alpha=1) |
Tensor | bernoulli (Generator *generator=nullptr) const |
Tensor & | bernoulli_ (const Tensor &p, Generator *generator=nullptr) |
Tensor & | bernoulli_ (double p=0.5, Generator *generator=nullptr) |
Tensor | bernoulli (double p, Generator *generator=nullptr) const |
Tensor | bincount (const Tensor &weights={}, int64_t minlength=0) const |
Tensor | bmm (const Tensor &mat2) const |
Tensor | ceil () const |
Tensor & | ceil_ () |
std::vector< Tensor > | chunk (int64_t chunks, int64_t dim=0) const |
Tensor | clamp (c10::optional< Scalar > min=c10::nullopt, c10::optional< Scalar > max=c10::nullopt) const |
Tensor & | clamp_ (c10::optional< Scalar > min=c10::nullopt, c10::optional< Scalar > max=c10::nullopt) |
Tensor | clamp_max (Scalar max) const |
Tensor & | clamp_max_ (Scalar max) |
Tensor | clamp_min (Scalar min) const |
Tensor & | clamp_min_ (Scalar min) |
Tensor | contiguous () const |
Tensor | cos () const |
Tensor & | cos_ () |
Tensor | cosh () const |
Tensor & | cosh_ () |
Tensor | cumsum (int64_t dim, ScalarType dtype) const |
Tensor | cumsum (int64_t dim) const |
Tensor | cumprod (int64_t dim, ScalarType dtype) const |
Tensor | cumprod (int64_t dim) const |
Tensor | det () const |
Tensor | diag_embed (int64_t offset=0, int64_t dim1=-2, int64_t dim2=-1) const |
Tensor | diagflat (int64_t offset=0) const |
Tensor | diagonal (int64_t offset=0, int64_t dim1=0, int64_t dim2=1) const |
Tensor | div (const Tensor &other) const |
Tensor & | div_ (const Tensor &other) |
Tensor | div (Scalar other) const |
Tensor & | div_ (Scalar other) |
Tensor | dot (const Tensor &tensor) const |
Tensor & | resize_ (IntArrayRef size) |
Tensor | erf () const |
Tensor & | erf_ () |
Tensor | erfc () const |
Tensor & | erfc_ () |
Tensor | exp () const |
Tensor & | exp_ () |
Tensor | expm1 () const |
Tensor & | expm1_ () |
Tensor | expand (IntArrayRef size, bool implicit=false) const |
Tensor | expand_as (const Tensor &other) const |
Tensor | flatten (int64_t start_dim=0, int64_t end_dim=-1) const |
Tensor & | fill_ (Scalar value) |
Tensor & | fill_ (const Tensor &value) |
Tensor | floor () const |
Tensor & | floor_ () |
Tensor | ger (const Tensor &vec2) const |
Tensor | fft (int64_t signal_ndim, bool normalized=false) const |
Tensor | ifft (int64_t signal_ndim, bool normalized=false) const |
Tensor | rfft (int64_t signal_ndim, bool normalized=false, bool onesided=true) const |
Tensor | irfft (int64_t signal_ndim, bool normalized=false, bool onesided=true, IntArrayRef signal_sizes={}) const |
Tensor | index (TensorList indices) const |
Tensor & | index_copy_ (int64_t dim, const Tensor &index, const Tensor &source) |
Tensor | index_copy (int64_t dim, const Tensor &index, const Tensor &source) const |
Tensor & | index_put_ (TensorList indices, const Tensor &values, bool accumulate=false) |
Tensor | index_put (TensorList indices, const Tensor &values, bool accumulate=false) const |
Tensor | inverse () const |
Tensor | isclose (const Tensor &other, double rtol=1e-05, double atol=1e-08, bool equal_nan=false) const |
bool | is_distributed () const |
bool | is_floating_point () const |
bool | is_complex () const |
bool | is_nonzero () const |
bool | is_same_size (const Tensor &other) const |
bool | is_signed () const |
std::tuple< Tensor, Tensor > | kthvalue (int64_t k, int64_t dim=-1, bool keepdim=false) const |
Tensor | log () const |
Tensor & | log_ () |
Tensor | log10 () const |
Tensor & | log10_ () |
Tensor | log1p () const |
Tensor & | log1p_ () |
Tensor | log2 () const |
Tensor & | log2_ () |
Tensor | logdet () const |
Tensor | log_softmax (int64_t dim, ScalarType dtype) const |
Tensor | log_softmax (int64_t dim) const |
Tensor | logsumexp (IntArrayRef dim, bool keepdim=false) const |
Tensor | matmul (const Tensor &other) const |
Tensor | matrix_power (int64_t n) const |
std::tuple< Tensor, Tensor > | max (int64_t dim, bool keepdim=false) const |
Tensor | max_values (IntArrayRef dim, bool keepdim=false) const |
Tensor | mean (ScalarType dtype) const |
Tensor | mean () const |
Tensor | mean (IntArrayRef dim, bool keepdim, ScalarType dtype) const |
Tensor | mean (IntArrayRef dim, bool keepdim=false) const |
Tensor | mean (IntArrayRef dim, ScalarType dtype) const |
std::tuple< Tensor, Tensor > | median (int64_t dim, bool keepdim=false) const |
std::tuple< Tensor, Tensor > | min (int64_t dim, bool keepdim=false) const |
Tensor | min_values (IntArrayRef dim, bool keepdim=false) const |
Tensor | mm (const Tensor &mat2) const |
std::tuple< Tensor, Tensor > | mode (int64_t dim=-1, bool keepdim=false) const |
Tensor | mul (const Tensor &other) const |
Tensor & | mul_ (const Tensor &other) |
Tensor | mul (Scalar other) const |
Tensor & | mul_ (Scalar other) |
Tensor | mv (const Tensor &vec) const |
Tensor | mvlgamma (int64_t p) const |
Tensor & | mvlgamma_ (int64_t p) |
Tensor | narrow_copy (int64_t dim, int64_t start, int64_t length) const |
Tensor | narrow (int64_t dim, int64_t start, int64_t length) const |
Tensor | permute (IntArrayRef dims) const |
Tensor | pin_memory () const |
Tensor | pinverse (double rcond=1e-15) const |
Tensor | repeat (IntArrayRef repeats) const |
Tensor | reshape (IntArrayRef shape) const |
Tensor | reshape_as (const Tensor &other) const |
Tensor | round () const |
Tensor & | round_ () |
Tensor | relu () const |
Tensor & | relu_ () |
Tensor | prelu (const Tensor &weight) const |
std::tuple< Tensor, Tensor > | prelu_backward (const Tensor &grad_output, const Tensor &weight) const |
Tensor | hardshrink (Scalar lambd=0.5) const |
Tensor | hardshrink_backward (const Tensor &grad_out, Scalar lambd) const |
Tensor | rsqrt () const |
Tensor & | rsqrt_ () |
Tensor | select (int64_t dim, int64_t index) const |
Tensor | sigmoid () const |
Tensor & | sigmoid_ () |
Tensor | sin () const |
Tensor & | sin_ () |
Tensor | sinh () const |
Tensor & | sinh_ () |
Tensor | detach () const |
Tensor & | detach_ () |
int64_t | size (int64_t dim) const |
Tensor | slice (int64_t dim=0, int64_t start=0, int64_t end=9223372036854775807, int64_t step=1) const |
std::tuple< Tensor, Tensor > | slogdet () const |
Tensor | smm (const Tensor &mat2) const |
Tensor | softmax (int64_t dim, ScalarType dtype) const |
Tensor | softmax (int64_t dim) const |
std::vector< Tensor > | split (int64_t split_size, int64_t dim=0) const |
std::vector< Tensor > | split_with_sizes (IntArrayRef split_sizes, int64_t dim=0) const |
Tensor | squeeze () const |
Tensor | squeeze (int64_t dim) const |
Tensor & | squeeze_ () |
Tensor & | squeeze_ (int64_t dim) |
Tensor | sspaddmm (const Tensor &mat1, const Tensor &mat2, Scalar beta=1, Scalar alpha=1) const |
Tensor | stft (int64_t n_fft, c10::optional< int64_t > hop_length=c10::nullopt, c10::optional< int64_t > win_length=c10::nullopt, const Tensor &window={}, bool normalized=false, bool onesided=true) const |
int64_t | stride (int64_t dim) const |
Tensor | sum (ScalarType dtype) const |
Tensor | sum () const |
Tensor | sum (IntArrayRef dim, bool keepdim, ScalarType dtype) const |
Tensor | sum (IntArrayRef dim, bool keepdim=false) const |
Tensor | sum (IntArrayRef dim, ScalarType dtype) const |
Tensor | sum_to_size (IntArrayRef size) const |
Tensor | sqrt () const |
Tensor & | sqrt_ () |
Tensor | std (bool unbiased=true) const |
Tensor | std (IntArrayRef dim, bool unbiased=true, bool keepdim=false) const |
Tensor | prod (ScalarType dtype) const |
Tensor | prod () const |
Tensor | prod (int64_t dim, bool keepdim, ScalarType dtype) const |
Tensor | prod (int64_t dim, bool keepdim=false) const |
Tensor | prod (int64_t dim, ScalarType dtype) const |
Tensor | t () const |
Tensor & | t_ () |
Tensor | tan () const |
Tensor & | tan_ () |
Tensor | tanh () const |
Tensor & | tanh_ () |
Tensor | transpose (int64_t dim0, int64_t dim1) const |
Tensor & | transpose_ (int64_t dim0, int64_t dim1) |
Tensor | flip (IntArrayRef dims) const |
Tensor | roll (IntArrayRef shifts, IntArrayRef dims={}) const |
Tensor | rot90 (int64_t k=1, IntArrayRef dims={0, 1}) const |
Tensor | trunc () const |
Tensor & | trunc_ () |
Tensor | type_as (const Tensor &other) const |
Tensor | unsqueeze (int64_t dim) const |
Tensor & | unsqueeze_ (int64_t dim) |
Tensor | var (bool unbiased=true) const |
Tensor | var (IntArrayRef dim, bool unbiased=true, bool keepdim=false) const |
Tensor | view_as (const Tensor &other) const |
Tensor | where (const Tensor &condition, const Tensor &other) const |
Tensor | norm (c10::optional< Scalar > p, ScalarType dtype) const |
Tensor | norm (Scalar p=2) const |
Tensor | norm (c10::optional< Scalar > p, IntArrayRef dim, bool keepdim, ScalarType dtype) const |
Tensor | norm (c10::optional< Scalar > p, IntArrayRef dim, bool keepdim=false) const |
Tensor | clone () const |
Tensor & | resize_as_ (const Tensor &the_template) |
Tensor | pow (Scalar exponent) const |
Tensor & | zero_ () |
Tensor | sub (const Tensor &other, Scalar alpha=1) const |
Tensor & | sub_ (const Tensor &other, Scalar alpha=1) |
Tensor | sub (Scalar other, Scalar alpha=1) const |
Tensor & | sub_ (Scalar other, Scalar alpha=1) |
Tensor | addmm (const Tensor &mat1, const Tensor &mat2, Scalar beta=1, Scalar alpha=1) const |
Tensor & | addmm_ (const Tensor &mat1, const Tensor &mat2, Scalar beta=1, Scalar alpha=1) |
Tensor & | sparse_resize_ (IntArrayRef size, int64_t sparse_dim, int64_t dense_dim) |
Tensor & | sparse_resize_and_clear_ (IntArrayRef size, int64_t sparse_dim, int64_t dense_dim) |
Tensor | sparse_mask (SparseTensorRef mask) const |
Tensor | to_dense () const |
int64_t | sparse_dim () const |
int64_t | _dimI () const |
int64_t | dense_dim () const |
int64_t | _dimV () const |
int64_t | _nnz () const |
Tensor | coalesce () const |
bool | is_coalesced () const |
Tensor | _indices () const |
Tensor | _values () const |
Tensor & | _coalesced_ (bool coalesced) |
Tensor | indices () const |
Tensor | values () const |
int64_t | numel () const |
std::vector< Tensor > | unbind (int64_t dim=0) const |
Tensor | to_sparse (int64_t sparse_dim) const |
Tensor | to_sparse () const |
Tensor | to (const TensorOptions &options, bool non_blocking=false, bool copy=false) const |
Tensor | to (Device device, ScalarType dtype, bool non_blocking=false, bool copy=false) const |
Tensor | to (ScalarType dtype, bool non_blocking=false, bool copy=false) const |
Tensor | to (const Tensor &other, bool non_blocking=false, bool copy=false) const |
Scalar | item () const |
void * | data_ptr () const |
Tensor & | set_ (Storage source) |
Tensor & | set_ (Storage source, int64_t storage_offset, IntArrayRef size, IntArrayRef stride={}) |
Tensor & | set_ (const Tensor &source) |
Tensor & | set_ () |
bool | is_set_to (const Tensor &tensor) const |
Tensor & | masked_fill_ (const Tensor &mask, Scalar value) |
Tensor | masked_fill (const Tensor &mask, Scalar value) const |
Tensor & | masked_fill_ (const Tensor &mask, const Tensor &value) |
Tensor | masked_fill (const Tensor &mask, const Tensor &value) const |
Tensor & | masked_scatter_ (const Tensor &mask, const Tensor &source) |
Tensor | masked_scatter (const Tensor &mask, const Tensor &source) const |
Tensor | view (IntArrayRef size) const |
Tensor & | put_ (const Tensor &index, const Tensor &source, bool accumulate=false) |
Tensor & | index_add_ (int64_t dim, const Tensor &index, const Tensor &source) |
Tensor | index_add (int64_t dim, const Tensor &index, const Tensor &source) const |
Tensor & | index_fill_ (int64_t dim, const Tensor &index, Scalar value) |
Tensor | index_fill (int64_t dim, const Tensor &index, Scalar value) const |
Tensor & | index_fill_ (int64_t dim, const Tensor &index, const Tensor &value) |
Tensor | index_fill (int64_t dim, const Tensor &index, const Tensor &value) const |
Tensor & | scatter_ (int64_t dim, const Tensor &index, const Tensor &src) |
Tensor | scatter (int64_t dim, const Tensor &index, const Tensor &src) const |
Tensor & | scatter_ (int64_t dim, const Tensor &index, Scalar value) |
Tensor | scatter (int64_t dim, const Tensor &index, Scalar value) const |
Tensor & | scatter_add_ (int64_t dim, const Tensor &index, const Tensor &src) |
Tensor | scatter_add (int64_t dim, const Tensor &index, const Tensor &src) const |
Tensor & | lt_ (Scalar other) |
Tensor & | lt_ (const Tensor &other) |
Tensor & | gt_ (Scalar other) |
Tensor & | gt_ (const Tensor &other) |
Tensor & | le_ (Scalar other) |
Tensor & | le_ (const Tensor &other) |
Tensor & | ge_ (Scalar other) |
Tensor & | ge_ (const Tensor &other) |
Tensor & | eq_ (Scalar other) |
Tensor & | eq_ (const Tensor &other) |
Tensor & | ne_ (Scalar other) |
Tensor & | ne_ (const Tensor &other) |
Tensor | __and__ (Scalar other) const |
Tensor | __and__ (const Tensor &other) const |
Tensor & | __iand__ (Scalar other) |
Tensor & | __iand__ (const Tensor &other) |
Tensor | __or__ (Scalar other) const |
Tensor | __or__ (const Tensor &other) const |
Tensor & | __ior__ (Scalar other) |
Tensor & | __ior__ (const Tensor &other) |
Tensor | __xor__ (Scalar other) const |
Tensor | __xor__ (const Tensor &other) const |
Tensor & | __ixor__ (Scalar other) |
Tensor & | __ixor__ (const Tensor &other) |
Tensor | __lshift__ (Scalar other) const |
Tensor | __lshift__ (const Tensor &other) const |
Tensor & | __ilshift__ (Scalar other) |
Tensor & | __ilshift__ (const Tensor &other) |
Tensor | __rshift__ (Scalar other) const |
Tensor | __rshift__ (const Tensor &other) const |
Tensor & | __irshift__ (Scalar other) |
Tensor & | __irshift__ (const Tensor &other) |
Tensor & | lgamma_ () |
Tensor & | atan2_ (const Tensor &other) |
Tensor & | tril_ (int64_t diagonal=0) |
Tensor & | triu_ (int64_t diagonal=0) |
Tensor & | digamma_ () |
Tensor & | polygamma_ (int64_t n) |
Tensor & | erfinv_ () |
Tensor & | frac_ () |
Tensor & | renorm_ (Scalar p, int64_t dim, Scalar maxnorm) |
Tensor & | reciprocal_ () |
Tensor & | neg_ () |
Tensor & | pow_ (Scalar exponent) |
Tensor & | pow_ (const Tensor &exponent) |
Tensor & | lerp_ (const Tensor &end, Scalar weight) |
Tensor & | lerp_ (const Tensor &end, const Tensor &weight) |
Tensor & | sign_ () |
Tensor & | fmod_ (Scalar other) |
Tensor & | fmod_ (const Tensor &other) |
Tensor & | remainder_ (Scalar other) |
Tensor & | remainder_ (const Tensor &other) |
Tensor & | addbmm_ (const Tensor &batch1, const Tensor &batch2, Scalar beta=1, Scalar alpha=1) |
Tensor | addbmm (const Tensor &batch1, const Tensor &batch2, Scalar beta=1, Scalar alpha=1) const |
Tensor & | addcmul_ (const Tensor &tensor1, const Tensor &tensor2, Scalar value=1) |
Tensor & | addcdiv_ (const Tensor &tensor1, const Tensor &tensor2, Scalar value=1) |
Tensor & | random_ (int64_t from, int64_t to, Generator *generator=nullptr) |
Tensor & | random_ (int64_t to, Generator *generator=nullptr) |
Tensor & | random_ (Generator *generator=nullptr) |
Tensor & | uniform_ (double from=0, double to=1, Generator *generator=nullptr) |
Tensor & | normal_ (double mean=0, double std=1, Generator *generator=nullptr) |
Tensor & | cauchy_ (double median=0, double sigma=1, Generator *generator=nullptr) |
Tensor & | log_normal_ (double mean=1, double std=2, Generator *generator=nullptr) |
Tensor & | exponential_ (double lambd=1, Generator *generator=nullptr) |
Tensor & | geometric_ (double p, Generator *generator=nullptr) |
Tensor | diag (int64_t diagonal=0) const |
Tensor | cross (const Tensor &other, int64_t dim=-1) const |
Tensor | triu (int64_t diagonal=0) const |
Tensor | tril (int64_t diagonal=0) const |
Tensor | trace () const |
Tensor | ne (Scalar other) const |
Tensor | ne (const Tensor &other) const |
Tensor | eq (Scalar other) const |
Tensor | eq (const Tensor &other) const |
Tensor | ge (Scalar other) const |
Tensor | ge (const Tensor &other) const |
Tensor | le (Scalar other) const |
Tensor | le (const Tensor &other) const |
Tensor | gt (Scalar other) const |
Tensor | gt (const Tensor &other) const |
Tensor | lt (Scalar other) const |
Tensor | lt (const Tensor &other) const |
Tensor | take (const Tensor &index) const |
Tensor | index_select (int64_t dim, const Tensor &index) const |
Tensor | masked_select (const Tensor &mask) const |
Tensor | nonzero () const |
Tensor | gather (int64_t dim, const Tensor &index, bool sparse_grad=false) const |
Tensor | addcmul (const Tensor &tensor1, const Tensor &tensor2, Scalar value=1) const |
Tensor | addcdiv (const Tensor &tensor1, const Tensor &tensor2, Scalar value=1) const |
std::tuple< Tensor, Tensor > | gels (const Tensor &A) const |
std::tuple< Tensor, Tensor > | trtrs (const Tensor &A, bool upper=true, bool transpose=false, bool unitriangular=false) const |
std::tuple< Tensor, Tensor > | symeig (bool eigenvectors=false, bool upper=true) const |
std::tuple< Tensor, Tensor > | eig (bool eigenvectors=false) const |
std::tuple< Tensor, Tensor, Tensor > | svd (bool some=true, bool compute_uv=true) const |
Tensor | cholesky (bool upper=false) const |
Tensor | cholesky_solve (const Tensor &input2, bool upper=false) const |
std::tuple< Tensor, Tensor > | solve (const Tensor &A) const |
Tensor | potri (bool upper=true) const |
std::tuple< Tensor, Tensor > | pstrf (bool upper=true, Scalar tol=-1) const |
std::tuple< Tensor, Tensor > | qr () const |
std::tuple< Tensor, Tensor > | geqrf () const |
Tensor | orgqr (const Tensor &input2) const |
Tensor | ormqr (const Tensor &input2, const Tensor &input3, bool left=true, bool transpose=false) const |
std::tuple< Tensor, Tensor > | btrifact (bool pivot=true) const |
std::tuple< Tensor, Tensor, Tensor > | btrifact_with_info (bool pivot=true) const |
Tensor | btrisolve (const Tensor &LU_data, const Tensor &LU_pivots) const |
Tensor | multinomial (int64_t num_samples, bool replacement=false, Generator *generator=nullptr) const |
Tensor | lgamma () const |
Tensor | digamma () const |
Tensor | polygamma (int64_t n) const |
Tensor | erfinv () const |
Tensor | frac () const |
Tensor | dist (const Tensor &other, Scalar p=2) const |
Tensor | reciprocal () const |
Tensor | neg () const |
Tensor | atan2 (const Tensor &other) const |
Tensor | lerp (const Tensor &end, Scalar weight) const |
Tensor | lerp (const Tensor &end, const Tensor &weight) const |
Tensor | histc (int64_t bins=100, Scalar min=0, Scalar max=0) const |
Tensor | sign () const |
Tensor | fmod (Scalar other) const |
Tensor | fmod (const Tensor &other) const |
Tensor | remainder (Scalar other) const |
Tensor | remainder (const Tensor &other) const |
Tensor | min (const Tensor &other) const |
Tensor | min () const |
Tensor | max (const Tensor &other) const |
Tensor | max () const |
Tensor | median () const |
std::tuple< Tensor, Tensor > | sort (int64_t dim=-1, bool descending=false) const |
Tensor | argsort (int64_t dim=-1, bool descending=false) const |
std::tuple< Tensor, Tensor > | topk (int64_t k, int64_t dim=-1, bool largest=true, bool sorted=true) const |
Tensor | all () const |
Tensor | any () const |
Tensor | renorm (Scalar p, int64_t dim, Scalar maxnorm) const |
Tensor | unfold (int64_t dimension, int64_t size, int64_t step) const |
bool | equal (const Tensor &other) const |
Tensor | pow (const Tensor &exponent) const |
Tensor | alias () const |
Tensor | to (caffe2::TypeMeta type_meta, bool non_blocking=false, bool copy=false) const |
Tensor | to (Device device, caffe2::TypeMeta type_meta, bool non_blocking=false, bool copy=false) const |
template<typename F , typename... Args> | |
auto | m (F func, Args &&...params) const -> decltype(func(*this, std::forward< Args >(params)...)) |
Tensor (c10::intrusive_ptr< TensorImpl, UndefinedTensorImpl > tensor_impl) | |
Tensor (const Tensor &)=default | |
Tensor (Tensor &&)=default | |
Tensor (C10Tensor tensor) | |
operator C10Tensor () const & | |
operator C10Tensor ()&& | |
int64_t | dim () const |
int64_t | storage_offset () const |
TensorImpl * | unsafeGetTensorImpl () const |
TensorImpl * | unsafeReleaseTensorImpl () |
const c10::intrusive_ptr< TensorImpl, UndefinedTensorImpl > & | getIntrusivePtr () const |
bool | defined () const |
void | reset () |
Tensor & | operator= (const Tensor &x)& |
Tensor & | operator= (Tensor &&x)& |
Tensor & | operator= (Scalar v)&& |
Tensor & | operator= (const Tensor &)&& |
Tensor & | operator= (Tensor &&)&& |
bool | is_same (const Tensor &other) const noexcept |
size_t | use_count () const noexcept |
size_t | weak_use_count () const noexcept |
const char * | toString () const |
IntArrayRef | sizes () const |
IntArrayRef | strides () const |
int64_t | ndimension () const |
bool | is_contiguous () const |
size_t | nbytes () const |
size_t | itemsize () const |
size_t | element_size () const |
Type & | type () const |
TensorTypeId | type_id () const |
ScalarType | scalar_type () const |
bool | has_storage () const |
const Storage & | storage () const |
bool | is_alias_of (const at::Tensor &other) const |
Tensor | toType (const Type &t, bool non_blocking=false) const |
Tensor & | copy_ (const Tensor &src, bool non_blocking=false) |
Tensor | toType (ScalarType t) const |
Tensor | toBackend (Backend b) const |
bool | is_variable () const noexcept |
Returns true if the Tensor is actually a torch::autograd::Variable . More... | |
Layout | layout () const noexcept |
Returns a Tensor 's layout. Defined in Type.h. | |
caffe2::TypeMeta | dtype () const noexcept |
Returns a Tensor 's dtype (TypeMeta ). Defined in TensorMethods.h. | |
Device | device () const |
Returns a Tensor 's device. | |
int64_t | get_device () const |
Returns a Tensor 's device index. | |
bool | is_cuda () const |
Returns if a Tensor has CUDA backend. | |
bool | is_hip () const |
Returns if a Tensor has HIP backend. | |
bool | is_sparse () const |
Returns if a Tensor has sparse backend. | |
TensorOptions | options () const |
Returns the TensorOptions corresponding to this Tensor . More... | |
template<typename T > | |
T * | data () const |
template<typename T > | |
T | item () const |
void | print () const |
template<typename T , size_t N> | |
TensorAccessor< T, N > | accessor () const & |
template<typename T , size_t N> | |
TensorAccessor< T, N > | accessor ()&&=delete |
template<typename T , size_t N, template< typename U > class PtrTraits = DefaultPtrTraits, typename index_t = int64_t> | |
PackedTensorAccessor< T, N, PtrTraits, index_t > | packed_accessor () const & |
template<typename T , size_t N, template< typename U > class PtrTraits = DefaultPtrTraits, typename index_t = int64_t> | |
PackedTensorAccessor< T, N > | packed_accessor ()&&=delete |
Tensor | operator- () const |
Tensor & | operator+= (const Tensor &other) |
Tensor & | operator+= (Scalar other) |
Tensor & | operator-= (const Tensor &other) |
Tensor & | operator-= (Scalar other) |
Tensor & | operator*= (const Tensor &other) |
Tensor & | operator*= (Scalar other) |
Tensor & | operator/= (const Tensor &other) |
Tensor & | operator/= (Scalar other) |
Tensor | operator[] (Scalar index) const |
Tensor | operator[] (Tensor index) const |
Tensor | operator[] (int64_t index) const |
Tensor | cpu () const |
Tensor | cuda () const |
Tensor | hip () const |
Tensor & | set_requires_grad (bool requires_grad) |
bool | requires_grad () const |
Tensor & | grad () |
const Tensor & | grad () const |
void | set_data (Tensor new_data) |
void | backward (c10::optional< Tensor > gradient=c10::nullopt, bool keep_graph=false, bool create_graph=false) |
Computes the gradient of current tensor w.r.t. graph leaves. | |
Data Fields | |
std::string | name |
Variable | grad_ |
std::shared_ptr< Function > | grad_fn_ |
std::weak_ptr< Function > | grad_accumulator_ |
VariableVersion | version_counter_ |
std::vector< std::shared_ptr< FunctionPreHook > > | hooks_ |
bool | requires_grad_ |
bool | is_view_ |
uint32_t | output_nr_ |
PyObject * | pyobj_ = nullptr |
std::mutex | mutex_ |
Variable | base_ |
The base Variable (never a view). | |
uint32_t | attr_version |
The value of the version_counter at the time grad_fn was created. More... | |
at::Tensor | data_ |
The underlying data tensor for this Variable. More... | |
Friends | |
Variable | make_variable_view (Variable base, at::Tensor data, bool is_differentiable, bool allow_tensor_metadata_change, Edge gradient_edge) |
Creates a Variable that is a view of another (base) variable. More... | |
Variable | make_variable (at::Tensor data, bool requires_grad, bool allow_tensor_metadata_change) |
Creates a Variable from the given Tensor , copying its underlying TensorImpl . More... | |
Variable | make_variable_consuming (at::Tensor data, bool requires_grad, bool allow_tensor_metadata_change) |
Creates a Variable from the given Tensor , consuming its underlying TensorImpl . More... | |
Variable | make_variable (at::Tensor data, Edge gradient_edge, bool allow_tensor_metadata_change) |
Creates a Variable from the given Tensor and specify a gradient_edge , i.e. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from at::Tensor | |
static Tensor | wrap_tensor_impl (c10::intrusive_ptr< TensorImpl, UndefinedTensorImpl > tensor_impl) |
static Tensor | wrap_tensor_impl (c10::intrusive_ptr< TensorImpl, UndefinedTensorImpl > tensor_impl) |
Protected Member Functions inherited from at::Tensor | |
void | enforce_invariants () |
void | enforce_invariants () |
Protected Attributes inherited from at::Tensor | |
c10::intrusive_ptr< TensorImpl, UndefinedTensorImpl > | impl_ |
A Variable
augments a Tensor
with the ability to interact in our autograd machinery.
NOTE [ Autograd View Variables ].
Each Variable
has one unique AutogradMeta
struct, which stores autograd metadata fields that are necessary for tracking the Variable's autograd history.
Conceptually, Variable
s travel along Edge
s between Function
s in the autograd graph. A Variable
can either be a leaf, like a weight in a neural network, or an interior variable, when it is the result of an operation between variables. Every Variable
also stores another Variable
called its grad
(gradient). If the variable is a leaf, its gradient will be accumulated into this variable.
Gradient Edges
Another major feature of Variable
s are versions. Versions are incremented when an in-place mutation of a variable occurs. Versions are useful when constructing SavedVariable
s, which take a snapshot of a Variable
at a certain version. You can retrieve a Variable
's version through its current_version()
method.
Views
Variable
inherits from Tensor
and thus its API is a superset of that of Tensor
. This means you can perform all the usual mathematical and other operations you can perform on Tensor
s also on Variable
s. Furthermore, Variable
and Tensor
actually convert implicitly between each other. You can thus call functions defined on Tensor
s also with Variable
s. For this, the Variable
class allows implicit construction from Tensor
. It is the responsibility of calling code to ensure that this constructor is invoked only when the Tensor
's dynamic type is actually Variable
. Most notably, it is not correct to construct a brand new Variable
from a Tensor
using this constructor. To do so, you must use the make_variable
free function instead. To create a view variable, use make_variable_view
. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many operations return Variable that shares storage with an input Variable. The returned Variable is called a view Variable on the input base Variable.
In PyTorch, we have two types of views: differentiable views, and non-differentiable views. In either type, to support proper version checking, the base and view Variables must always share the same version_counter.
Differentiable Views
In certain cases, although function outputs share storage with inputs, they will never require gradient history tracking. Instead of registering the view relation via DifferentiableViewImpl in autograd, the views will be using usual Variable::Impl and just share the version counters with the base Variables. Such views include:
sparse_tensor.indices()
is a integral view on a (possibly) floating point tensor. See top of derivatives.yaml
on how to specify that outputs of a function are non-differentiable. These are called non-differentiable views as the gradients do not flow through the view relation. Relevant logic for non-differentiable views is implemented in make_variable_view below, and wrap_output of gen_variable_type.py. Definition at line 85 of file variable.h.
|
inline |
Returns the Variable
that this Variable
is a view of.
If this Variable
is not a view, throw a std::runtime_error
.
Definition at line 738 of file variable.h.
|
inlinenoexcept |
Retrieves the current value of the Variable
's version counter.
Equivalent to calling version_counter().current_version()
.
Definition at line 707 of file variable.h.
|
inline |
Returns a copy of this Variable
that is detached from its autograd graph and has a blank version.
This method is OK to call if the Variable
is a view. NOTE: Previously, if we change the tensor metadata (e.g. sizes / strides / storage / storage_offset) of a tensor created from detach()
, those metadata in the original tensor will also be updated. However, the new behavior is that those metadata changes to the detached tensor will not update the original tensor anymore, and in the detach()
function we need to set allow_tensor_metadata_change_
to false to make such changes explicitly illegal, in order to prevent users from changing metadata of the detached tensor and expecting the original tensor to also be updated.
Definition at line 673 of file variable.h.
void torch::autograd::Variable::detach_ | ( | ) |
std::shared_ptr< Function > torch::autograd::Variable::grad_accumulator | ( | ) | const |
Gets the gradient accumulator of the Variable
if it has one, or else create one on the fly and return it.
Definition at line 111 of file variable.cpp.
const std::shared_ptr< Function > & torch::autograd::Variable::grad_fn | ( | ) | const |
Gets the gradient function of the Variable
.
If this is a leaf variable, the pointer returned will be null.
For View Variables: Gets the up-to-date grad_fn. If the shared data or base was modified, we re-create the grad_fn to express the up-to-date view relationship between this and the base Variable.
Definition at line 201 of file variable.cpp.
|
inline |
Returns the "canonical" gradient edge of this Variable
, i.e.
either the gradient function if this is an interior Variable
, or the gradient accumulator otherwise. If the Variable
is interior, the returned Edge
will store the input index of the Function
to which this variable is connected in its input_nr
field. For leaves, the input_nr
is always zero. Note that set_gradient_edge
and gradient_edge
are not symmetric. You must use set_gradient_edge
to set the grad_fn
and set_grad_accumulator
to set the accumulator.
Definition at line 195 of file variable.h.
|
inlinenoexcept |
Returns the input index of the gradient Function
to which this Variable
is connected.
Note: input indexes of the gradient Function
correspond to output indexes of the corresponding forward Function
.
Definition at line 687 of file variable.h.
void torch::autograd::Variable::rebase_history | ( | Edge | gradient_edge | ) |
Update the grad_fn
of an existing Variable.
Called after in-place modifications.
For View Variables: Called after in-place modifications. Modifies the grad_fn of the base Variable.
Definition at line 236 of file variable.cpp.
|
inline |
Sets the Tensor
held by this Variable
to the one supplied.
It is rarely necessary to call this; it's used, for example, when a non-sparse gradient gets added to a sparse gradient, requiring the type of the gradient Variable
to become non-sparse.
Definition at line 678 of file variable.h.
|
inline |
Set the gradient accumulator of the Variable
.
This is only applicable to leaf variables. Interior variables should call set_gradient_edge()
.
Definition at line 664 of file variable.h.
|
inlinenoexcept |
Set the gradient edge – i.e.
grad_fn
and input_nr
– of the Variable
. NOTE: This will always set the grad_fn
, even if this is a leaf variable, and never the grad_accumulator
. For the latter, use set_grad_accumulator
. This allows late construction of an interior Variable
.
Definition at line 682 of file variable.h.
|
inlineoverride |
Sets the requires_grad
property of Variable
.
This should be true for leaf variables that want to accumulate gradients, and false for all other variables.
Definition at line 361 of file variable.h.
|
inline |
Attempts to get a pointer to the gradient accumulator of the Variable
, if it still exists.
If the gradient accumulator function has been destroyed, returns a nullptr
.
Definition at line 669 of file variable.h.
|
friend |
Creates a Variable
from the given Tensor
, copying its underlying TensorImpl
.
requires_grad
should be set only for leaves, and determines whether the Variable
will accumulate gradients. NOTE: data
must not be a Variable
already. Its dynamic type must be Tensor
.
Definition at line 577 of file variable.h.
|
friend |
Creates a Variable
from the given Tensor
and specify a gradient_edge
, i.e.
a (function, input_nr) pair specifying the function in the autograd graph, and what particular input of that function, this variable is connected to.
Definition at line 610 of file variable.h.
|
friend |
Creates a Variable
from the given Tensor
, consuming its underlying TensorImpl
.
This is intended to be used from functions that immediately create a Tensor
, convert it to a Variable
, and then free it; it has been found to decrease the overhead of those operations, in some situations. The comments about requires_grad
and data
on the above version also apply to this one.
Definition at line 594 of file variable.h.
|
friend |
Creates a Variable
that is a view of another (base) variable.
The gradient_edge
is an optional (gradient_function, input_number) pair. is_differentiable
is a bool that specifies whether this view is differentiable, i.e., whether the relation should be tracked by autograd. See NOTE [ Autograd View Variables ] for details.
Setting allow_tensor_metadata_change_
to false by default would unnecessarily prevent those changes from happening and is undesirable.
Differentiable view. Track history with DifferentiableViewImpl.
Non-differentiable view. Just share version counter.
Definition at line 547 of file variable.h.
uint32_t torch::autograd::Variable::attr_version |
The value of the version_counter at the time grad_fn was created.
The grad_fn field is stale if attr_version != version_counter.current_version().
Definition at line 393 of file variable.h.
at::Tensor torch::autograd::Variable::data_ |
The underlying data tensor for this Variable.
This field will be removed once VariableImpl and TensorImpl are merged.
Definition at line 442 of file variable.h.