tensorflow :: Tenseur

#include <tensor.h>

Représente un tableau de valeurs à n dimensions.

Résumé

Constructeurs et destructeurs

Tensor ()
Crée un tenseur flottant à 1 dimension et à 0 élément.
Tensor (DataType type, const TensorShape & shape)
Crée un Tensor du type et de la shape donnés.
Tensor (Allocator *a, DataType type, const TensorShape & shape)
Crée un tenseur avec le type et la shape 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 la shape 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, la forme et le buf d'entrée.
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 ()

Fonctions publiques

AllocatedBytes () const
size_t
AsProtoField (TensorProto *proto) const
void
Remplit proto avec *this le contenu de *this tenseur.
AsProtoTensorContent (TensorProto *proto) const
void
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.
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
string
Un résumé lisible par l'homme du tenseur adapté au débogage.
DebugString () const
string
DeviceSafeDebugString () const
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
Analyser other et construire le tenseur.
FromProto (Allocator *a, const TensorProto & other) TF_MUST_USE_RESULT
bool
IsAligned () const
bool
Renvoie vrai ssi 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
Accesseur pratique pour la forme tenseur.
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
string
max_entries les premières valeurs max_entries de *this en une chaîne.
TotalBytes () const
size_t
Renvoie l'utilisation de la mémoire estimée de ce tenseur.
UnsafeCopyFromInternal (const Tensor & other, DataType dtype, const TensorShape & shape)
void
Comme BitcastFrom, mais CHECK échoue si les conditions préalables ne sont pas remplies.
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes)
TTypes< T, NDIMS >:: Tensor
Renvoie les données du tenseur à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et new_sizes en un nouveau dtype T
bit_casted_shaped (gtl::ArraySlice< int64 > new_sizes) const
TTypes< T, NDIMS >::ConstTensor
Renvoie les données du tenseur à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et new_sizes 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 un cast au niveau du bit vers le dtype T spécifié.
bit_casted_tensor () const
TTypes< T, NDIMS >::ConstTensor
Renvoie les données du tenseur à un Eigen::Tensor avec la même taille mais un cast au niveau du bit vers le dtype T spécifié.
dim_size (int d) const
int64
Accesseur pratique pour la forme tenseur.
dims () const
int
Accesseur 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 la forme d'un Eigen :: Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions Tensor sauf le dernier 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
Renvoie les données sous forme de Eigen :: Tensor avec des dimensions NDIMS, en réduisant les premières dimensions Tensor 'begin' dans la première dimension du résultat et les dimensions Tensor des dernières dims () - 'begin' - NDIMS dans la dernière 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 la forme d'un Eigen :: Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions Tensor mais le 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)
Attribuer un opérateur. Ce tenseur partage le stockage sous-jacent des autres.
operator= ( Tensor && other)
Déplacer l'opérateur. Voir le constructeur de mouvement pour plus de détails.
reinterpret_last_dimension ()
TTypes< T, NDIMS >:: Tensor
Renvoie 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
Renvoie 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
Renvoie les données Tensor sous forme de TensorMap de taille fixe 1: TensorMap > TensorMap > .
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' 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

AllocatedBytes

size_t AllocatedBytes() const 

AsProtoField

void AsProtoField(
  TensorProto *proto
) const 

Remplit proto avec *this 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 

Bitcast à partir de

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 et 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

other.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, errors :: InvalidArgument est renvoyé.

Copier

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 ssi que other.shape() a le même nombre d'éléments de la shape donnée.

DebugString

string DebugString(
  int num_values
) const 

Un résumé lisible par l'homme du tenseur adapté au débogage.

DebugString

string DebugString() const 

DeviceSafeDebugString

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

Analyser other et construire 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

IsAligned

bool IsAligned() const 

Renvoie vrai ssi ce tenseur est aligné.

IsInitialized

bool IsInitialized() const 

Si nécessaire, ce Tensor a-t-il été initialisé?

Les Tensors à zéro élément sont toujours considérés comme initialisés, même s'ils n'ont jamais été affectés et n'ont pas de mémoire allouée.

IsSameSize

bool IsSameSize(
  const Tensor & b
) const 

NumElements

int64 NumElements() const 

Accesseur pratique pour la forme tenseur.

