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.
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 | |
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 | |
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 | |
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
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 |
---|
Retours
- 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 |
---|
Retours
- 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 |
Retours
- 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 queShape(32, 784)
, ainsi queShape.unknown()
. Il n'est pas compatible avec, par exemple,Shape(UNKNOWN_SIZE)
ouShape(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 queShape(UNKNOWN_SIZE, UNKNOWN_SIZE)
etShape.unknown()
. Il n'est pas compatible avec, par exemple,Shape(32)
,Shape(32, UNKNOWN_SIZE, 1)
ouShape(64, UNKNOWN_SIZE)
. -
Shape(32, 784)
est compatible avec lui-même, ainsi queShape(32, UNKNOWN_SIZE)
,Shape(UNKNOWN_SIZE, 784)
,Shape(UNKNOWN_SIZE, UNKNOWN_SIZE)
etShape.unknown()
. Il n'est pas compatible avec, par exemple,Shape(32, 1, 784)
ouShape(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 |
---|
Retours
- 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. |
---|
Retours
- 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 |
---|
Retours
- 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 |
---|
Retours
- 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.
Retours
- 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. |
---|
Retours
- 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é.
Retours
- 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. |
Retours
- la sous-forme délimitée par le début et la fin.
Queue de forme publique ()
Renvoie une nouvelle forme, avec la première dimension de cette forme 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() |
---|
Retours
- 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() |
---|
Retours
- 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.
Retours
- Une forme pour laquelle
isUnknown()
est vraie, jamais nulle.