Shape

classe finale publique

La forme d'un Tensor ou NdArray .

Une Shape définit les tailles le long de ses axes. Il peut contenir une taille inconnue pour l'un des axes ou peut être totalement inconnu, auquel cas même le nombre d'axes n'est pas connu. Si la taille d'un axe est inconnue, UNKNOWN_SIZE doit être utilisé comme taille.

Des champs

public statique long UNKNOWN_SIZE La taille d'un axe inconnu ou la taille totale inconnue pour une forme inconnue.

Méthodes publiques

Forme
ajouter (longue dernièreDimension)
Renvoie une nouvelle forme, avec une nouvelle dernière dimension ajoutée.
Forme
ajouter ( forme autre)
Renvoie une nouvelle forme, avec les dimensions d'une autre forme ajoutées.
long[]
commeArray ()
Renvoie une copie défensive des axes de cette forme.
booléen
est égal (Obj objet)
Égal à l’implémentation pour les formes.
booléen
hasUnknownDimension ()
Indique si une ou plusieurs dimensions de cette forme ont une taille inconnue.
int
Forme
tête ()
Renvoie une forme unidimensionnelle dont la première dimension correspond à la première dimension de cette forme.
booléen statique
isCompatible (long dim, long otherDim)
Testez pour voir si deux dimensions de forme sont compatibles.
booléen
estCompatibleAvec (Forme de forme )
Détermine si une autre forme est compatible avec celle-ci.
booléen
estMatrice ()
Indique si cette forme est la forme d'une matrice
booléen
estScalaire ()
Indique si cette forme représente un scalaire.
booléen
estInconnu ()
Indique si le nombre de dimensions de cette forme est inconnu.
booléen
estVecteur ()
Indique si cette forme est la forme d'un vecteur.
int
numDimensions ()
Renvoie le nombre de dimensions de cette forme.
Forme statique
de (long... dimensionTailles)
Créez une forme représentant une valeur scalaire ou à N dimensions.
Forme
préfixer ( Forme autre)
Renvoie une nouvelle forme, avec les dimensions d'une autre forme ajoutées au début.
Forme
préfixer (long firstDimension)
Renvoie une nouvelle forme, avec une nouvelle première dimension ajoutée.
Forme statique
scalaire ()
Crée une forme représentant une valeur scalaire.
long
taille (int i)
La taille de la dimension avec l'index donné.
long
taille ()
Renvoie le nombre total d'éléments qu'un Tensor avec cette forme aurait.
Forme
sous-forme (int début, int fin)
Renvoie une forme dimensionnelle end - begin dont les dimensions correspondent à cette forme du begin à end .
Forme
queue ()
Renvoie une nouvelle forme, dont la première dimension est supprimée.
Forme
prendre (int n)
Renvoie une forme à n dimensions dont les dimensions correspondent aux n premières dimensions de cette forme
Forme
prendreDernier (int n)
Renvoie une forme à n dimensions dont les dimensions correspondent aux n dernières dimensions de cette forme.
Chaîne
àChaîne ()
Description succincte de la forme destinée au débogage.
Forme statique
inconnu ()
Crée une forme représentant un nombre inconnu de dimensions.

Méthodes héritées

Des champs

public statique long UNKNOWN_SIZE

La taille d'un axe inconnu ou la taille totale inconnue pour une forme inconnue.

Méthodes publiques

Ajout de forme publique (long lastDimension)

Renvoie une nouvelle forme, avec une nouvelle dernière dimension ajoutée. Pour que cet appel réussisse, isUnknown() doit être false .

Paramètres
dernièreDimension la dimension à ajouter
Retour
  • une nouvelle forme avec les dimensions de cette forme suivies de la dimension donnée, jamais nulle

public Shape append ( Forme autre)

Renvoie une nouvelle forme, avec les dimensions d'une autre forme ajoutées. Pour cette forme et l’autre forme, isUnknown() doit renvoyer false. Par exemple, @code Shape.of(3,4).append(Shape.of(1,2)) => Shape.of(3,4,1,2) }

Paramètres
autre une autre forme, ne doit pas être null , ne doit pas être inconnue
Retour
  • Une nouvelle forme composée des dimensions de cette forme suivies des dimensions de la forme donnée

public long[] asArray ()

Renvoie une copie défensive des axes de cette forme. Modifications du tableau renvoyé pour ne pas modifier l'état de cette forme. Renvoie null si isUnknown() est vrai.

public booléen égal (Objet obj)