PartagesBufferAvec

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 retourné satisfait renvoyé [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 la même exigence 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 un tenseur également avec N dimensions. Si vous souhaitez sélectionner un sous-tenseur, voir SubSlice.

REQUIS: dims() > = 1 REQUIS: 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 avec N-1 dimensions, où le tenseur renvoyé est une sous-tranche du tenseur d'entrée le long de la première dimension. Les N-1 dimensions du tenseur renvoyé sont les N-1 dernières dimensions du tenseur d'entrée.

REMARQUE: le tenseur renvoyé peut ne pas satisfaire la même exigence 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 nécessitent un alignement (par exemple, flat() , tensor() ).

REQUIS: dims() > = 1 REQUIS: 0 <= dim0_start < dim_size(0)

SummarizeValue

string SummarizeValue(
  int64 max_entries,
  bool print_v2
) const 

max_entries les premières valeurs max_entries de *this en une chaîne.

Tenseur

 Tensor()

Crée un tenseur flottant à 1 dimension et à 0 élément.

Le Tensor renvoyé n'est pas un scalaire (shape {}), mais plutôt un Tensor unidimensionnel vide (shape {0}, NumElements () == 0). Puisqu'il n'a aucun élément, il n'a pas besoin de lui être assigné et est initialisé par défaut ( IsInitialized () est vrai). 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 de la 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 la shape 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 must 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 la shape 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, la forme et le buf d'entrée.

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 () , retourne un 1-dimensionnelle, 0-élément Tensor avec IsInitialized () retournant Vrai. 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(
  const Tensor & other
)

Copier le constructeur.

Tenseur

 Tensor(
  Tensor && other
)

Déplacer le constructeur.

Après cet appel, est destructible en toute sécurité et peut être assigné à, mais les autres appels sur celui-ci (par exemple la manipulation de forme) ne sont pas valides.

TotalBytes

size_t TotalBytes() const 

Renvoie l'utilisation de la mémoire estimée de ce tenseur.

UnsafeCopyFromInternal

void UnsafeCopyFromInternal(
  const Tensor & other,
  DataType dtype,
  const TensorShape & shape
)

Comme BitcastFrom, mais CHECK échoue si les conditions préalables ne sont pas remplies.

Obsolète. Utilisez plutôt BitcastFrom et vérifiez l' état renvoyé.

bit_casted_shaped

TTypes< T, NDIMS >::Tensor bit_casted_shaped(
  gtl::ArraySlice< int64 > new_sizes
)

Renvoie les données du tenseur à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et new_sizes 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 par rapport à shape shaped() .

bit_casted_shaped

TTypes< T, NDIMS >::ConstTensor bit_casted_shaped(
  gtl::ArraySlice< int64 > new_sizes
) const 

Renvoie les données du tenseur à un Eigen::Tensor avec la nouvelle forme spécifiée dans new_sizes et new_sizes 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 par rapport à shape 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 un cast au niveau du bit vers le dtype T spécifié.

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 un cast au niveau du bit vers le dtype T spécifié.

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é.

dim_size

int64 dim_size(
  int d
) const 

Accesseur pratique pour la forme tenseur.

s'assombrit

int dims() const 

Accesseur pratique pour la forme tenseur.

Pour tous les accesseurs de forme, voir les commentaires pour les 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 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 Tensor pour les appeler. Cependant, ils CHECK que le type correspond et 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({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()

Renvoie les données sous la forme d'un Eigen :: Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions Tensor sauf le dernier NDIMS-1 dans la première dimension du résultat.

Si NDIMS> dims (), les dimensions principales de taille 1 seront ajoutées pour créer le rang 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 la forme d'un Eigen :: Tensor avec des dimensions NDIMS, en réduisant les premières dimensions Tensor 'begin' dans la première dimension du résultat et les dimensions Tensor des dernières 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 la forme d'un Eigen :: Tensor avec des dimensions NDIMS, en réduisant toutes les dimensions Tensor mais le premier NDIMS-1 dans la dernière dimension du résultat.

Si NDIMS> dims (), les dimensions de fin de taille 1 seront ajoutées pour créer le rang 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 mouvement pour plus de détails.

reinterpret_last_dimension

TTypes< T, NDIMS >::Tensor reinterpret_last_dimension()

Renvoie 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, ceci 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 original de dimensions.

reinterpret_last_dimension

TTypes< T, NDIMS >::ConstTensor reinterpret_last_dimension() const 

Renvoie 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, ceci 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 original de dimensions.

scalaire

TTypes< T >::Scalar scalar()

Renvoie les données Tensor sous forme de TensorMap de taille fixe 1: TensorMap > TensorMap > .

L'utilisation de 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 

façonner

const TensorShape & shape() const 

Renvoie la forme du tenseur.

en forme de

TTypes< T, NDIMS >::Tensor shaped(
  gtl::ArraySlice< int64 > new_sizes
)

en forme de

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 StringPiece mappant le tampon du tenseur actuel.

Le StringPiece retourné peut pointer vers un emplacement mémoire sur des périphériques que le CPU ne peut pas adresser directement.

REMARQUE: le tampon de tenseur sous-jacent est recompté, de sorte que la durée de vie du contenu mappé par le StringPiece correspond à la durée de vie du tampon; les appelants doivent faire en sorte que le tampon ne soit pas détruit tant que StringPiece est encore utilisé.

REQUIERT: 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()

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 voulez un Eigen :: Tensor automatiquement dimensionné aux tailles 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(); // 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 

Versions const de toutes les méthodes ci-dessus.

~ Tenseur

 ~Tensor()