flujo tensor:: Tensor
#include <tensor.h>
Representa una matriz de valores de n dimensiones.
Resumen
Constructores y destructores | |
---|---|
Tensor () Crea un tensor flotante unidimensional y de 0 elementos. | |
Tensor (DataType type, const TensorShape & shape) | |
Tensor (Allocator *a, DataType type, const TensorShape & shape) Crea un tensor con el type y shape de entrada, 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 el type y shape de entrada, utilizando el asignador a y el "allocation_attr" especificado para asignar el búfer subyacente. | |
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 públicas | |
---|---|
AllocatedBytes () const | size_t |
AsProtoField (TensorProto *proto) const | void Rellena proto con *this tensor. |
AsProtoTensorContent (TensorProto *proto) const | void |
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape) | Copie el otro tensor en este tensor, remodele 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 vuelva a darle forma. |
DebugString (int num_values) const | string Un resumen legible por humanos del tensor adecuado para la depuración. |
DebugString () const | string |
DeviceSafeDebugString () const | string |
FillDescription (TensorDescription *description) const | void Complete el protocolo TensorDescription con metadatos sobre el tensor que sea ú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 conveniente 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 primera dimensión. |
SubSlice (int64 index) const | Seleccione una subsección de este tensor a lo largo de la primera dimensión. |
SummarizeValue (int64 max_entries, bool print_v2) const | string Representa los primeros valores 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 cumple alguna condición previa. |
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 conviértelo 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 conviértelo 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 con 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 con una conversión bit a bit al dtype T especificado. |
dim_size (int d) const | int64 Accesorio conveniente para la forma del tensor. |
dims () const | int Accesorio conveniente 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 un Eigen::Tensor con dimensiones NDIMS, colapsando todas las dimensiones del tensor excepto 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 Devuelve los datos como un Eigen::Tensor con dimensiones NDIMS, colapsando las primeras dimensiones del tensor 'inicio' en la primera dimensión del resultado y las dimensiones del tensor de las últimas dimensiones() - 'comienzo' - NDIMS en la última dimensión del resultado. |
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 NDIMS, colapsando todas las dimensiones del 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 otros. |
operator= ( Tensor && other) | Tensor & Mover operador. Consulte constructor de movimientos 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 que asigna 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 un Eigen::Tensor con el tipo y tamaños de este Tensor . |
vec () const | TTypes< T >::ConstVec Versiones constantes de todos los métodos anteriores. |
Funciones públicas
Bytes asignados
size_t AllocatedBytes() const
ComoProtoField
void AsProtoField( TensorProto *proto ) const
Rellena proto
con *this
tensor.
AsProtoField()
completa el campo repetido para proto.dtype()
, mientras que AsProtoTensorContent()
codifica el contenido en proto.tensor_content()
en una forma compacta.
ComoProtoTensorContenido
void AsProtoTensorContent( TensorProto *proto ) const
BitcastDesde
Status BitcastFrom( const Tensor & other, DataType dtype, const TensorShape & shape )
Copie el otro tensor en este tensor, remodele 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() * TamañoTipoDatos(tipo)
debe ser igual
other.num_elements() * DataTypeSize(other.dtype())
Además, esta función requiere:
- TamañoTipoDatos(otro.tipod()) != 0
- TamañoTipoDatos(tipo) != 0
Si no se cumple alguno de los requisitos, se devuelve errores::InvalidArgument.
Copiar desde
bool CopyFrom( const Tensor & other, const TensorShape & shape ) TF_MUST_USE_RESULT
Copie el otro tensor en este tensor y vuelva a darle forma.
Este tensor comparte el almacenamiento subyacente de otros. Devuelve true
si other.shape()
tiene el mismo número de elementos de la shape
dada.
Cadena de depuración
string DebugString( int num_values ) const
Un resumen legible por humanos del tensor adecuado para la depuración.
Cadena de depuración
string DebugString() const
DispositivoSafeDebugString
string DeviceSafeDebugString() const
RellenarDescripción
void FillDescription( TensorDescription *description ) const
Complete el protocolo TensorDescription
con metadatos sobre el tensor que sea ú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.
Está inicializado
bool IsInitialized() const
Si es necesario, ¿se ha inicializado este tensor ?
Los tensores de elemento cero siempre se consideran inicializados, incluso si nunca han sido asignados y no tienen memoria asignada.
Es el mismo tamaño
bool IsSameSize( const Tensor & b ) const
Número de elementos
int64 NumElements() const
Accesorio conveniente para la forma del tensor.
SharesBufferCon
bool SharesBufferWith( const Tensor & b ) const
Rebanada
Tensor Slice( int64 dim0_start, int64 dim0_limit ) const
Corta este tensor a lo largo de la primera dimensión.
Es decir, el tensor devuelto satisface devuelto[i,...] == this[dim0_start + i,...]. El tensor devuelto comparte el búfer tensor subyacente con este tensor.
NOTA: Es posible que el tensor devuelto no satisfaga el mismo requisito de alineación que este tensor según 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 de N dimensiones, 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)
Subporción
Tensor SubSlice( int64 index ) const
Seleccione una subsección de este tensor a lo largo de la primera dimensión.
Cuando se alimenta con un tensor de N dimensiones, este método devuelve un tensor con N-1 dimensiones, donde el tensor devuelto es una subsección del tensor de entrada a lo largo de la primera dimensión. Las N-1 dimensiones del tensor devuelto son las últimas N-1 dimensiones del tensor de entrada.
NOTA: Es posible que el tensor devuelto no satisfaga el mismo requisito de alineación que este tensor según 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)
ResumirValor
string SummarizeValue( int64 max_entries, bool print_v2 ) const
Represente los primeros valores max_entries
en *this
en una cadena.
Tensor
Tensor()
Crea un tensor flotante unidimensional y 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 asignarle un valor y se inicializa de forma predeterminada ( IsInitialized() es verdadero). Si esto no es deseable, considere 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 de tensor directamente desde una operación está en desuso: utilice los métodos allocate_* OpKernelConstruction/OpKernelContext para asignar un nuevo tensor, que registra el núcleo y el paso.
El búfer subyacente se asigna mediante CPUAllocator
.
Tensor
Tensor( Allocator *a, DataType type, const TensorShape & shape )
Crea un tensor con el type
y shape
de entrada, 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 de tensor directamente desde una operación está en desuso: utilice los métodos allocate_* OpKernelConstruction/OpKernelContext para asignar un nuevo tensor, que registra el núcleo y el paso.
a
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 el type
y shape
de entrada, utilizando el asignador a
y el "allocation_attr" especificado para asignar el búfer subyacente.
Si se conocen el kernel y el paso, asignación_attr.allocation_will_be_logged debe establecerse en verdadero y se debe llamar a LogMemory::RecordTensorAllocation después de construir el tensor. Llamar al constructor de tensor directamente desde una operación está en desuso: utilice los métodos allocate_* OpKernelConstruction/OpKernelContext para asignar un nuevo tensor, que registra el núcleo y el paso.
a
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 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 tensor unidimensional de 0 elementos y IsInitialized() devuelve True. Consulte 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,
Total de bytes
size_t TotalBytes() const
Devuelve el uso de memoria estimado de este tensor.
Copia insegura desde interna
void UnsafeCopyFromInternal( const Tensor & other, DataType dtype, const TensorShape & shape )
Como BitcastFrom, pero CHECK falla si no se cumple alguna condición previa.
En desuso. Utilice BitcastFrom en su lugar y verifique el Status devuelto.
bit_casted_shape
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 conviértelo a un nuevo dtype T
.
Usar un bitcast es útil para operaciones de mover y copiar. El bitcast permitido es la única diferencia con shaped()
.
bit_casted_shape
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 conviértelo a un nuevo dtype T
.
Usar un bitcast es útil para operaciones de mover y copiar. El bitcast permitido es la única diferencia con 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 con una conversión bit a bit al tipo d especificado T
.
Usar un bitcast es útil para operaciones de mover y copiar. NOTA: esto es lo mismo que tensor()
excepto que se permite un bitcast.
tensor_bit_casted
TTypes< T, NDIMS >::ConstTensor bit_casted_tensor() const
Devuelve los datos del tensor a un Eigen::Tensor
con el mismo tamaño pero con una conversión bit a bit al dtype T
especificado.
Usar un bitcast es útil para operaciones de mover y copiar. NOTA: esto es lo mismo que tensor()
excepto que se permite un bitcast.
tamaño_tenue
int64 dim_size( int d ) const
Accesorio conveniente para la forma del tensor.
se atenúa
int dims() const
Accesorio conveniente para la forma del tensor.
Para todos los descriptores de acceso a formas, consulte los comentarios sobre los métodos relevantes de TensorShape
en tensor_shape.h
.
tipo d
DataType dtype() const
Devuelve el tipo de datos.
departamento
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 de su elección. No es necesario saber el número de dimensiones del tensor para llamarlos. Sin embargo, CHECK
que el tipo coincida y las dimensiones solicitadas crean un Eigen::Tensor
con el mismo número 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<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
dimensiones_interiores_planas
TTypes< T, NDIMS >::Tensor flat_inner_dims()
Devuelve los datos como un Eigen::Tensor con dimensiones NDIMS, colapsando todas las dimensiones del tensor excepto el último NDIMS-1 en la primera dimensión del resultado.
Si NDIMS > dims() , se agregarán las dimensiones iniciales de tamaño 1 para que la salida se clasifique como NDIMS.
dimensiones_interiores_planas
TTypes< T, NDIMS >::ConstTensor flat_inner_dims() const
dimensiones_interiores_planas_exteriores
TTypes< T, NDIMS >::Tensor flat_inner_outer_dims( int64 begin )
Devuelve los datos como un Eigen::Tensor con dimensiones NDIMS, colapsando las primeras dimensiones del tensor 'inicio' en la primera dimensión del resultado y las dimensiones del tensor de las últimas dimensiones() - 'comienzo' - NDIMS en la última dimensión del resultado.
Si 'comienzo' < 0 entonces el |'comienzo'| Se agregarán las dimensiones iniciales de tamaño 1. Si 'begin' + NDIMS > dims() entonces 'begin' + NDIMS - dims() se agregarán dimensiones finales de tamaño 1.
dimensiones_interiores_planas_exteriores
TTypes< T, NDIMS >::ConstTensor flat_inner_outer_dims( int64 begin ) const
dimensiones_exteriores_planas
TTypes< T, NDIMS >::Tensor flat_outer_dims()
Devuelve los datos como un Eigen::Tensor con dimensiones NDIMS, colapsando todas las dimensiones del tensor excepto el primer NDIMS-1 en la última dimensión del resultado.
Si NDIMS > dims() entonces se agregarán dimensiones finales de tamaño 1 para que la salida se clasifique como NDIMS.
dimensiones_exteriores_planas
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 otros.
operador=
Tensor & operator=( Tensor && other )
Mover operador. Consulte constructor de movimientos para obtener más detalles.
reinterpretar_última_dimensión
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 * número de elementos en la última dimensión original. NDIMS debe ser 1 menos que el número original de dimensiones.
reinterpretar_última_dimensión
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 * número de 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
datos_tensor
StringPiece tensor_data() const
Devuelve un StringPiece
que asigna 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 abordar directamente.
NOTA: El búfer tensorial subyacente se vuelve a contar, por lo que la vida útil de los contenidos asignados 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 StringPiece
todavía se usa.
REQUIERE: DataTypeCanUseMemcpy(dtype())
.
no alineado_plano
TTypes< T >::UnalignedFlat unaligned_flat()
no alineado_plano
TTypes< T >::UnalignedConstFlat unaligned_flat() const
forma_no alineada
TTypes< T, NDIMS >::UnalignedTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes )
forma_no alineada
TTypes< T, NDIMS >::UnalignedConstTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes ) const
vec
TTypes< T >::Vec vec()
Devuelve los datos del tensor como un Eigen::Tensor con el tipo y tamaños 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 dimensionado automáticamente según los tamaños 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<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
Versiones constantes de todos los métodos anteriores.
~Tensor
~Tensor()