flux tensoriel : : Tenseur
#include <tensor.h>
Représente un tableau de valeurs à n dimensions.
Résumé
Constructeurs et Destructeurs | |
---|---|
Tensor () Crée un tenseur flottant unidimensionnel à 0 élément. | |
Tensor (DataType type, const TensorShape & shape) | |
Tensor (Allocator *a, DataType type, const TensorShape & shape) Crée un tenseur avec le type et shape d'entrée, en utilisant l'allocateur a pour allouer le tampon sous-jacent. | |
Tensor (Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr) Crée un tenseur avec le type et shape d'entrée, en utilisant l'allocateur a et le "allocation_attr" spécifié pour allouer le tampon sous-jacent. | |
Tensor (DataType type, const TensorShape & shape, TensorBuffer *buf) Crée un tenseur avec le type de données d'entrée, la forme et le buf. | |
Tensor (DataType type) Crée un Tensor vide du type de données donné. | |
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) Copier le constructeur. | |
Tensor ( Tensor && other) Déplacer le constructeur. | |
Tensor (T *t) | |
~Tensor () |
Fonctions publiques | |
---|---|
AllocatedBytes () const | size_t |
AsProtoField (TensorProto *proto) const | void Remplit proto avec *this tenseur. |
AsProtoTensorContent (TensorProto *proto) const | void |
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape) | Status Copiez l'autre tenseur dans ce tenseur, remodelez-le et réinterprètez le type de données du tampon. |
CopyFrom (const Tensor & other, const TensorShape & shape) TF_MUST_USE_RESULT | bool Copiez l'autre tenseur dans ce tenseur et remodelez-le. |
DebugString (int num_values) const | std::string Un résumé lisible par l'homme du tenseur adapté au débogage. |
DebugString () const | std::string |
DeviceSafeDebugString () const | std::string |
FillDescription (TensorDescription *description) const | void Remplissez le proto TensorDescription avec des métadonnées sur le tenseur utiles pour la surveillance et le débogage. |
FromProto (const TensorProto & other) TF_MUST_USE_RESULT | bool Analysez other et construisez le tenseur. |
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT | bool |
IsAligned () const | bool Renvoie vrai si ce tenseur est aligné. |
IsInitialized () const | bool Si nécessaire, ce Tensor a-t-il été initialisé ? |
IsSameSize (const Tensor & b) const | bool |
NumElements () const | int64 Accessoire pratique pour la forme tenseur. |
RefCountIsOne () const | bool |
SharesBufferWith (const Tensor & b) const | bool |
Slice (int64 dim0_start, int64 dim0_limit) const | Découpez ce tenseur le long de la 1ère dimension. |
SubSlice (int64 index) const | Sélectionnez une sous-tranche de ce tenseur le long de la 1ère dimension. |
SummarizeValue (int64 max_entries, bool print_v2) const | std::string Rendu les premières valeurs max_entries dans *this dans une chaîne. |
TotalBytes () const | size_t Renvoie l'utilisation estimée de la mémoire de ce tenseur. |
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape) | void Comme BitcastFrom, mais CHECK échoue si des conditions préalables ne sont pas remplies. |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >:: Tensor Renvoyez les données du tenseur à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et convertissez-les en un nouveau dtype T . |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const | TTypes< T, NDIMS >::ConstTensor Renvoyez les données du tenseur à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et convertissez-les en un nouveau dtype T . |
bit_casted_tensor () | TTypes< T, NDIMS >:: Tensor Renvoie les données du tenseur à un Eigen::Tensor avec la même taille mais une conversion au niveau du bit vers le dtype spécifié T . |
bit_casted_tensor () const | TTypes< T, NDIMS >::ConstTensor Renvoie les données du tenseur à un Eigen::Tensor avec la même taille mais une conversion au niveau du bit vers le dtype spécifié T . |
data () const | void * |
dim_size (int d) const | int64 Accessoire pratique pour la forme tenseur. |
dims () const | int Accessoire pratique pour la forme tenseur. |
dtype () const | DataType Renvoie le type de données. |
flat () | TTypes< T >::Flat Renvoie les données du tenseur sous la forme d'un Eigen::Tensor du type de données et d'une forme spécifiée. |
flat () const | TTypes< T >::ConstFlat |
flat_inner_dims () | TTypes< T, NDIMS >:: Tensor Renvoie les données sous forme d'Eigen::Tensor avec les dimensions NDIMS, en réduisant toutes les dimensions du Tensor sauf la dernière NDIMS-1 dans la première dimension du résultat. |
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 Renvoie les données sous forme d'Eigen::Tensor avec les dimensions NDIMS, en réduisant toutes les dimensions du Tensor à l'exception du premier NDIMS-1 dans la dernière dimension du résultat. |
flat_outer_dims () const | TTypes< T, NDIMS >::ConstTensor |
matrix () | TTypes< T >::Matrix |
matrix () const | TTypes< T >::ConstMatrix |
operator= (const Tensor & other) | Tensor & Attribuer un opérateur. Ce tenseur partage le stockage sous-jacent des autres. |
operator= ( Tensor && other) | Tensor & Déplacer l'opérateur. Voir le constructeur de déplacement pour plus de détails. |
reinterpret_last_dimension () | TTypes< T, NDIMS >:: Tensor Renvoyez les données du tenseur à un Eigen::Tensor avec les derniers éléments de dimension convertis en éléments uniques d'un type plus grand. |
reinterpret_last_dimension () const | TTypes< T, NDIMS >::ConstTensor Renvoyez les données du tenseur à un Eigen::Tensor avec les derniers éléments de dimension convertis en éléments uniques d'un type plus grand. |
scalar () | TTypes< T >::Scalar |
scalar () const | TTypes< T >::ConstScalar |
shape () const | const TensorShape & Renvoie la forme du tenseur. |
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 Renvoie un StringPiece mappant le tampon du tenseur actuel. |
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 Renvoie les données du tenseur sous la forme d'un Eigen::Tensor avec le type et les tailles de ce Tensor . |
vec () const | TTypes< T >::ConstVec Versions Const de toutes les méthodes ci-dessus. |
Fonctions publiques
Octets alloués
size_t AllocatedBytes() const
AsProtoField
void AsProtoField( TensorProto *proto ) const
Remplit proto
avec *this
tenseur.
AsProtoField()
remplit le champ répété pour proto.dtype()
, tandis qu'AsProtoTensorContent AsProtoTensorContent()
encode le contenu dans proto.tensor_content()
sous une forme compacte.
AsProtoTensorContent
void AsProtoTensorContent( TensorProto *proto ) const
BitcastDe
Status BitcastFrom( const Tensor & other, DataType dtype, const TensorShape & shape )
Copiez l'autre tenseur dans ce tenseur, remodelez-le et réinterprètez le type de données du tampon.
Si Status::OK() est renvoyé, les deux tenseurs partagent désormais le même stockage sous-jacent.
Cet appel nécessite que l' other
tenseur ainsi que le type et la forme donnés soient "compatibles" (c'est-à-dire qu'ils occupent le même nombre d'octets).
Spécifiquement:
shape.num_elements() * DataTypeSize(type)
doit être égal
autre.num_elements() * DataTypeSize(autre.dtype())
De plus, cette fonction nécessite :
- DataTypeSize(autre.dtype()) != 0
- DataTypeSize(type) != 0
Si l’une des conditions n’est pas remplie, erreurs :: InvalidArgument est renvoyé.
CopierDe
bool CopyFrom( const Tensor & other, const TensorShape & shape ) TF_MUST_USE_RESULT
Copiez l'autre tenseur dans ce tenseur et remodelez-le.
Ce tenseur partage le stockage sous-jacent des autres. Renvoie true
si other.shape()
a le même nombre d'éléments de la shape
donnée.
Chaîne de débogage
std::string DebugString( int num_values ) const
Un résumé lisible par l'homme du tenseur adapté au débogage.
Chaîne de débogage
std::string DebugString() const
DeviceSafeDebugString
std::string DeviceSafeDebugString() const
RemplirDescription
void FillDescription( TensorDescription *description ) const
Remplissez le proto TensorDescription
avec des métadonnées sur le tenseur utiles pour la surveillance et le débogage.
DeProto
bool FromProto( const TensorProto & other ) TF_MUST_USE_RESULT
Analysez other
et construisez le tenseur.
Renvoie true
si l'analyse réussit. Si l'analyse échoue, l'état de *this
reste inchangé.
DeProto
bool FromProto( Allocator *a, const TensorProto & other ) TF_MUST_USE_RESULT
EstAligné
bool IsAligned() const
Renvoie vrai si ce tenseur est aligné.
EstInitialisé
bool IsInitialized() const
Si nécessaire, ce Tensor a-t-il été initialisé ?
Les tenseurs à élément zéro sont toujours considérés comme initialisés, même s'ils n'ont jamais été attribués et n'ont aucune mémoire allouée.
EstMêmeTaille
bool IsSameSize( const Tensor & b ) const
Nombre d'éléments
int64 NumElements() const
Accessoire pratique pour la forme tenseur.
RefCountIsOne
bool RefCountIsOne() const
ActionsBufferWith
bool SharesBufferWith( const Tensor & b ) const
Tranche
Tensor Slice( int64 dim0_start, int64 dim0_limit ) const
Découpez ce tenseur le long de la 1ère dimension.
C'est-à-dire que le tenseur renvoyé satisfait return[i, ...] == this[dim0_start + i, ...]. Le tenseur renvoyé partage le tampon de tenseur sous-jacent avec ce tenseur.
REMARQUE : le tenseur renvoyé peut ne pas satisfaire aux mêmes exigences d'alignement que ce tenseur en fonction de la forme. L'appelant doit vérifier l'alignement du tenseur renvoyé avant d'appeler certaines méthodes qui ont des exigences d'alignement (par exemple, flat()
, tensor()
).
REMARQUE : lorsqu'elle est alimentée avec un tenseur à N dimensions, cette méthode renvoie également un tenseur à N dimensions. Si vous souhaitez sélectionner un sous-tenseur, voir SubSlice.
REQUIRES : dims()
>= 1 REQUIRES : 0 <= dim0_start <= dim0_limit <= dim_size(0)
Sous-tranche
Tensor SubSlice( int64 index ) const
Sélectionnez une sous-tranche de ce tenseur le long de la 1ère dimension.
Lorsqu'elle est alimentée avec un tenseur à N dimensions, cette méthode renvoie un tenseur à N-1 dimensions, où le tenseur renvoyé est une sous-tranche du tenseur d'entrée le long de la première dimension. Les dimensions N-1 du tenseur renvoyé sont les dernières dimensions N-1 du tenseur d'entrée.
REMARQUE : le tenseur renvoyé peut ne pas satisfaire aux mêmes exigences d'alignement que ce tenseur en fonction de la forme. L'appelant doit vérifier l'alignement du tenseur renvoyé avant d'appeler certaines méthodes qui ont des exigences d'alignement (par exemple, flat()
, tensor()
).
EXIGE : dims()
>= 1 EXIGE : 0 <= index < dim_size(0)
Résumer la valeur
std::string SummarizeValue( int64 max_entries, bool print_v2 ) const
Rendu les premières valeurs max_entries
dans *this
dans une chaîne.
Tenseur
Tensor()
Crée un tenseur flottant unidimensionnel à 0 élément.
Le Tensor renvoyé n'est pas un scalaire (forme {}), mais plutôt un Tensor unidimensionnel vide (forme {0}, NumElements() == 0). Puisqu'il n'a aucun élément, il n'est pas nécessaire de lui attribuer de valeur et est initialisé par défaut ( IsInitialized() est true). Si cela n'est pas souhaitable, envisagez de créer un scalaire à un élément qui nécessite une initialisation :
Tensor(DT_FLOAT, TensorShape({}))
Tensor
Tensor( DataType type, const TensorShape & shape )
Crée un Tensor du type
et shape
donnés.
Si LogMemory::IsEnabled(), l'allocation est enregistrée comme provenant d'un noyau et d'une étape inconnus. L'appel du constructeur Tensor directement depuis un Op est obsolète : utilisez les méthodes OpKernelConstruction/OpKernelContext allocate_* pour allouer un nouveau tenseur, qui enregistre le noyau et l'étape.
Le tampon sous-jacent est alloué à l'aide d'un CPUAllocator
.
Tenseur
Tensor( Allocator *a, DataType type, const TensorShape & shape )
Crée un tenseur avec le type
et shape
d'entrée, en utilisant l'allocateur a
pour allouer le tampon sous-jacent.
Si LogMemory::IsEnabled(), l'allocation est enregistrée comme provenant d'un noyau et d'une étape inconnus. L'appel du constructeur Tensor directement depuis un Op est obsolète : utilisez les méthodes OpKernelConstruction/OpKernelContext allocate_* pour allouer un nouveau tenseur, qui enregistre le noyau et l'étape.
a
doit survivre à la durée de vie de ce Tensor .
Tenseur
Tensor( Allocator *a, DataType type, const TensorShape & shape, const AllocationAttributes & allocation_attr )
Crée un tenseur avec le type
et shape
d'entrée, en utilisant l'allocateur a
et le "allocation_attr" spécifié pour allouer le tampon sous-jacent.
Si le noyau et l'étape sont connus, allocation_attr.allocation_will_be_logged doit être défini sur true et LogMemory::RecordTensorAllocation doit être appelé après la construction du tenseur. L'appel du constructeur Tensor directement depuis un Op est obsolète : utilisez les méthodes OpKernelConstruction/OpKernelContext allocate_* pour allouer un nouveau tenseur, qui enregistre le noyau et l'étape.
a
doit survivre à la durée de vie de ce Tensor .
Tenseur
Tensor( DataType type, const TensorShape & shape, TensorBuffer *buf )
Crée un tenseur avec le type de données d'entrée, la forme et le buf.
Acquiert une référence sur buf qui appartient à ce Tensor .
Tenseur
Tensor( DataType type )
Crée un Tensor vide du type de données donné.
Comme Tensor() , renvoie un Tensor unidimensionnel à 0 élément avec IsInitialized() renvoyant True. Consultez la documentation Tensor() pour plus de détails.
Tenseur
Tensor( float scalar_value )
Tenseur
Tensor( double scalar_value )
Tenseur
Tensor( int32 scalar_value )
Tenseur
Tensor( uint32 scalar_value )
Tenseur
Tensor( uint16 scalar_value )
Tenseur
Tensor( uint8 scalar_value )
Tenseur
Tensor( int16 scalar_value )
Tenseur
Tensor( int8 scalar_value )
Tenseur
Tensor( tstring scalar_value )
Tenseur
Tensor( complex64 scalar_value )
Tenseur
Tensor( complex128 scalar_value )
Tenseur
Tensor( int64 scalar_value )
Tenseur
Tensor( uint64 scalar_value )
Tenseur
Tensor( bool scalar_value )
Tenseur
Tensor( qint8 scalar_value )
Tenseur
Tensor( quint8 scalar_value )
Tenseur
Tensor( qint16 scalar_value )
Tenseur
Tensor( quint16 scalar_value )
Tenseur
Tensor( qint32 scalar_value )
Tenseur
Tensor( bfloat16 scalar_value )
Tenseur
Tensor( Eigen::half scalar_value )
Tenseur
Tensor( ResourceHandle scalar_value )
Tenseur
Tensor( const char *scalar_value )
Tenseur
Tensor( Tensor && other )
Déplacer le constructeur.
Après cet appel,
Tenseur
Tensor( T *t )=delete
Nombre total d'octets
size_t TotalBytes() const
Renvoie l'utilisation estimée de la mémoire de ce tenseur.
UnsafeCopyFromInternal
void UnsafeCopyFromInternal( const Tensor & other, DataType dtype, const TensorShape & shape )
Comme BitcastFrom, mais CHECK échoue si des conditions préalables ne sont pas remplies.
Obsolète. Utilisez plutôt BitcastFrom et vérifiez le statut renvoyé.
bit_casted_shape
TTypes< T, NDIMS >::Tensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes )
Renvoyez les données du tenseur à un Eigen::Tensor
avec la nouvelle forme spécifiée dans new_sizes
et convertissez-les en un nouveau dtype T
.
L'utilisation d'un bitcast est utile pour les opérations de déplacement et de copie. Le bitcast autorisé est la seule différence avec shaped()
.
bit_casted_shape
TTypes< T, NDIMS >::ConstTensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes ) const
Renvoyez les données du tenseur à un Eigen::Tensor
avec la nouvelle forme spécifiée dans new_sizes
et convertissez-les en un nouveau dtype T
.
L'utilisation d'un bitcast est utile pour les opérations de déplacement et de copie. Le bitcast autorisé est la seule différence avec shaped()
.
bit_casted_tensor
TTypes< T, NDIMS >::Tensor bit_casted_tensor()
Renvoie les données du tenseur à un Eigen::Tensor
avec la même taille mais une conversion au niveau du bit vers le dtype spécifié T
.
L'utilisation d'un bitcast est utile pour les opérations de déplacement et de copie. REMARQUE : c'est la même chose que tensor()
sauf qu'un bitcast est autorisé.
bit_casted_tensor
TTypes< T, NDIMS >::ConstTensor bit_casted_tensor() const
Renvoie les données du tenseur à un Eigen::Tensor
avec la même taille mais une conversion au niveau du bit vers le dtype spécifié T
.
L'utilisation d'un bitcast est utile pour les opérations de déplacement et de copie. REMARQUE : c'est la même chose que tensor()
sauf qu'un bitcast est autorisé.
données
void * data() const
dim_size
int64 dim_size( int d ) const
Accessoire pratique pour la forme tenseur.
s'assombrit
int dims() const
Accessoire pratique pour la forme tenseur.
Pour tous les accesseurs de forme, consultez les commentaires sur les méthodes pertinentes de TensorShape
dans tensor_shape.h
.
type
DataType dtype() const
Renvoie le type de données.
plat
TTypes< T >::Flat flat()
Renvoie les données du tenseur sous la forme d'un Eigen::Tensor
du type de données et d'une forme spécifiée.
Ces méthodes vous permettent d'accéder aux données avec les dimensions et tailles de votre choix. Vous n'avez pas besoin de connaître le nombre de dimensions du Tenseur pour les appeler. Cependant, ils CHECK
que le type correspond et que les dimensions demandées créent un Eigen::Tensor
avec le même nombre d'éléments que le tenseur.
Exemple:
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()
Renvoie les données sous forme d'Eigen::Tensor avec les dimensions NDIMS, en réduisant toutes les dimensions du Tensor sauf la dernière NDIMS-1 dans la première dimension du résultat.
Si NDIMS > dims() alors les dimensions principales de taille 1 seront ajoutées pour que le classement de sortie NDIMS.
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 )
Renvoie les données sous forme d'Eigen::Tensor avec les dimensions NDIMS, en réduisant les premières dimensions Tensor « début » dans la première dimension du résultat et les dimensions Tensor du dernier dims() - « begin » - NDIMS dans la dernière dimension du résultat.
Si 'begin' < 0 alors le |'begin'| les dimensions principales de taille 1 seront ajoutées. Si 'begin' + NDIMS > dims() alors 'begin' + NDIMS - dims() les dimensions de fin de taille 1 seront ajoutées.
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()
Renvoie les données sous forme d'Eigen::Tensor avec les dimensions NDIMS, en réduisant toutes les dimensions du Tensor à l'exception du premier NDIMS-1 dans la dernière dimension du résultat.
Si NDIMS > dims() alors les dimensions finales de taille 1 seront ajoutées pour que le classement de sortie NDIMS.
flat_outer_dims
TTypes< T, NDIMS >::ConstTensor flat_outer_dims() const
matrice
TTypes< T >::Matrix matrix()
matrice
TTypes< T >::ConstMatrix matrix() const
opérateur=
Tensor & operator=( const Tensor & other )
Attribuer un opérateur. Ce tenseur partage le stockage sous-jacent des autres.
opérateur=
Tensor & operator=( Tensor && other )
Déplacer l'opérateur. Voir le constructeur de déplacement pour plus de détails.
réinterpréter_dernière_dimension
TTypes< T, NDIMS >::Tensor reinterpret_last_dimension()
Renvoyez les données du tenseur à un Eigen::Tensor
avec les derniers éléments de dimension convertis en éléments uniques d'un type plus grand.
Par exemple, cela est utile pour les noyaux qui peuvent traiter les tenseurs NCHW_VECT_C int8 comme des tenseurs NCHW int32. La taille de (T) doit être égale à la taille du type d'élément d'origine * nombre d'éléments dans la dernière dimension d'origine. NDIMS doit être inférieur de 1 au nombre de dimensions d'origine.
réinterpréter_dernière_dimension
TTypes< T, NDIMS >::ConstTensor reinterpret_last_dimension() const
Renvoyez les données du tenseur à un Eigen::Tensor
avec les derniers éléments de dimension convertis en éléments uniques d'un type plus grand.
Par exemple, cela est utile pour les noyaux qui peuvent traiter les tenseurs NCHW_VECT_C int8 comme des tenseurs NCHW int32. La taille de (T) doit être égale à la taille du type d'élément d'origine * nombre d'éléments dans la dernière dimension d'origine. NDIMS doit être inférieur de 1 au nombre de dimensions d'origine.
scalaire
TTypes< T >::Scalar scalar()
scalaire
TTypes< T >::ConstScalar scalar() const
forme
const TensorShape & shape() const
Renvoie la forme du tenseur.
en forme
TTypes< T, NDIMS >::Tensor shaped( gtl::ArraySlice< int64 > new_sizes )
en forme
TTypes< T, NDIMS >::ConstTensor shaped( gtl::ArraySlice< int64 > new_sizes ) const
tenseur
TTypes< T, NDIMS >::Tensor tensor()
tenseur
TTypes< T, NDIMS >::ConstTensor tensor() const
tensor_data
StringPiece tensor_data() const
Renvoie un StringPièce mappant le tampon du tenseur actuel.
Le StringPièce renvoyé peut pointer vers un emplacement mémoire sur des périphériques que le processeur ne peut pas adresser directement.
REMARQUE : le tampon tensoriel sous-jacent est recompté, de sorte que la durée de vie du contenu mappé par StringPièce correspond à la durée de vie du tampon ; les appelants doivent veiller à ce que le tampon ne soit pas détruit pendant que le StringPièce est toujours utilisé.
EXIGE : DataTypeCanUseMemcpy(dtype()) .
non aligné_plat
TTypes< T >::UnalignedFlat unaligned_flat()
non aligné_plat
TTypes< T >::UnalignedConstFlat unaligned_flat() const
forme_non alignée
TTypes< T, NDIMS >::UnalignedTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes )
forme_non alignée
TTypes< T, NDIMS >::UnalignedConstTensor unaligned_shaped( gtl::ArraySlice< int64 > new_sizes ) const
vec
TTypes< T >::Vec vec()
Renvoie les données du tenseur sous la forme d'un Eigen::Tensor avec le type et les tailles de ce Tensor .
Utilisez ces méthodes lorsque vous connaissez le type de données et le nombre de dimensions du Tensor et que vous souhaitez qu'un Eigen::Tensor soit automatiquement dimensionné selon les tailles du Tensor. La vérification de l'implémentation échoue si le type ou les tailles ne correspondent pas.
Exemple:
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
Versions Const de toutes les méthodes ci-dessus.
~ Tenseur
~Tensor()