Égal à l’implémentation pour les formes. Deux formes sont considérées comme égales si ssi :

  • le nombre de dimensions est défini et égal pour les deux
  • la taille de chaque dimension est définie et égale pour les deux

Si l'une ou l'autre forme a des dimensions inconnues (même si elles sont identiques dans les deux) ou si l'une ou l'autre forme a un nombre inconnu de dimensions (même si les deux renvoient true pour isUnknown() ), elles ne sont pas considérées comme égales ! Cependant, une forme sera toujours égale à elle-même, même si elle est inconnue ou si elle contient des dimensions inconnues.

public booléen hasUnknownDimension ()

Indique si une ou plusieurs dimensions de cette forme ont une taille inconnue.

code de hachage int public ()

Tête de forme publique ()

Renvoie une forme unidimensionnelle dont la première dimension correspond à la première dimension de cette forme.

public static boolean isCompatible (long dim, long otherDim)

Testez pour voir si deux dimensions de forme sont compatibles.

Les dimensions sont compatibles si l'une des dimensions est Shape.UNKNOWN_SIZE ou si les deux dimensions sont égales.

Paramètres
faible la première dimension
autreDim la deuxième dimension
Retour
  • vrai, si les deux dimensions sont compatibles

public boolean isCompatibleWith (forme forme )

Détermine si une autre forme est compatible avec celle-ci.

Deux formes éventuellement partiellement définies sont compatibles s'il existe une forme entièrement définie que les deux formes peuvent représenter. Ainsi, la compatibilité permet au code d’inférence de forme de raisonner sur des formes partiellement définies. Par exemple:

  • Shape.unknown() est compatible avec toutes les formes.
  • Shape(UNKNOWN_SIZE, UNKNOWN_SIZE) est compatible avec toutes les formes bidimensionnelles, telles que Shape(32, 784) , ainsi que Shape.unknown() . Il n'est pas compatible avec, par exemple, Shape(UNKNOWN_SIZE) ou Shape(UNKNOWN_SIZE, UNKNOWN_SIZE, UNKNOWN_SIZE) .
  • Shape(32, UNKNOWN_SIZE) est compatible avec toutes les formes bidimensionnelles de taille 32 dans la 0ème dimension, ainsi que Shape(UNKNOWN_SIZE, UNKNOWN_SIZE) et Shape.unknown() . Il n'est pas compatible avec, par exemple, Shape(32) , Shape(32, UNKNOWN_SIZE, 1) ou Shape(64, UNKNOWN_SIZE) .
  • Shape(32, 784) est compatible avec lui-même, ainsi que Shape(32, UNKNOWN_SIZE) , Shape(UNKNOWN_SIZE, 784) , Shape(UNKNOWN_SIZE, UNKNOWN_SIZE) et Shape.unknown() . Il n'est pas compatible avec, par exemple, Shape(32, 1, 784) ou Shape(UNKNOWN_SIZE) .

La relation de compatibilité est réflexive et symétrique, mais pas transitive. Par exemple, Shape(32, 784) est compatible avec Shape.unknown() et Shape.unknown() est compatible avec Shape(4, 4) , mais Shape(32, 784) n'est pas compatible avec Shape(4, 4) .

La compatibilité n'est pas la même chose que la diffusion. Les formes compatibles doivent avoir le même nombre de dimensions et pour chaque paire de dimensions, une dimension doit être égale aux autres dimensions ou au moins une des dimensions de la paire doit être UNKNOWN_SIZE.

La diffusion autorise différentes dimensions, mais les dimensions appariées doivent être égales ou une dimension doit être égale à 1. Si une forme a moins de dimensions qu'une autre forme, la forme la plus petite est « étirée » avec des dimensions de 1.

Paramètres
forme L'autre forme
Retour
  • vrai, si les deux formes sont compatibles.

isMatrix booléen public ()

Indique si cette forme est la forme d'une matrice

isScalar booléen public ()

Indique si cette forme représente un scalaire.

public booléen isUnknown ()

Indique si le nombre de dimensions de cette forme est inconnu.

public booléen isVector ()

Indique si cette forme est la forme d'un vecteur.

public int numDimensions ()

Renvoie le nombre de dimensions de cette forme. -1 si inconnu, 0 pour un scalaire, 1 pour un vecteur, 2 pour une matrice etc.

forme statique publique de (long... dimensionSizes)

Créez une forme représentant une valeur scalaire ou à N dimensions.

