tensorflow::Tensor
#include <tensor.h>Представляет собой n-мерный массив значений.
Краткое содержание
Конструкторы и Деструкторы | |
|---|---|
Tensor () Создает одномерный тензор типа float, состоящий из 0 элементов. | |
Tensor (DataType type, const TensorShape & shape) | |
Tensor (Allocator *a, DataType type, const TensorShape & shape) Создает тензор с заданным type и shape входных данных, используя распределитель памяти a для выделения базового буфера. | |
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr) Создает тензор с заданным type и shape входных данных, используя распределитель памяти a и указанный атрибут "allocation_attr" для выделения базового буфера. | |
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf) Создает тензор с заданным типом данных, формой и буфером (buf). | |
Tensor (DataType type) Создает пустой тензор заданного типа данных. | |
Tensor (float scalar_value) | |
Tensor (double scalar_value) | |
Tensor (int32 scalar_value) | |
Tensor (uint32 scalar_value) | |
Tensor (uint16 scalar_value) | |
Tensor (uint8 scalar_value) | |
Tensor (int16 scalar_value) | |
Tensor (int8 scalar_value) | |
Tensor (tstring scalar_value) | |
Tensor (complex64 scalar_value) | |
Tensor (complex128 scalar_value) | |
Tensor (int64 scalar_value) | |
Tensor (uint64 scalar_value) | |
Tensor (bool scalar_value) | |
Tensor (qint8 scalar_value) | |
Tensor (quint8 scalar_value) | |
Tensor (qint16 scalar_value) | |
Tensor (quint16 scalar_value) | |
Tensor (qint32 scalar_value) | |
Tensor (bfloat16 scalar_value) | |
Tensor (Eigen::half scalar_value) | |
Tensor (ResourceHandle scalar_value) | |
Tensor (const char *scalar_value) | |
Tensor (const Tensor & other) Конструктор копирования. | |
Tensor ( Tensor && other) Конструктор перемещения. | |
~Tensor () |
Общественные функции | |
|---|---|
AllocatedBytes () const | size_t |
AsProtoField (TensorProto *proto) const | void Заполняет proto содержимым *this тензора. |
AsProtoTensorContent (TensorProto *proto) const | void |
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape) | Status Скопируйте другой тензор в этот тензор, измените его форму и переинтерпретируйте тип данных буфера. |
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT | bool Скопируйте другой тензор в этот тензор и измените его форму. |
DebugString (int num_values) const | string Удобочитаемое описание тензора, подходящее для отладки. |
DebugString () const | string |
DeviceSafeDebugString () const | string |
FillDescription (TensorDescription *description) const | void Заполните протокол TensorDescription метаданными о тензоре, которые полезны для мониторинга и отладки. |
FromProto (const TensorProto & other) TF_MUST_USE_RESULT | bool Проанализируйте other и постройте тензор. |
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT | bool |
IsAligned () const | bool Возвращает true только в том случае, если данный тензор выровнен. |
IsInitialized () const | bool При необходимости, инициализирован ли этот тензор ? |
IsSameSize (const Tensor & b) const | bool |
NumElements () const | int64 Вспомогательный инструмент для доступа к форме тензора. |
RefCountIsOne () const | bool |
SharesBufferWith (const Tensor & b) const | bool |
Slice (int64 dim0_start, int64 dim0_limit) const | Разрежьте этот тензор вдоль первого измерения. |
SubSlice (int64 index) const | Выберите подсечку из этого тензора вдоль первого измерения. |
SummarizeValue (int64 max_entries, bool print_v2) const | string Преобразовать первые значения max_entries в *this в строку. |
TotalBytes () const | size_t Возвращает приблизительное значение объема памяти, используемой этим тензором. |
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape) | void Аналогично BitcastFrom, но проверка завершается неудачей, если не выполнены какие-либо предварительные условия. |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >:: Tensor Верните данные тензора в объект Eigen::Tensor с новой формой, указанной в new_sizes , и преобразуйте его в новый тип данных T |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const | TTypes< T, NDIMS >::ConstTensor Верните данные тензора в объект Eigen::Tensor с новой формой, указанной в new_sizes , и преобразуйте его в новый тип данных T |
bit_casted_tensor () | TTypes< T, NDIMS >:: Tensor Верните данные тензора в объект Eigen::Tensor того же размера, но с побитовым приведением к указанному типу данных T |
bit_casted_tensor () const | TTypes< T, NDIMS >::ConstTensor Верните данные тензора в объект Eigen::Tensor того же размера, но с побитовым приведением к указанному типу данных T |
data () const | void * |
dim_size (int d) const | int64 Вспомогательный инструмент для доступа к форме тензора. |
dims () const | int Вспомогательный инструмент для доступа к форме тензора. |
dtype () const | DataType Возвращает тип данных. |
flat () | TTypes< T >::Flat Возвращает тензорные данные в виде объекта Eigen::Tensor указанного типа данных и заданной формы. |
flat () const | TTypes< T >::ConstFlat |
flat_inner_dims () | TTypes< T, NDIMS >:: Tensor Возвращает данные в виде объекта Eigen::Tensor с размерами NDIMS, объединяя все измерения Tensor , кроме последнего NDIMS-1, в первое измерение результата. |
flat_inner_dims () const | TTypes< T, NDIMS >::ConstTensor |
flat_inner_outer_dims (int64 begin) | TTypes< T, NDIMS >:: Tensor |
flat_inner_outer_dims (int64 begin) const | TTypes< T, NDIMS >::ConstTensor |
flat_outer_dims () | TTypes< T, NDIMS >:: Tensor Возвращает данные в виде объекта Eigen::Tensor с размерами NDIMS, объединяя все измерения Tensor , кроме первого NDIMS-1, в последнее измерение результата. |
flat_outer_dims () const | TTypes< T, NDIMS >::ConstTensor |
matrix () | TTypes< T >::Matrix |
matrix () const | TTypes< T >::ConstMatrix |
operator= (const Tensor & other) | Tensor & Оператор присваивания. Этот тензор использует общую память с другими тензорами. |
operator= ( Tensor && other) | Tensor & Оператор перемещения. Подробности см. в конструкторе перемещения. |
reinterpret_last_dimension () | TTypes< T, NDIMS >:: Tensor Верните данные тензора в объект Eigen::Tensor в котором элементы последнего измерения преобразованы в отдельные элементы большего типа. |
reinterpret_last_dimension () const | TTypes< T, NDIMS >::ConstTensor Верните данные тензора в объект Eigen::Tensor в котором элементы последнего измерения преобразованы в отдельные элементы большего типа. |
scalar () | TTypes< T >::Scalar |
scalar () const | TTypes< T >::ConstScalar |
shape () const | const TensorShape & Возвращает форму тензора. |
shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >:: Tensor |
shaped (gtl::ArraySlice< int64 > new_sizes) const | TTypes< T, NDIMS >::ConstTensor |
tensor () | TTypes< T, NDIMS >:: Tensor |
tensor () const | TTypes< T, NDIMS >::ConstTensor |
tensor_data () const | StringPiece Возвращает объект StringPiece , отображающий буфер текущего тензора. |
unaligned_flat () | TTypes< T >::UnalignedFlat |
unaligned_flat () const | TTypes< T >::UnalignedConstFlat |
unaligned_shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >::UnalignedTensor |
unaligned_shaped (gtl::ArraySlice< int64 > new_sizes) const | TTypes< T, NDIMS >::UnalignedConstTensor |
vec () | TTypes< T >::Vec Возвращает данные тензора в виде объекта Eigen::Tensor содержащего тип и размеры этого Tensor . |
vec () const | TTypes< T >::ConstVec Константные версии всех вышеперечисленных методов. |
Общественные функции
AllocatedBytes
size_t AllocatedBytes() const
AsProtoField
void AsProtoField( TensorProto *proto ) const
Заполняет proto содержимым *this тензора.
AsProtoField() заполняет повторяющееся поле для proto.dtype() , а AsProtoTensorContent() кодирует содержимое proto.tensor_content() в компактной форме.
AsProtoTensorContent
void AsProtoTensorContent( TensorProto *proto ) const
BitcastFrom
Status BitcastFrom( const Tensor & other, DataType dtype, const TensorShape & shape )
Скопируйте другой тензор в этот тензор, измените его форму и переинтерпретируйте тип данных буфера.
Если возвращается значение Status::OK(), то оба тензора теперь используют одно и то же базовое хранилище.
Для этого вызова требуется, чтобы other тензор и заданный тип и форма были «совместимы» (то есть занимали одинаковое количество байтов).
Конкретно:
shape.num_elements() * DataTypeSize(type)
должно быть равно
other.num_elements() * DataTypeSize(other.dtype())
Кроме того, для работы этой функции требуется:
- DataTypeSize(other.dtype()) != 0
- DataTypeSize(type) != 0
Если какое-либо из требований не выполнено, возвращается значение errors::InvalidArgument.
Копировать из
bool CopyFrom( const Tensor & other, const TensorShape & shape ) TF_MUST_USE_RESULT
Скопируйте другой тензор в этот тензор и измените его форму.
Этот тензор использует то же хранилище, что и другие тензоры. Возвращает true , если other.shape() имеет такое же количество элементов заданной shape .
DebugString
string DebugString( int num_values ) const
Удобочитаемое описание тензора, подходящее для отладки.
DebugString
string DebugString() const
DeviceSafeDebugString
string DeviceSafeDebugString() const
FillDescription
void FillDescription( TensorDescription *description ) const
Заполните протокол TensorDescription метаданными о тензоре, которые полезны для мониторинга и отладки.
FromProto
bool FromProto( const TensorProto & other ) TF_MUST_USE_RESULT
Проанализируйте other и постройте тензор.
Возвращает true , если разбор проходит успешно. Если разбор не удается, состояние *this остается неизменным.
FromProto
bool FromProto( Allocator *a, const TensorProto & other ) TF_MUST_USE_RESULT
IsAligned
bool IsAligned() const
Возвращает true только в том случае, если данный тензор выровнен.
IsInitialized
bool IsInitialized() const
При необходимости, инициализирован ли этот тензор ?
Тензоры, не содержащие элементов, всегда считаются инициализированными, даже если им никогда не присваивались значения и для них не выделена память.
IsSameSize
bool IsSameSize( const Tensor & b ) const
Числовые элементы
int64 NumElements() const
Вспомогательный инструмент для доступа к форме тензора.
RefCountIsOne
bool RefCountIsOne() const
SharesBufferWith
bool SharesBufferWith( const Tensor & b ) const
Ломтик
Tensor Slice( int64 dim0_start, int64 dim0_limit ) const
Разрежьте этот тензор вдоль первого измерения.
То есть, возвращаемый тензор удовлетворяет условию returned[i, ...] == this[dim0_start + i, ...]. Возвращаемый тензор использует тот же буфер тензоров, что и этот тензор.
ПРИМЕЧАНИЕ: Возвращаемый тензор может не удовлетворять тем же требованиям выравнивания, что и данный тензор, в зависимости от его формы. Вызывающая сторона должна проверить выравнивание возвращаемого тензора перед вызовом определенных методов, требующих выравнивания (например, flat() , tensor() ).
ПРИМЕЧАНИЕ: При подаче на вход N-мерного тензора этот метод возвращает тензор также с N измерениями. Если вы хотите выбрать подтензор, см. SubSlice.
ТРЕБУЕТСЯ: dims() >= 1 ТРЕБУЕТСЯ: 0 <= dim0_start <= dim0_limit <= dim_size(0)
SubSlice
Tensor SubSlice( int64 index ) const
Выберите подсечку из этого тензора вдоль первого измерения.
При подаче на вход N-мерного тензора этот метод возвращает тензор с N-1 измерениями, где возвращаемый тензор представляет собой подсрез входного тензора вдоль первого измерения. N-1 измерения возвращаемого тензора — это последние N-1 измерения входного тензора.
ПРИМЕЧАНИЕ: Возвращаемый тензор может не удовлетворять тем же требованиям выравнивания, что и данный тензор, в зависимости от его формы. Вызывающая сторона должна проверить выравнивание возвращаемого тензора перед вызовом определенных методов, требующих выравнивания (например, flat() , tensor() ).
ТРЕБУЕТСЯ: dims() >= 1 ТРЕБУЕТСЯ: 0 <= index < dim_size(0)
SummarizeValue
string SummarizeValue( int64 max_entries, bool print_v2 ) const
Преобразовать первые значения max_entries в *this в строку.
Тензор
Tensor()
Создает одномерный тензор типа float, состоящий из 0 элементов.
Возвращаемый тензор не является скаляром (форма {}), а представляет собой пустой одномерный тензор (форма {0}, NumElements() == 0). Поскольку он не содержит элементов, ему не нужно присваивать значение, и он инициализируется по умолчанию ( IsInitialized() равно true). Если это нежелательно, рассмотрите возможность создания скаляра с одним элементом, который требует инициализации:
Tensor(DT_FLOAT, TensorShape({}))
Tensor
Tensor( DataType type, const TensorShape & shape )
Создает тензор заданного type и shape .
Если LogMemory::IsEnabled(), выделение памяти регистрируется как исходящее из неизвестного ядра и шага. Вызов конструктора Tensor непосредственно из операции устарел: используйте методы allocate_* в OpKernelConstruction/OpKernelContext для выделения нового тензора, которые записывают ядро и шаг.
Базовый буфер выделяется с помощью CPUAllocator .
Тензор
Tensor( Allocator *a, DataType type, const TensorShape & shape )
Создает тензор с заданным type и shape входных данных, используя распределитель памяти a для выделения базового буфера.
Если LogMemory::IsEnabled(), выделение памяти регистрируется как исходящее из неизвестного ядра и шага. Вызов конструктора Tensor непосредственно из операции устарел: используйте методы allocate_* в OpKernelConstruction/OpKernelContext для выделения нового тензора, которые записывают ядро и шаг.
a переживёт срок службы этого тензора .
Тензор
Tensor( Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr )
Создает тензор с заданным type и shape входных данных, используя распределитель памяти a и указанный атрибут "allocation_attr" для выделения базового буфера.
Если ядро и шаг известны, параметр allocation_attr.allocation_will_be_logged следует установить в значение true, а метод LogMemory::RecordTensorAllocation следует вызывать после создания тензора. Вызов конструктора Tensor непосредственно из операции устарел: используйте методы allocate_* из OpKernelConstruction/OpKernelContext для выделения нового тензора, в которых записываются ядро и шаг.
a переживёт срок службы этого тензора .
Тензор
Tensor( DataType type, const TensorShape & shape, TensorBuffer *buf )
Создает тензор с заданным типом данных, формой и буфером (buf).
Получает ссылку на buf, принадлежащий этому тензору .
Тензор
Tensor( DataType type )
Создает пустой тензор заданного типа данных.
Подобно Tensor() , возвращает одномерный тензор с 0 элементами, а IsInitialized() возвращает True. Подробности см. в документации к Tensor() .
Тензор
Tensor( float scalar_value )
Тензор
Tensor( double scalar_value )
Тензор
Tensor( int32 scalar_value )
Тензор
Tensor( uint32 scalar_value )
Тензор
Tensor( uint16 scalar_value )
Тензор
Tensor( uint8 scalar_value )
Тензор
Tensor( int16 scalar_value )
Тензор
Tensor( int8 scalar_value )
Тензор
Tensor( tstring scalar_value )
Тензор
Tensor( complex64 scalar_value )
Тензор
Tensor( complex128 scalar_value )
Тензор
Tensor( int64 scalar_value )
Тензор
Tensor( uint64 scalar_value )
Тензор
Tensor( bool scalar_value )
Тензор
Tensor( qint8 scalar_value )
Тензор
Tensor( quint8 scalar_value )
Тензор
Tensor( qint16 scalar_value )
Тензор
Tensor( quint16 scalar_value )
Тензор
Tensor( qint32 scalar_value )
Тензор
Tensor( bfloat16 scalar_value )
Тензор
Tensor( Eigen::half scalar_value )
Тензор
Tensor( ResourceHandle scalar_value )
Тензор
Tensor( const char *scalar_value )
Тензор
Tensor( Tensor && other )
Конструктор перемещения.
После этого звонка,
TotalBytes
size_t TotalBytes() const
Возвращает приблизительное значение объема памяти, используемой этим тензором.
UnsafeCopyFromInternal
void UnsafeCopyFromInternal( const Tensor & other, DataType dtype, const TensorShape & shape )
Аналогично BitcastFrom, но проверка завершается неудачей, если не выполнены какие-либо предварительные условия.
Устарело. Используйте BitcastFrom вместо него и проверьте возвращаемый статус.
bit_casted_shaped
TTypes< T, NDIMS >::Tensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes )
Верните данные тензора в объект Eigen::Tensor с новой формой, указанной в new_sizes , и преобразуйте его в новый тип данных T
Использование битового приведения типов полезно для операций перемещения и копирования. Единственное отличие от shaped() — это допустимое битовое приведение типов.
bit_casted_shaped
TTypes< T, NDIMS >::ConstTensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes ) const
Верните данные тензора в объект Eigen::Tensor с новой формой, указанной в new_sizes , и преобразуйте его в новый тип данных T
Использование битового приведения типов полезно для операций перемещения и копирования. Единственное отличие от функции shaped() заключается в допустимом битовом приведении типов.
bit_casted_tensor
TTypes< T, NDIMS >::Tensor bit_casted_tensor()
Верните данные тензора в объект Eigen::Tensor того же размера, но с побитовым приведением к указанному типу данных T
Использование битового приведения типов полезно для операций перемещения и копирования. ПРИМЕЧАНИЕ: это то же самое, что и tensor() за исключением того, что допускается использование битового приведения типов.
bit_casted_tensor
TTypes< T, NDIMS >::ConstTensor bit_casted_tensor() const
Верните данные тензора в объект Eigen::Tensor того же размера, но с побитовым приведением к указанному типу данных T
Использование битового приведения типов полезно для операций перемещения и копирования. ПРИМЕЧАНИЕ: это то же самое, что и tensor() за исключением того, что допускается использование битового приведения типов.
данные
void * data() const
dim_size
int64 dim_size( int d ) const
Вспомогательный инструмент для доступа к форме тензора.
тусклые
int dims() const
Вспомогательный инструмент для доступа к форме тензора.
Для получения информации обо всех методах доступа к форме см. комментарии к соответствующим методам TensorShape в tensor_shape.h .
dtype
DataType dtype() const
Возвращает тип данных.
плоский
TTypes< T >::Flat flat()
Возвращает тензорные данные в виде объекта Eigen::Tensor указанного типа данных и заданной формы.
Эти методы позволяют получить доступ к данным с заданными вами размерами и размерами. Для их вызова вам не нужно знать количество измерений тензора . Однако они CHECK , что тип соответствует запрошенным размерам, и создают объект Eigen::Tensor с тем же количеством элементов, что и исходный тензор.
Пример:
typedef float T; Tensor my_ten(...built with Shape{planes: 4, rows: 3, cols: 5}...); // 1D Eigen::Tensor, size 60: auto flat = my_ten.flat(); // 2D Eigen::Tensor 12 x 5: auto inner = my_ten.flat_inner_dims (); // 2D Eigen::Tensor 4 x 15: auto outer = my_ten.shaped<T, 2>({4, 15}); // CHECK fails, bad num elements: auto outer = my_ten.shaped<T, 2>({4, 8}); // 3D Eigen::Tensor 6 x 5 x 2: auto weird = my_ten.shaped<T, 3>({6, 5, 2}); // CHECK fails, type mismatch: auto bad = my_ten.flat ();
flat
TTypes< T >::ConstFlat flat() const
flat_inner_dims
TTypes< T, NDIMS >::Tensor flat_inner_dims()
flat_inner_dims
TTypes< T, NDIMS >::ConstTensor flat_inner_dims() const
flat_inner_outer_dims
TTypes< T, NDIMS >::Tensor flat_inner_outer_dims( int64 begin )
Возвращает данные в виде Eigen::Tensor с размерами NDIMS, объединяя первые измерения тензора 'begin' в первое измерение результата, а измерения тензора последних измерений dims() - 'begin' - NDIMS — в последнее измерение результата.
Если 'begin' < 0, то будут добавлены начальные размеры |'begin'| размером 1. Если 'begin' + NDIMS > dims() , то будут добавлены конечные размеры 'begin' + NDIMS - dims() размером 1.
flat_inner_outer_dims
TTypes< T, NDIMS >::ConstTensor flat_inner_outer_dims( int64 begin ) const
flat_outer_dims
TTypes< T, NDIMS >::Tensor flat_outer_dims()
flat_outer_dims
TTypes< T, NDIMS >::ConstTensor flat_outer_dims() const
матрица
TTypes< T >::Matrix matrix()
матрица
TTypes< T >::ConstMatrix matrix() const
оператор=
Tensor & operator=( const Tensor & other )
Оператор присваивания. Этот тензор использует общую память с другими тензорами.
оператор=
Tensor & operator=( Tensor && other )
Оператор перемещения. Подробности см. в конструкторе перемещения.
reinterpret_last_dimension
TTypes< T, NDIMS >::Tensor reinterpret_last_dimension()
Верните данные тензора в объект Eigen::Tensor в котором элементы последнего измерения преобразованы в отдельные элементы большего типа.
Например, это полезно для ядер, которые могут обрабатывать тензоры NCHW_VECT_C типа int8 как тензоры NCHW типа int32. Размер(T) должен равняться размеру исходного типа элементов, умноженному на количество элементов в последнем измерении. NDIMS должен быть на 1 меньше исходного количества измерений.
reinterpret_last_dimension
TTypes< T, NDIMS >::ConstTensor reinterpret_last_dimension() const
Верните данные тензора в объект Eigen::Tensor в котором элементы последнего измерения преобразованы в отдельные элементы большего типа.
Например, это полезно для ядер, которые могут обрабатывать тензоры NCHW_VECT_C типа int8 как тензоры NCHW типа int32. Размер(T) должен равняться размеру исходного типа элементов, умноженному на количество элементов в последнем измерении. NDIMS должен быть на 1 меньше исходного количества измерений.
скаляр
TTypes< T >::Scalar scalar()
скаляр
TTypes< T >::ConstScalar scalar() const
форма
const TensorShape & shape() const
Возвращает форму тензора.
фигурный
TTypes< T, NDIMS >::Tensor shaped( gtl::ArraySlice< int64 > new_sizes )
фигурный
TTypes< T, NDIMS >::ConstTensor shaped( gtl::ArraySlice< int64 > new_sizes ) const
тензор
TTypes< T, NDIMS >::Tensor tensor()
тензор
TTypes< T, NDIMS >::ConstTensor tensor() const
tensor_data
StringPiece tensor_data() const
Возвращает объект StringPiece , отображающий буфер текущего тензора.
Возвращаемое значение StringPiece может указывать на адрес в памяти устройств, к которым процессор не может обратиться напрямую.
ПРИМЕЧАНИЕ: Базовый тензорный буфер использует счетчик ссылок, поэтому время жизни содержимого, отображаемого объектом StringPiece , совпадает со временем жизни буфера; вызывающие функции должны убедиться, что буфер не будет уничтожен, пока объект StringPiece еще используется.
ТРЕБУЕТСЯ: DataTypeCanUseMemcpy(dtype()) .
невыровненный_плоский
TTypes< T >::UnalignedFlat unaligned_flat()
невыровненный_плоский
TTypes< T >::UnalignedConstFlat unaligned_flat() const
невыровненная_форма
TTypes< T, NDIMS >::UnalignedTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes )
невыровненная_форма
TTypes< T, NDIMS >::UnalignedConstTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes ) const
век
TTypes< T >::Vec vec()
Возвращает данные тензора в виде объекта Eigen::Tensor, содержащего тип и размеры этого тензора.
Используйте эти методы, если вам известны тип данных и количество измерений тензора, и вы хотите, чтобы размер Eigen::Tensor автоматически соответствовал размерам тензора. Проверка реализации завершится неудачей, если не совпадают тип или размеры.
Пример:
typedef float T; Tensor my_mat(...built with Shape{rows: 3, cols: 5}...); auto mat = my_mat.matrix(); // 2D Eigen::Tensor, 3 x 5. auto mat = my_mat.tensor<T, 2>(); // 2D Eigen::Tensor, 3 x 5. auto vec = my_mat.vec (); // CHECK fails as my_mat is 2D. auto vec = my_mat.tensor<T, 3>(); // CHECK fails as my_mat is 2D. auto mat = my_mat.matrix ();// CHECK fails as type mismatch.
vec
TTypes< T >::ConstVec vec() const
Константные версии всех вышеперечисленных методов.
~Тензор
~Tensor()