Tensor class represents a tensor.
This is framework-agnostic, i.e. is fine for TensorFlow, PyTorch, or any other framework.
(Earlier, this was the class
Data in RETURNN, and
Data is now an alias for this class.)
This class is to describe a tensor,
i.e. its shape and properties like
whether we should consider it sparse data (i.e. it represents indices).
Each dimension is described by
This is used in
TFNetwork to describe the dataset external data (
as well as in every layer’s output and in many other parts of the code.
See Tensor and Dim.
This is designed in a way that is efficient for eager-mode execution such as PyTorch, but at the same time compatible with older RETURNN code.
Discussion on the move from loosely TF-specific
Data to framework-agnostic
- class returnn.tensor.tensor.Tensor(name: str, dims: ~typing.Sequence[~returnn.tensor.dim.Dim] | None = None, dtype: str | None = None, *, sparse_dim: ~returnn.tensor.dim.Dim | None = None, feature_dim: ~returnn.tensor.dim.Dim | None = None, feature_dim_axis: int | ~returnn.util.basic.NotSpecified | None = <class 'returnn.util.basic.NotSpecified'>, raw_tensor: ~returnn.tensor.tensor.RawTensorType | None = None, version: int | None = None, **kwargs)#
Represents a tensor, in a frame-agnostic way. See the module docstring.
dims – the shape, where each dimension is described by a
dtype – e.g. “float32” or “int64”
sparse_dim – when the values are indices into some dimension, this is the dimension. You can also interpret the whole tensor as a sparse representation of a dense one-hot tensor, where this sparse_dim becomes the additional dense dimension.
raw_tensor – the raw tensor, e.g. numpy array, TF tensor, or PyTorch tensor
behavior version just for Tensor. If not specified, and dims is None (old code), it uses version 1. - v1: the old behavior of Data. Specifically, time_dim_axis and feature_dim_axis are used
and automatically inferred when not specified.
v2: time_dim_axis, feature_dim_axis are None by default.
kwargs – see
- size_dtype = 'int32'#
- name: str#
- dtype: str#
- version: int#
- property dims_set: Set[Dim]#
set of dim tags. in all high-level code, the order of dims is irrelevant. The order must not play a role (RETURNN principles: https://github.com/rwth-i6/returnn/wiki/RETURNN-principles). Note that we do not include any implicit dims here. Also see
- property raw_tensor: RawTensorType | None#
- property feature_dim: Dim | None#
self.dims[self.feature_dim_axis] or None. See https://github.com/rwth-i6/returnn/issues/1273 for some discussion.
- property device: str | None#