Crée une forme représentant une valeur scalaire ou à N dimensions (N étant au moins 1), avec la taille fournie pour chaque dimension. A -1 indique que la taille de la dimension correspondante est inconnue. Si aucune taille n'est fournie, une forme représentant un scalaire est créée. Par exemple :

// A 2-element vector.
 Shape vector = Shape.of(2);

 // A 2x3 matrix.
 Shape matrix = Shape.of(2, 3);

 // A matrix with 4 columns but an unknown number of rows.
 // This is typically used to indicate the shape of tensors that represent
 // a variable-sized batch of values. The Shape below might represent a
 // variable-sized batch of 4-element vectors.
 Shape batch = Shape.of(-1, 4);

 // A scalar. For readability, you should prefer calling Shape.scalar()
 Shape scalar = Shape.of()
 

Paramètres
dimensionTailles nombre d'éléments dans chaque dimension de cette forme, le cas échéant, ou UNKNOWN_SIZE si inconnu.
Retour
  • une nouvelle forme

public Préfixe de forme ( Forme autre)

Renvoie une nouvelle forme, avec les dimensions d'une autre forme ajoutées au début. Pour cette forme et l’autre forme, isUnknown() doit renvoyer false. Par exemple Shape.of(3,4).prepend(Shape.of(1,2)) => Shape.of(1,2,3,4)

Paramètres
autre une autre forme, ne doit pas être null , ne doit pas être inconnue
Retour
  • Une nouvelle forme composée des dimensions de la forme donnée suivies des dimensions de cette forme, jamais nulles

Préfixe de forme public (long firstDimension)

Renvoie une nouvelle forme, avec une nouvelle première dimension ajoutée. Pour que cet appel réussisse, isUnknown() doit être false .

Paramètres
premièreDimension la dimension à ajouter
Retour
  • une nouvelle forme avec la dimension donnée en premier, suivie des dimensions de cette forme, jamais nulles

Scalaire de forme statique public ()

Crée une forme représentant une valeur scalaire.

Retour
  • Une forme sans dimensions pour laquelle isScalar() est vrai, jamais nul.

taille longue publique (int i)

La taille de la dimension avec l'index donné.

Si isUnknown() est vrai ou si la taille de la dimension avec l'index donné a une taille inconnue, UNKNOWN_SIZE est renvoyé.

Paramètres
je l'index de la dimension pour laquelle obtenir la taille. Si cette forme a un nombre connu de dimensions, elle doit être < numDimensions() . L'index peut être négatif, auquel cas la position est comptée à partir de la fin de la forme. Par exemple : size(-1) renvoie la taille de la dernière dimension, size(-2) la taille de l'avant-dernière dimension, etc.
Retour
  • La taille de la dimension avec l'index donné si elle est connue, UNKNOWN_SIZE sinon.

taille longue publique ()

Renvoie le nombre total d'éléments qu'un Tensor avec cette forme aurait.

Si isUnknown() est vrai ou hasUnknownDimension() est vrai, UNKNOWN_SIZE est renvoyé.

Retour
  • Le nombre total d'éléments qu'un Tensor avec cette forme aurait s'il pouvait être calculé, sinon UNKNOWN_SIZE .

sous-forme de forme publique (int début, int fin)

Renvoie une forme dimensionnelle end - begin dont les dimensions correspondent à cette forme du begin à end .

Paramètres
commencer Par où commencer la sous-forme.
fin Où terminer la sous-forme, exclusif.
Retour
  • la sous-forme délimitée par le début et la fin.

Queue de forme publique ()

Renvoie une nouvelle forme, dont la première dimension est supprimée.

Prise de forme publique (int n)

Renvoie une forme à n dimensions dont les dimensions correspondent aux n premières dimensions de cette forme

Paramètres
n le nombre de dimensions principales à obtenir doit être <= que numDimensions()
Retour
  • une forme à n dimensions dont les n premières dimensions correspondent aux n premières dimensions de cette forme

forme publique takeLast (int n)

Renvoie une forme à n dimensions dont les dimensions correspondent aux n dernières dimensions de cette forme.

Paramètres
n le nombre de dimensions finales à obtenir doit être <= que numDimensions()
Retour
  • une forme à n dimensions dont les dimensions correspondent aux n dernières dimensions de cette forme, jamais nulle

chaîne publique versString ()

Description succincte de la forme destinée au débogage.

forme statique publique inconnue ()

Crée une forme représentant un nombre inconnu de dimensions.

Retour
  • Une forme pour laquelle isUnknown() est vraie, jamais nulle.