tensorflow :: Tensor
#include <tensor.h>
Representa una matriz de valores n-dimensional.
Resumen
Constructores y Destructores | |
---|---|
Tensor () Crea un tensor flotante unidimensional de 0 elementos. | |
Tensor (DataType type, const TensorShape & shape) | |
Tensor (Allocator *a, DataType type, const TensorShape & shape) Crea un tensor con el type entrada y la shape , utilizando el asignador a para asignar el búfer subyacente. | |
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr) Crea un tensor con la entrada de type y shape , utilizando el asignador a y el "allocation_attr" para asignar la memoria intermedia subyacente especificado. | |
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf) Crea un tensor con el tipo de datos de entrada, forma y buf. | |
Tensor (DataType type) Crea un tensor vacío del tipo de datos dado. | |
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) Copiar constructor. | |
Tensor ( Tensor && other) Mover constructor. | |
~Tensor () |
Funciones publicas | |
---|---|
AllocatedBytes () const | size_t |
AsProtoField (TensorProto *proto) const | void Completa el proto con *this el contenido de *this tensor. |
AsProtoTensorContent (TensorProto *proto) const | void |
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape) | Copie el otro tensor en este tensor, modifíquelo y reinterprete el tipo de datos del búfer. |
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT | bool Copie el otro tensor en este tensor y modifíquelo. |
DebugString (int num_values) const | string Un resumen legible por humanos del tensor adecuado para depurar. |
DebugString () const | string |
DeviceSafeDebugString () const | string |
FillDescription (TensorDescription *description) const | void Complete el TensorDescription con metadatos sobre el tensor que es útil para monitorear y depurar. |
FromProto (const TensorProto & other) TF_MUST_USE_RESULT | bool Analiza other y construye el tensor. |
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT | bool |
IsAligned () const | bool Devuelve verdadero si este tensor está alineado. |
IsInitialized () const | bool Si es necesario, ¿se ha inicializado este tensor ? |
IsSameSize (const Tensor & b) const | bool |
NumElements () const | int64 Accesorio de conveniencia para la forma del tensor. |
SharesBufferWith (const Tensor & b) const | bool |
Slice (int64 dim0_start, int64 dim0_limit) const | Corta este tensor a lo largo de la 1ª dimensión. |
SubSlice (int64 index) const | Seleccione una sublicencia de este tensor a lo largo de la 1ª dimensión. |
SummarizeValue (int64 max_entries, bool print_v2) const | string Representa los primeros valores de max_entries en *this en una cadena. |
TotalBytes () const | size_t Devuelve el uso de memoria estimado de este tensor. |
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape) | void Como BitcastFrom, pero CHECK falla si no se cumplen las condiciones previas. |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >:: Tensor Devuelve los datos del tensor a un Eigen::Tensor con la nueva forma especificada en new_sizes y new_sizes a un nuevo dtype T |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const | TTypes< T, NDIMS >::ConstTensor Devuelve los datos del tensor a un Eigen::Tensor con la nueva forma especificada en new_sizes y new_sizes a un nuevo dtype T |
bit_casted_tensor () | TTypes< T, NDIMS >:: Tensor Devuelve los datos del tensor a un Eigen::Tensor con el mismo tamaño pero una conversión bit a bit al dtype T especificado. |
bit_casted_tensor () const | TTypes< T, NDIMS >::ConstTensor Devuelve los datos del tensor a un Eigen::Tensor con el mismo tamaño pero una conversión bit a bit al dtype T especificado. |
dim_size (int d) const | int64 Accesorio de conveniencia para la forma del tensor. |
dims () const | int Accesorio de conveniencia para la forma del tensor. |
dtype () const | DataType Devuelve el tipo de datos. |
flat () | TTypes< T >::Flat Devuelve los datos del tensor como un Eigen::Tensor del tipo de datos y una forma especificada. |
flat () const | TTypes< T >::ConstFlat |
flat_inner_dims () | TTypes< T, NDIMS >:: Tensor Devuelve los datos como Eigen :: Tensor con dimensiones de NDIMS, colapsando todas las dimensiones de Tensor pero el último NDIMS-1 en la primera dimensión del resultado. |
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 Devuelve los datos como un Eigen :: Tensor con dimensiones de NDIMS, colapsando todas las dimensiones de Tensor excepto el primer NDIMS-1 en la última dimensión del resultado. |
flat_outer_dims () const | TTypes< T, NDIMS >::ConstTensor |
matrix () | TTypes< T >::Matrix |
matrix () const | TTypes< T >::ConstMatrix |
operator= (const Tensor & other) | Tensor & Asignar operador. Este tensor comparte el almacenamiento subyacente de otro. |
operator= ( Tensor && other) | Tensor & Mover operador. Consulte move constructor para obtener más detalles. |
reinterpret_last_dimension () | TTypes< T, NDIMS >:: Tensor Devuelve los datos del tensor a un Eigen::Tensor con los últimos elementos de dimensión convertidos en elementos individuales de un tipo más grande. |
reinterpret_last_dimension () const | TTypes< T, NDIMS >::ConstTensor Devuelve los datos del tensor a un Eigen::Tensor con los últimos elementos de dimensión convertidos en elementos individuales de un tipo más grande. |
scalar () | TTypes< T >::Scalar |
scalar () const | TTypes< T >::ConstScalar |
shape () const | const TensorShape & Devuelve la forma del tensor. |
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 Devuelve un StringPiece mapeando el búfer del tensor actual. |
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 Devuelve los datos del tensor como Eigen::Tensor con el tipo y tamaño de este Tensor . |
vec () const | TTypes< T >::ConstVec Versiones constantes de todos los métodos anteriores. |
Funciones publicas
AllocatedBytes
size_t AllocatedBytes() const
AsProtoField
void AsProtoField( TensorProto *proto ) const
Completa el proto
con *this
el contenido de *this
tensor.
AsProtoField()
llena el campo repetido para proto.dtype()
, mientras que AsProtoTensorContent()
codifica el contenido en proto.tensor_content()
en una forma compacta.
AsProtoTensorContent
void AsProtoTensorContent( TensorProto *proto ) const
Bitcast
Status BitcastFrom( const Tensor & other, DataType dtype, const TensorShape & shape )
Copie el otro tensor en este tensor, modifíquelo y reinterprete el tipo de datos del búfer.
Si se devuelve Status :: OK (), los dos tensores ahora comparten el mismo almacenamiento subyacente.
Esta llamada requiere que el other
tensor y el tipo y forma dados sean "compatibles" (es decir, ocupen el mismo número de bytes).
Específicamente:
shape.num_elements () * DataTypeSize (tipo)
debe ser igual
other.num_elements () * DataTypeSize (otro.dtype ())
Además, esta función requiere:
- DataTypeSize (other.dtype ())! = 0
- DataTypeSize (tipo)! = 0
Si no se cumple alguno de los requisitos, se devuelve errors :: InvalidArgument.
Copiado de
bool CopyFrom( const Tensor & other, const TensorShape & shape ) TF_MUST_USE_RESULT
Copie el otro tensor en este tensor y modifíquelo.
Este tensor comparte el almacenamiento subyacente de otro. Devuelve true
other.shape()
tiene el mismo número de elementos de la shape
dada.
DebugString
string DebugString( int num_values ) const
Un resumen legible por humanos del tensor adecuado para depurar.
DebugString
string DebugString() const
DeviceSafeDebugString
string DeviceSafeDebugString() const
FillDescription
void FillDescription( TensorDescription *description ) const
Complete el TensorDescription
con metadatos sobre el tensor que es útil para monitorear y depurar.
DeProto
bool FromProto( const TensorProto & other ) TF_MUST_USE_RESULT
Analiza other
y construye el tensor.
Devuelve true
si el análisis se realiza correctamente. Si el análisis falla, el estado de *this
no cambia.
DeProto
bool FromProto( Allocator *a, const TensorProto & other ) TF_MUST_USE_RESULT
Está alineado
bool IsAligned() const
Devuelve verdadero si este tensor está alineado.
IsInitialized
bool IsInitialized() const
Si es necesario, ¿se ha inicializado este tensor ?
Los tensores de elemento cero siempre se consideran inicializados, incluso si nunca se han asignado y no tienen memoria asignada.
IsSameSize
bool IsSameSize( const Tensor & b ) const
NumElements
int64 NumElements() const
Accesorio de conveniencia para la forma del tensor.
AccionesBufferCon
bool SharesBufferWith( const Tensor & b ) const
Rebanada
Tensor Slice( int64 dim0_start, int64 dim0_limit ) const
Corta este tensor a lo largo de la 1ª dimensión.
Es decir, el tensor devuelto satisface devuelto [i, ...] == this [dim0_start + i, ...]. El tensor devuelto comparte el búfer de tensor subyacente con este tensor.
NOTA: El tensor devuelto puede no satisfacer el mismo requisito de alineación que este tensor dependiendo de la forma. La persona que llama debe verificar la alineación del tensor devuelto antes de llamar a ciertos métodos que tienen requisitos de alineación (por ejemplo, flat()
, tensor()
).
NOTA: Cuando se alimenta con un tensor N-dimensional, este método devuelve un tensor también con N dimensiones. Si desea seleccionar un subtensor, consulte SubSlice.
REQUIERE: dims()
> = 1 REQUIERE: 0 <= dim0_start <= dim0_limit <= dim_size(0)
SubSlice
Tensor SubSlice( int64 index ) const
Seleccione una sublicencia de este tensor a lo largo de la 1ª dimensión.
Cuando se alimenta con un tensor N-dimensional, este método devuelve un tensor con N-1 dimensiones, donde el tensor devuelto es una sublicencia del tensor de entrada a lo largo de la primera dimensión. Las dimensiones N-1 del tensor devuelto son las últimas dimensiones N-1 del tensor de entrada.
NOTA: El tensor devuelto puede no satisfacer el mismo requisito de alineación que este tensor dependiendo de la forma. La persona que llama debe verificar la alineación del tensor devuelto antes de llamar a ciertos métodos que tienen requisitos de alineación (por ejemplo, flat()
, tensor()
).
REQUIERE: dims()
> = 1 REQUIERE: 0 <= dim0_start < dim_size(0)
SummarizeValue
string SummarizeValue( int64 max_entries, bool print_v2 ) const
Representa los primeros valores de max_entries
en *this
en una cadena.
Tensor
Tensor()
Crea un tensor flotante unidimensional de 0 elementos.
El tensor devuelto no es un escalar (forma {}), sino un tensor unidimensional vacío (forma {0}, NumElements () == 0). Como no tiene elementos, no es necesario que se le asigne un valor y se inicializa de forma predeterminada ( IsInitialized () es verdadero). Si esto no es deseable, considere la posibilidad de crear un escalar de un elemento que requiera inicialización:
Tensor(DT_FLOAT, TensorShape({}))
Tensor
Tensor( DataType type, const TensorShape & shape )
Crea un tensor del type
y shape
dados.
Si LogMemory :: IsEnabled (), la asignación se registra como proveniente de un kernel y paso desconocidos. Llamar al constructor Tensor directamente desde dentro de una Op está en desuso: use los métodos OpKernelConstruction / OpKernelContext allocate_ * para asignar un nuevo tensor, que registra el kernel y el paso.
El búfer subyacente se asigna mediante un CPUAllocator
.
Tensor
Tensor( Allocator *a, DataType type, const TensorShape & shape )
Crea un tensor con el type
entrada y la shape
, utilizando el asignador a
para asignar el búfer subyacente.
Si LogMemory :: IsEnabled (), la asignación se registra como proveniente de un kernel y paso desconocidos. Llamar al constructor Tensor directamente desde dentro de una Op está en desuso: use los métodos OpKernelConstruction / OpKernelContext allocate_ * para asignar un nuevo tensor, que registra el kernel y el paso.
a
debe sobrevivir a la vida útil de este tensor .
Tensor
Tensor( Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr )
Crea un tensor con la entrada de type
y shape
, utilizando el asignador a
y el "allocation_attr" para asignar la memoria intermedia subyacente especificado.
Si el kernel y el paso son conocidos, allocation_attr.allocation_will_be_logged debe establecerse en true y LogMemory :: RecordTensorAllocation debe llamarse después de que se construya el tensor. Llamar al constructor Tensor directamente desde dentro de una Op está en desuso: use los métodos OpKernelConstruction / OpKernelContext allocate_ * para asignar un nuevo tensor, que registra el kernel y el paso.
a
debe sobrevivir a la vida útil de este tensor .
Tensor
Tensor( DataType type, const TensorShape & shape, TensorBuffer *buf )
Crea un tensor con el tipo de datos de entrada, forma y buf.
Adquiere una referencia en buf que pertenece a este tensor .
Tensor
Tensor( DataType type )
Crea un tensor vacío del tipo de datos dado.
Al igual que Tensor () , devuelve un 1 dimensión, 0-elemento tensor con IsInitialized () devuelve true. Consulta la documentación de Tensor () para obtener más detalles.
Tensor
Tensor( float scalar_value )
Tensor
Tensor( double scalar_value )
Tensor
Tensor( int32 scalar_value )
Tensor
Tensor( uint32 scalar_value )
Tensor
Tensor( uint16 scalar_value )
Tensor
Tensor( uint8 scalar_value )
Tensor
Tensor( int16 scalar_value )
Tensor
Tensor( int8 scalar_value )
Tensor
Tensor( tstring scalar_value )
Tensor
Tensor( complex64 scalar_value )
Tensor
Tensor( complex128 scalar_value )
Tensor
Tensor( int64 scalar_value )
Tensor
Tensor( uint64 scalar_value )
Tensor
Tensor( bool scalar_value )
Tensor
Tensor( qint8 scalar_value )
Tensor
Tensor( quint8 scalar_value )
Tensor
Tensor( qint16 scalar_value )
Tensor
Tensor( quint16 scalar_value )
Tensor
Tensor( qint32 scalar_value )
Tensor
Tensor( bfloat16 scalar_value )
Tensor
Tensor( Eigen::half scalar_value )
Tensor
Tensor( ResourceHandle scalar_value )
Tensor
Tensor( const char *scalar_value )
Tensor
Tensor( Tensor && other )
Mover constructor.
Después de esta llamada,
TotalBytes
size_t TotalBytes() const
Devuelve el uso de memoria estimado de este tensor.
InseguroCopyFromInternal
void UnsafeCopyFromInternal( const Tensor & other, DataType dtype, const TensorShape & shape )
Como BitcastFrom, pero CHECK falla si no se cumplen las condiciones previas.
Obsoleto. Utilice BitcastFrom en su lugar y verifique el estado devuelto.
bit_casted_shaped
TTypes< T, NDIMS >::Tensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes )
Devuelve los datos del tensor a un Eigen::Tensor
con la nueva forma especificada en new_sizes
y new_sizes
a un nuevo dtype T
El uso de bitcast es útil para las operaciones de movimiento y copia. El bitcast permitido es la única diferencia de shape shaped()
.
bit_casted_shaped
TTypes< T, NDIMS >::ConstTensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes ) const
Devuelve los datos del tensor a un Eigen::Tensor
con la nueva forma especificada en new_sizes
y new_sizes
a un nuevo dtype T
El uso de bitcast es útil para las operaciones de movimiento y copia. El bitcast permitido es la única diferencia de shape shaped()
.
bit_casted_tensor
TTypes< T, NDIMS >::Tensor bit_casted_tensor()
Devuelve los datos del tensor a un Eigen::Tensor
con el mismo tamaño pero una conversión bit a bit al dtype T
especificado.
El uso de bitcast es útil para las operaciones de movimiento y copia. NOTA: esto es lo mismo que tensor()
excepto que se permite un bitcast.
bit_casted_tensor
TTypes< T, NDIMS >::ConstTensor bit_casted_tensor() const
Devuelve los datos del tensor a un Eigen::Tensor
con el mismo tamaño pero una conversión bit a bit al dtype T
especificado.
El uso de bitcast es útil para las operaciones de movimiento y copia. NOTA: esto es lo mismo que tensor()
excepto que se permite un bitcast.
dim_size
int64 dim_size( int d ) const
Accesorio de conveniencia para la forma del tensor.
atenúa
int dims() const
Accesorio de conveniencia para la forma del tensor.
Para todos los TensorShape
de TensorShape
a tensor_shape.h
, consulte los comentarios sobre los métodos relevantes de TensorShape
en tensor_shape.h
.
dtype
DataType dtype() const
Devuelve el tipo de datos.
plano
TTypes< T >::Flat flat()
Devuelve los datos del tensor como un Eigen::Tensor
del tipo de datos y una forma especificada.
Estos métodos le permiten acceder a los datos con las dimensiones y tamaños que elija. No necesita saber el número de dimensiones del tensor para llamarlas. Sin embargo, CHECK
que el tipo coincida y las dimensiones solicitadas crean un Eigen::Tensor
con la misma cantidad de elementos que el tensor.
Ejemplo:
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 ({4, 15}); // CHECK fails, bad num elements: auto outer = my_ten.shaped ({4, 8}); // 3D Eigen::Tensor 6 x 5 x 2: auto weird = my_ten.shaped ({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 )
Devuelve los datos como un Eigen :: Tensor con dimensiones de NDIMS, colapsando las primeras dimensiones del tensor 'begin' en la primera dimensión del resultado y las dimensiones del tensor de los últimos dims () - 'begin' - NDIMS en la última dimensión del resultado.
Si 'begin' <0, entonces el | 'begin' | Se agregarán las dimensiones iniciales de tamaño 1. Si 'begin' + NDIMS> dims () entonces 'begin' + NDIMS - dims () se agregarán las dimensiones finales de tamaño 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
matriz
TTypes< T >::Matrix matrix()
matriz
TTypes< T >::ConstMatrix matrix() const
operador =
Tensor & operator=( const Tensor & other )
Asignar operador. Este tensor comparte el almacenamiento subyacente de otro.
operador =
Tensor & operator=( Tensor && other )
Mover operador. Consulte move constructor para obtener más detalles.
reinterpret_last_dimension
TTypes< T, NDIMS >::Tensor reinterpret_last_dimension()
Devuelve los datos del tensor a un Eigen::Tensor
con los últimos elementos de dimensión convertidos en elementos individuales de un tipo más grande.
Por ejemplo, esto es útil para núcleos que pueden tratar los tensores NCHW_VECT_C int8 como tensores NCHW int32. El tamaño de (T) debe ser igual al tamaño del tipo de elemento original * num elementos en la última dimensión original. NDIMS debe ser 1 menos que el número original de dimensiones.
reinterpret_last_dimension
TTypes< T, NDIMS >::ConstTensor reinterpret_last_dimension() const
Devuelve los datos del tensor a un Eigen::Tensor
con los últimos elementos de dimensión convertidos en elementos individuales de un tipo más grande.
Por ejemplo, esto es útil para núcleos que pueden tratar los tensores NCHW_VECT_C int8 como tensores NCHW int32. El tamaño de (T) debe ser igual al tamaño del tipo de elemento original * num elementos en la última dimensión original. NDIMS debe ser 1 menos que el número original de dimensiones.
escalar
TTypes< T >::Scalar scalar()
escalar
TTypes< T >::ConstScalar scalar() const
forma
const TensorShape & shape() const
Devuelve la forma del tensor.
conformado
TTypes< T, NDIMS >::Tensor shaped( gtl::ArraySlice< int64 > new_sizes )
conformado
TTypes< T, NDIMS >::ConstTensor shaped( gtl::ArraySlice< int64 > new_sizes ) const
tensor
TTypes< T, NDIMS >::Tensor tensor()
tensor
TTypes< T, NDIMS >::ConstTensor tensor() const
tensor_data
StringPiece tensor_data() const
Devuelve un StringPiece
mapeando el búfer del tensor actual.
El StringPiece
devuelto puede apuntar a la ubicación de la memoria en dispositivos que la CPU no puede direccionar directamente.
NOTA: El búfer del tensor subyacente se vuelve a contar, por lo que la vida útil del contenido mapeado por StringPiece
coincide con la vida útil del búfer; las personas que llaman deben hacer arreglos para asegurarse de que el búfer no se destruya mientras aún se usa StringPiece
.
REQUIERE: DataTypeCanUseMemcpy(dtype())
.
unaligned_flat
TTypes< T >::UnalignedFlat unaligned_flat()
unaligned_flat
TTypes< T >::UnalignedConstFlat unaligned_flat() const
unaligned_shaped
TTypes< T, NDIMS >::UnalignedTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes )
unaligned_shaped
TTypes< T, NDIMS >::UnalignedConstTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes ) const
vec
TTypes< T >::Vec vec()
Devuelve los datos del tensor como Eigen :: Tensor con el tipo y tamaño de este tensor.
Utilice estos métodos cuando conozca el tipo de datos y el número de dimensiones del tensor y desee un Eigen :: Tensor con el tamaño automático del tamaño del tensor. La verificación de implementación falla si el tipo o el tamaño no coinciden.
Ejemplo:
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 (); // 2D Eigen::Tensor, 3 x 5. auto vec = my_mat.vec (); // CHECK fails as my_mat is 2D. auto vec = my_mat.tensor (); // CHECK fails as my_mat is 2D. auto mat = my_mat.matrix ();// CHECK fails as type mismatch.
vec
TTypes< T >::ConstVec vec() const
Versiones constantes de todos los métodos anteriores.
~ Tensor
~Tensor()