La forma de un Tensor o NdArray
.
Una Shape
define tamaños a lo largo de sus ejes. Puede contener un tamaño desconocido para uno de los ejes o puede ser totalmente desconocido, en cuyo caso ni siquiera se conoce el número de ejes. Si se desconoce el tamaño de un eje, se debe utilizar UNKNOWN_SIZE
como tamaño.
Campos
público estático largo | DESCONOCIDO_SIZE | El tamaño de un eje desconocido o el tamaño total desconocido para una forma desconocida. |
Métodos públicos
Forma | agregar (última dimensión larga) Devuelve una nueva Forma, con una nueva última dimensión agregada. |
Forma | |
largo[] | comomatriz () Devuelve una copia defensiva de los ejes de esta Forma. |
booleano | es igual (Objeto obj) Implementación igual a Shapes. |
booleano | tiene dimensión desconocida () Devuelve si una o más dimensiones de esta Forma tienen un tamaño desconocido. |
entero | código hash () |
Forma | cabeza () Devuelve una forma unidimensional con la primera dimensión que coincide con la primera dimensión de esta forma. |
booleano estático | isCompatible (long tenue, long otherDim) Pruebe para ver si dos dimensiones de forma son compatibles. |
booleano | |
booleano | esMatriz () Devuelve si esta forma es la forma de una matriz. |
booleano | es escalar () Devuelve si esta Forma representa un escalar. |
booleano | es desconocido () Devuelve si se desconoce el número de dimensiones de esta Forma. |
booleano | esVector () Devuelve si esta Forma es la forma de un vector. |
entero | númDimensiones () Devuelve el número de dimensiones de esta Forma. |
Forma estática | de (largo...dimensiónTamaños) Cree una forma que represente un valor escalar o N-dimensional. |
Forma | |
Forma | anteponer (primera dimensión larga) Devuelve una nueva Forma, con una nueva primera dimensión agregada. |
Forma estática | escalar () Crea una forma que representa un valor escalar. |
largo | tamaño (int i) El tamaño de la dimensión con el índice dado. |
largo | tamaño () Devuelve el número total de elementos que tendría un tensor con esta forma. |
Forma | subforma (int comienzo, int fin) Devuelve una forma dimensional end - begin con dimensiones que coincidan con esta forma desde begin hasta end . |
Forma | cola () Devuelve una nueva Forma, con la primera dimensión de esta Forma eliminada. |
Forma | tomar (int n) Devuelve una forma de n dimensiones con las dimensiones que coinciden con las primeras n dimensiones de esta forma. |
Forma | tomarLast (int n) Devuelve una Forma de n dimensiones con las dimensiones que coinciden con las últimas n dimensiones de esta Forma. |
Cadena | a cadena () Descripción sucinta de la forma destinada a la depuración. |
Forma estática | desconocido () Crea una forma que representa un número desconocido de dimensiones. |
Métodos heredados
Campos
pública estática larga UNKNOWN_SIZE
El tamaño de un eje desconocido o el tamaño total desconocido para una forma desconocida.
Métodos públicos
Agregar forma pública (última dimensión larga)
Devuelve una nueva Forma, con una nueva última dimensión agregada. Para que esta llamada tenga éxito, isUnknown()
debe ser false
.
Parámetros
última dimensión | la dimensión a agregar |
---|
Devoluciones
- una nueva Forma con las dimensiones de esta Forma seguidas de la dimensión dada, nunca nula
Agregar forma pública ( forma otra)
Devuelve una nueva Forma, con las dimensiones de otras Formas añadidas. Tanto para esta Forma como para la otra Forma, isUnknown()
debe devolver falso. Por ejemplo, @code Forma.de(3,4).append(Forma.de(1,2)) => Forma.de(3,4,1,2) }
Parámetros
otro | otra Forma, no debe ser null , no debe ser desconocida |
---|
Devoluciones
- Una nueva Forma que consta de las dimensiones de esta Forma seguidas de las dimensiones de la Forma dada
público largo [] asArray ()
Devuelve una copia defensiva de los ejes de esta Forma. Cambios en la matriz devuelta para no cambiar el estado de esta Forma. Devuelve nulo si isUnknown()
es verdadero.
público booleano es igual (Objeto obj)
Implementación igual a Shapes. Dos formas se consideran iguales si:
- el número de dimensiones está definido y es igual para ambas
- el tamaño de cada dimensión está definido y es igual para ambas
Si cualquiera de las formas tiene dimensiones desconocidas (incluso si son iguales en ambas) o si cualquiera de las formas tiene un número desconocido de dimensiones (incluso si ambas devuelven true
para isUnknown()
), ¡no se consideran iguales! Sin embargo, una forma siempre será igual a sí misma, incluso si es desconocida o contiene dimensiones desconocidas.
público booleano hasUnknownDimension ()
Devuelve si una o más dimensiones de esta Forma tienen un tamaño desconocido.
código hash int público ()
cabeza de forma pública ()
Devuelve una forma unidimensional cuya primera dimensión coincide con la primera dimensión de esta forma.
booleano estático público isCompatible (long dim, long otherDim)
Pruebe para ver si dos dimensiones de forma son compatibles.
Las dimensiones son compatibles si cualquiera de las dimensiones es Shape.UNKNOWN_SIZE
o ambas dimensiones son iguales
Parámetros
oscuro | la primera dimensión |
---|---|
otroDim | la segunda dimensión |
Devoluciones
- cierto, si ambas dimensiones son compatibles
booleano público es compatible con (forma de forma )
Determina si otra forma es compatible con ésta.
Dos formas posiblemente parcialmente definidas son compatibles si existe una forma completamente definida que ambas formas puedan representar. Por tanto, la compatibilidad permite que el código de inferencia de formas razone sobre formas parcialmente definidas. Por ejemplo:
-
Shape.unknown()
es compatible con todas las formas. -
Shape(UNKNOWN_SIZE, UNKNOWN_SIZE)
es compatible con todas las formas bidimensionales, comoShape(32, 784)
y tambiénShape.unknown()
. No es compatible, por ejemplo, conShape(UNKNOWN_SIZE)
oShape(UNKNOWN_SIZE, UNKNOWN_SIZE, UNKNOWN_SIZE)
. -
Shape(32, UNKNOWN_SIZE)
es compatible con todas las formas bidimensionales con tamaño 32 en la dimensión 0, y tambiénShape(UNKNOWN_SIZE, UNKNOWN_SIZE)
yShape.unknown()
. No es compatible, por ejemplo, conShape(32)
,Shape(32, UNKNOWN_SIZE, 1)
oShape(64, UNKNOWN_SIZE)
. -
Shape(32, 784)
es compatible consigo mismo, y tambiénShape(32, UNKNOWN_SIZE)
,Shape(UNKNOWN_SIZE, 784)
,Shape(UNKNOWN_SIZE, UNKNOWN_SIZE)
yShape.unknown()
. No es compatible, por ejemplo, conShape(32, 1, 784)
oShape(UNKNOWN_SIZE)
.
La relación de compatibilidad es reflexiva y simétrica, pero no transitiva. Por ejemplo, Shape(32, 784)
es compatible con Shape.unknown()
y Shape.unknown()
es compatible con Shape(4, 4)
, pero Shape(32, 784)
no es compatible con Shape(4, 4)
.
La compatibilidad no es lo mismo que la transmisión. Las formas compatibles deben tener el mismo número de dimensiones y, para cada par de dimensiones, una dimensión debe ser igual a las otras dimensiones o al menos una de las dimensiones del par debe ser UNKNOWN_SIZE.
La radiodifusión permite diferentes dimensiones, pero las dimensiones emparejadas deben ser iguales o una dimensión debe ser 1. Si una forma tiene menos dimensiones que otra, la forma más pequeña se "estira" con dimensiones de 1.
Parámetros
forma | La otra forma |
---|
Devoluciones
- cierto, si las dos formas son compatibles.
isMatrix booleano público ()
Devuelve si esta forma es la forma de una matriz.
público booleano esScalar ()
Devuelve si esta Forma representa un escalar.
booleano público es desconocido ()
Devuelve si se desconoce el número de dimensiones de esta Forma.
público booleano isVector ()
Devuelve si esta Forma es la forma de un vector.
public int numDimensiones ()
Devuelve el número de dimensiones de esta Forma. -1 si se desconoce, 0 para un escalar, 1 para un vector, 2 para una matriz, etc.
pública estática Forma de (largo... dimensiónTamaños)
Cree una forma que represente un valor escalar o N-dimensional.
Crea una forma que representa un valor escalar o N-dimensional (siendo N al menos 1), con el tamaño proporcionado para cada dimensión. Un -1 indica que se desconoce el tamaño de la dimensión correspondiente. Si no se proporcionan tamaños, se crea una forma que representa un escalar. Por ejemplo:
// 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()
Parámetros
dimensiónTamaños | número de elementos en cada dimensión de esta forma, si corresponde, o UNKNOWN_SIZE si se desconoce. |
---|
Devoluciones
- una nueva forma
anteponer forma pública ( forma otra)
Devuelve una nueva Forma, con las dimensiones de otra Forma antepuestas. Tanto para esta Forma como para la otra Forma, isUnknown()
debe devolver falso. Por ejemplo, Shape.of(3,4).prepend(Shape.of(1,2)) => Shape.of(1,2,3,4)
Parámetros
otro | otra Forma, no debe ser null , no debe ser desconocida |
---|
Devoluciones
- Una nueva Forma que consta de las dimensiones de la Forma dada seguidas de las dimensiones de esta Forma, nunca nula
anteponer forma pública (primera dimensión larga)
Devuelve una nueva Forma, con una nueva primera dimensión agregada. Para que esta llamada tenga éxito, isUnknown()
debe ser false
.
Parámetros
primera dimensión | la dimensión a anteponer |
---|
Devoluciones
- una nueva forma con la dimensión dada primero, seguida de las dimensiones de esta forma, nunca nula
pública estática Forma escalar ()
Crea una forma que representa un valor escalar.
Devoluciones
- Una forma sin dimensiones para la cual
isScalar()
es verdadero, nunca nulo.
tamaño público largo (int i)
El tamaño de la dimensión con el índice dado.
Si isUnknown()
es verdadero o el tamaño de la dimensión con el índice dado tiene un tamaño desconocido, se devuelve UNKNOWN_SIZE
.
Parámetros
i | el índice de la dimensión para obtener el tamaño. Si esta Forma tiene un número conocido de dimensiones, debe ser < numDimensions() . El índice puede ser negativo, en cuyo caso la posición se cuenta desde el final de la forma. Por ejemplo: size(-1) devuelve el tamaño de la última dimensión, size(-2) el tamaño de la penúltima dimensión, etc. |
---|
Devoluciones
- El tamaño de la dimensión con el índice dado si se conoce,
UNKNOWN_SIZE
en caso contrario.
tamaño largo público ()
Devuelve el número total de elementos que tendría un tensor con esta forma.
Si isUnknown()
es verdadero o hasUnknownDimension()
es verdadero, se devuelve UNKNOWN_SIZE
.
Devoluciones
- El número total de elementos que tendría un tensor con esta forma si se puede calcular; de lo contrario,
UNKNOWN_SIZE
.
subforma de forma pública (int inicio, int fin)
Devuelve una forma dimensional end - begin
con dimensiones que coincidan con esta forma desde begin
hasta end
.
Parámetros
comenzar | Dónde empezar la subforma. |
---|---|
fin | Dónde terminar la subforma, exclusivo. |
Devoluciones
- la subforma delimitada por el comienzo y el final.
cola de forma pública ()
Devuelve una nueva Forma, con la primera dimensión de esta Forma eliminada.
Toma de forma pública (int n)
Devuelve una forma de n dimensiones con las dimensiones que coinciden con las primeras n dimensiones de esta forma
Parámetros
norte | el número de dimensiones principales a obtener debe ser <= que numDimensions() |
---|
Devoluciones
- una forma de n dimensiones con las primeras n dimensiones que coinciden con las primeras n dimensiones de esta forma
forma pública tomarLast (int n)
Devuelve una Forma de n dimensiones con las dimensiones que coinciden con las últimas n dimensiones de esta Forma.
Parámetros
norte | el número de dimensiones finales a obtener debe ser <= que numDimensions() |
---|
Devoluciones
- una forma de n dimensiones con las dimensiones que coinciden con las últimas n dimensiones de esta forma, nunca nula
cadena pública a cadena ()
Descripción sucinta de la forma destinada a la depuración.
Forma estática pública desconocida ()
Crea una forma que representa un número desconocido de dimensiones.
Devoluciones
- Una forma para la cual
isUnknown()
es verdadera, nunca nula.