tensorflow:: 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 l'attribut « 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 tampon. | |
Tensor (DataType type) Crée un tenseur vide du type de données spécifié. | |
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) Constructeur de copie. | |
Tensor ( Tensor && other) Déplacer le constructeur. | |
~Tensor () |
fonctions publiques | |
|---|---|
AllocatedBytes () const | size_t |
AsProtoField (TensorProto *proto) const | void Remplit proto avec le contenu de *this tenseur. |
AsProtoTensorContent (TensorProto *proto) const | void |
BitcastFrom (const Tensor & other, DataType dtype, const TensorShape & shape) | Copiez l'autre tenseur dans celui-ci, 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 celui-ci et remodelez-le. |
DebugString (int num_values) const | string Un résumé du tenseur lisible par l'humain et adapté au débogage. |
DebugString () const | string |
DeviceSafeDebugString () const | string |
FillDescription (TensorDescription *description) const | void Remplissez le prototype 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 Analyser other et construire le tenseur. |
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT | bool |
IsAligned () const | bool Renvoie vrai si et seulement si ce tenseur est aligné. |
IsInitialized () const | bool Si nécessaire, ce tenseur a-t-il été initialisé ? |
IsSameSize (const Tensor & b) const | bool |
NumElements () const | int64 Accesseur pratique pour la forme du tenseur. |
SharesBufferWith (const Tensor & b) const | bool |
Slice (int64 dim0_start, int64 dim0_limit) const | Découpez ce tenseur selon 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 | string Convertissez les premières valeurs max_entries de *this en chaîne de caractères. |
TotalBytes () const | size_t Renvoie l'utilisation mémoire estimée de ce tenseur. |
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape) | void Comme BitcastFrom, mais CHECK échoue si l'une des conditions préalables n'est pas remplie. |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) | TTypes< T, NDIMS >:: Tensor Renvoie les données tensorielles à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et convertis en un nouveau dtype T |
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const | TTypes< T, NDIMS >::ConstTensor Renvoie les données tensorielles à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et convertis en un nouveau dtype T |
bit_casted_tensor () | TTypes< T, NDIMS >:: Tensor Renvoie les données du tenseur à un Eigen::Tensor de même taille mais converti en bit à bit au type de données spécifié T |
bit_casted_tensor () const | TTypes< T, NDIMS >::ConstTensor Renvoie les données du tenseur à un Eigen::Tensor de même taille mais converti en bit à bit au type de données spécifié T |
dim_size (int d) const | int64 Accesseur pratique pour la forme du tenseur. |
dims () const | int Accesseur pratique pour la forme du tenseur. |
dtype () const | DataType Renvoie le type de données. |
flat () | TTypes< T >::Flat Renvoie les données tensorielles sous 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'un Eigen::Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions du tenseur sauf la dernière NDIMS-1 à 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 Renvoie les données sous forme d'un Eigen::Tensor avec des dimensions NDIMS, en réduisant les premières dimensions du tenseur 'begin' à la première dimension du résultat et les dimensions du tenseur du dernier dims() - 'begin' - NDIMS à la dernière dimension du résultat. |
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'un Eigen::Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions du tenseur sauf la première NDIMS-1 à 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 & Opérateur d'affectation. Ce tenseur partage le stockage sous-jacent d'autres tenseurs. |
operator= ( Tensor && other) | Tensor & Opérateur de déplacement. Voir le constructeur de déplacement pour plus de détails. |
reinterpret_last_dimension () | TTypes< T, NDIMS >:: Tensor Renvoie les données du tenseur à un Eigen::Tensor dont les éléments de la dernière dimension sont convertis en éléments uniques d'un type plus grand. |
reinterpret_last_dimension () const | TTypes< T, NDIMS >::ConstTensor Renvoie les données du tenseur à un Eigen::Tensor dont les éléments de la dernière dimension sont 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 forme d'un Eigen::Tensor avec le type et les tailles de ce Tensor . |
vec () const | TTypes< T >::ConstVec Versions constantes 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 le contenu de *this tenseur.
AsProtoField() remplit le champ répété pour proto.dtype() , tandis que AsProtoTensorContent() encode le contenu dans proto.tensor_content() sous une forme compacte.
AsProtoTensorContent
void AsProtoTensorContent( TensorProto *proto ) const
BitcastFrom
Status BitcastFrom( const Tensor & other, DataType dtype, const TensorShape & shape )
Copiez l'autre tenseur dans celui-ci, 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 exige que l' other tenseur et le type et la forme donnés soient « compatibles » (c'est-à-dire qu'ils occupent le même nombre d'octets).
Spécifiquement:
forme.num_éléments() * TailleTypeDeDonnées(type)
doit être égal
autre.num_éléments() * TailleTypeDeDonnées(autre.dtype())
De plus, cette fonction nécessite :
- DataTypeSize(other.dtype()) != 0
- DataTypeSize(type) != 0
Si l'une des conditions requises n'est pas remplie, errors::InvalidArgument est renvoyé.
Copier depuis
bool CopyFrom( const Tensor & other, const TensorShape & shape ) TF_MUST_USE_RESULT
Copiez l'autre tenseur dans celui-ci et remodelez-le.
Ce tenseur partage le stockage sous-jacent de other. Renvoie true si et seulement si other.shape() possède le même nombre d'éléments de la shape donnée.
Chaîne de débogage
string DebugString( int num_values ) const
Un résumé du tenseur lisible par l'humain et adapté au débogage.
Chaîne de débogage
string DebugString() const
Chaîne de débogage sécurisée de l'appareil
string DeviceSafeDebugString() const
Description du remplissage
void FillDescription( TensorDescription *description ) const
Remplissez le prototype TensorDescription avec des métadonnées sur le tenseur utiles pour la surveillance et le débogage.
FromProto
bool FromProto( const TensorProto & other ) TF_MUST_USE_RESULT
Analyser other et construire le tenseur.
Renvoie true si et seulement si l'analyse syntaxique réussit. En cas d'échec, l'état de *this reste inchangé.
FromProto
bool FromProto( Allocator *a, const TensorProto & other ) TF_MUST_USE_RESULT
IsAligned
bool IsAligned() const
Renvoie vrai si et seulement si ce tenseur est aligné.
EstInitialisé
bool IsInitialized() const
Si nécessaire, ce tenseur a-t-il été initialisé ?
Les tenseurs à élément nul sont toujours considérés comme initialisés, même s'ils n'ont jamais été affectés et qu'aucune mémoire ne leur a été allouée.
IsSameSize
bool IsSameSize( const Tensor & b ) const
Nombre d'éléments
int64 NumElements() const
Accesseur pratique pour la forme du tenseur.
Partage le tampon avec
bool SharesBufferWith( const Tensor & b ) const
Tranche
Tensor Slice( int64 dim0_start, int64 dim0_limit ) const
Découpez ce tenseur selon la 1ère dimension.
Autrement dit, le tenseur renvoyé satisfait la condition `returned[i, ...] == this[dim0_start + i, ...]`. Le tenseur renvoyé partage le même tampon de tenseur sous-jacent que ce tenseur.
REMARQUE : Le tenseur renvoyé peut ne pas respecter les mêmes exigences d’alignement que le tenseur d’origine, selon sa forme. L’appelant doit vérifier l’alignement du tenseur renvoyé avant d’appeler certaines méthodes qui requièrent un alignement (par exemple, flat() )`, ` tensor() ).
REMARQUE : Lorsqu’elle reçoit un tenseur à N dimensions en entrée, cette méthode renvoie un tenseur également à N dimensions. Pour sélectionner un sous-tenseur, consultez la méthode SubSlice.
REQUIERT : dims() >= 1 REQUIERT : 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 prend en entrée un tenseur à N dimensions, cette méthode renvoie un tenseur à N-1 dimensions, ce dernier étant une sous-tranche du tenseur d'entrée selon la première dimension. Les N-1 dimensions du tenseur renvoyé correspondent aux N-1 dernières dimensions du tenseur d'entrée.
REMARQUE : Le tenseur renvoyé peut ne pas respecter les mêmes exigences d’alignement que le tenseur d’origine, selon sa forme. L’appelant doit vérifier l’alignement du tenseur renvoyé avant d’appeler certaines méthodes qui requièrent un alignement (par exemple, flat() )`, ` tensor() ).
REQUIERT : dims() >= 1 REQUIERT : 0 <= dim0_start < dim_size(0)
Résumé de la valeur
string SummarizeValue( int64 max_entries, bool print_v2 ) const
Convertissez les premières valeurs max_entries de *this en chaîne de caractères.
Tenseur
Tensor()
Crée un tenseur flottant unidimensionnel à 0 élément.
Le tenseur renvoyé n'est pas un scalaire (forme {}), mais un tenseur unidimensionnel vide (forme {0}, NumElements() == 0). Comme il ne contient aucun élément, il n'est pas nécessaire de lui assigner une valeur et il est initialisé par défaut ( IsInitialized() vaut vrai). Si ce comportement n'est pas souhaitable, envisagez de créer un scalaire à un seul élément qui, lui, nécessite une initialisation.
Tensor(DT_FLOAT, TensorShape({}))
Tensor
Tensor( DataType type, const TensorShape & shape )
Crée un tenseur du type et de la shape donnés.
Si LogMemory::IsEnabled() est activé, l'allocation est consignée comme provenant d'un noyau et d'une étape inconnus. L'appel direct au constructeur Tensor depuis une opération est obsolète : utilisez les méthodes allocate_* de OpKernelConstruction/OpKernelContext pour allouer un nouveau tenseur, qui enregistrent 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() est activé, l'allocation est consignée comme provenant d'un noyau et d'une étape inconnus. L'appel direct au constructeur Tensor depuis une opération est obsolète : utilisez les méthodes allocate_* de OpKernelConstruction/OpKernelContext pour allouer un nouveau tenseur, qui enregistrent le noyau et l'étape.
a doit survivre à la durée de vie de ce tenseur .
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 l'attribut « allocation_attr » spécifié pour allouer le tampon sous-jacent.
Si le noyau et le pas sont connus, l'attribut `allocation_attr.allocation_will_be_logged` doit être défini sur `true` et la méthode `LogMemory::RecordTensorAllocation` doit être appelée après la construction du tenseur. L'appel direct au constructeur de `Tensor` depuis une opération est obsolète : utilisez les méthodes `allocate_*` des classes `OpKernelConstruction` et `OpKernelContext` pour allouer un nouveau tenseur, qui enregistrent le noyau et le pas.
a doit survivre à la durée de vie de ce tenseur .
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 tampon.
Acquiert une référence sur buf qui appartient à ce tenseur .
Tenseur
Tensor( DataType type )
Crée un tenseur vide du type de données spécifié.
Comme Tensor() , cette méthode renvoie un tenseur unidimensionnel sans élément, et IsInitialized() renvoie True. Consultez la documentation de 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,
TotalBytes
size_t TotalBytes() const
Renvoie l'utilisation mémoire estimée de ce tenseur.
Copie non sécurisée à partir de l'interne
void UnsafeCopyFromInternal( const Tensor & other, DataType dtype, const TensorShape & shape )
Comme BitcastFrom, mais CHECK échoue si l'une des conditions préalables n'est pas remplie.
Déprécié. Utilisez plutôt BitcastFrom et vérifiez le statut renvoyé.
bit_casté_forme
TTypes< T, NDIMS >::Tensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes )
Renvoie les données tensorielles à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et convertis 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_casté_forme
TTypes< T, NDIMS >::ConstTensor bit_casted_shaped( gtl::ArraySlice< int64 > new_sizes ) const
Renvoyer les données tensorielles à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et convertir 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() .
tenseur_converti_bit
TTypes< T, NDIMS >::Tensor bit_casted_tensor()
Renvoie les données du tenseur à un Eigen::Tensor de même taille mais converti en bit à bit au type de données spécifié T
L'utilisation d'un bitcast est utile pour les opérations de déplacement et de copie. REMARQUE : cela est identique à tensor() à la différence qu'un bitcast est autorisé.
tenseur_converti_bit
TTypes< T, NDIMS >::ConstTensor bit_casted_tensor() const
Renvoie les données du tenseur à un Eigen::Tensor de même taille mais converti en bit à bit au type de données spécifié T
L'utilisation d'un bitcast est utile pour les opérations de déplacement et de copie. REMARQUE : cela est identique à tensor() à la différence qu'un bitcast est autorisé.
taille_dim
int64 dim_size( int d ) const
Accesseur pratique pour la forme du tenseur.
dimensions
int dims() const
Accesseur pratique pour la forme du tenseur.
Pour tous les accesseurs de forme, voir les commentaires des méthodes pertinentes de TensorShape dans tensor_shape.h .
dtype
DataType dtype() const
Renvoie le type de données.
plat
TTypes< T >::Flat flat()
Renvoie les données tensorielles sous 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 la taille de votre choix. Il n'est pas nécessaire de connaître le nombre de dimensions du tenseur pour les appeler. Cependant, elles 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
dimensions_intérieures_plates
TTypes< T, NDIMS >::Tensor flat_inner_dims()
Renvoie les données sous forme d'un Eigen::Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions du tenseur sauf la dernière NDIMS-1 à la première dimension du résultat.
Si NDIMS > dims() , alors les dimensions principales de taille 1 seront ajoutées pour que le rang de sortie soit NDIMS.
dimensions_intérieures_plates
TTypes< T, NDIMS >::ConstTensor flat_inner_dims() const
dimensions_intérieures_extérieures_plates
TTypes< T, NDIMS >::Tensor flat_inner_outer_dims( int64 begin )
Renvoie les données sous forme d'un Eigen::Tensor avec des dimensions NDIMS, en réduisant les premières dimensions du tenseur 'begin' à la première dimension du résultat et les dimensions du tenseur du dernier dims() - 'begin' - NDIMS à la dernière dimension du résultat.
Si 'begin' < 0, les dimensions initiales de taille 1 seront ajoutées. Si 'begin' + NDIMS > dims( ), les dimensions finales de taille 1 seront ajoutées.
dimensions_intérieures_extérieures_plates
TTypes< T, NDIMS >::ConstTensor flat_inner_outer_dims( int64 begin ) const
dimensions extérieures plates
TTypes< T, NDIMS >::Tensor flat_outer_dims()
Renvoie les données sous forme d'un Eigen::Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions du tenseur sauf la première NDIMS-1 à la dernière dimension du résultat.
Si NDIMS > dims() , alors des dimensions finales de taille 1 seront ajoutées pour que le rang de sortie soit NDIMS.
dimensions extérieures plates
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 )
Opérateur d'affectation. Ce tenseur partage le stockage sous-jacent d'autres tenseurs.
opérateur=
Tensor & operator=( Tensor && other )
Opérateur de déplacement. Voir le constructeur de déplacement pour plus de détails.
réinterpréter_dernière_dimension
TTypes< T, NDIMS >::Tensor reinterpret_last_dimension()
Renvoie les données du tenseur à un Eigen::Tensor dont les éléments de la dernière dimension sont convertis en éléments uniques d'un type plus grand.
Par exemple, cela est utile pour les noyaux capables de 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 multipliée par le 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
Renvoie les données du tenseur à un Eigen::Tensor dont les éléments de la dernière dimension sont convertis en éléments uniques d'un type plus grand.
Par exemple, cela est utile pour les noyaux capables de 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 multipliée par le 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()
Renvoie les données du tenseur sous forme de TensorMap de taille fixe 1 : TensorMap .
L'utilisation scalar() permet au compilateur d'effectuer des optimisations car la taille du tenseur est connue au moment de la compilation.
scalaire
TTypes< T >::ConstScalar scalar() const
forme
const TensorShape & shape() const
Renvoie la forme du tenseur.
forme
TTypes< T, NDIMS >::Tensor shaped( gtl::ArraySlice< int64 > new_sizes )
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
données tensorielles
StringPiece tensor_data() const
Renvoie un StringPiece mappant le tampon du tenseur actuel.
La StringPiece renvoyée peut pointer vers un emplacement mémoire sur des périphériques que le processeur ne peut pas adresser directement.
REMARQUE : Le tampon de tenseur sous-jacent est géré par comptage de références, de sorte que la durée de vie du contenu mappé par StringPiece correspond à la durée de vie du tampon ; les appelants doivent s’assurer que le tampon n’est pas détruit pendant que StringPiece est encore utilisé.
REQUIERT : DataTypeCanUseMemcpy(dtype()) .
plat non aligné
TTypes< T >::UnalignedFlat unaligned_flat()
plat non aligné
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
vecteur
TTypes< T >::Vec vec()
Renvoie les données tensorielles sous 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 tenseur et que vous souhaitez qu'un Eigen::Tensor soit automatiquement dimensionné aux dimensions du tenseur. La vérification de l'implémentation échoue en cas d'incompatibilité de type ou de dimensions.
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 constantes de toutes les méthodes ci-dessus.
~Tenseur
~Tensor()