lstm
Sintaxis
Descripción
La operación de memoria de corto-largo plazo (LSTM) permite que una red aprenda dependencias a largo plazo entre unidades de tiempo de series de tiempo y datos secuenciales.
aplica un cálculo de memoria de corto-largo plazo (LSTM) a la entrada Y
= lstm(X
,H0
,C0
,weights
,recurrentWeights
,bias
)X
empleando el estado oculto inicial H0
, el estado de celda inicial C0
y los parámetros weights
, recurrentWeights
y bias
. La entrada X
debe ser un dlarray
con formato. La salida Y
es un dlarray
con formato con el mismo formato de dimensión que X
, excepto en el caso de las dimensiones "S"
.
La función lstm
actualiza la celda y los estados ocultos empleando la función tangente hiperbólica (tanh) como la función de activación del estado. La función lstm
utiliza la función sigmoide dada por como la función de activación de la puerta.
[
también devuelve el estado oculto y el estado de la celda tras la operación LSTM.Y
,hiddenState
,cellState
] = lstm(X
,H0
,C0
,weights
,recurrentWeights
,bias
)
___ = lstm(___,
especifica opciones adicionales con uno o más argumentos nombre-valor.Name=Value
)
Ejemplos
Aplicar la operación LSTM a datos de secuencias
Lleve a cabo una operación LSTM con tres unidades ocultas.
Cree los datos de secuencia de entrada como 32 observaciones con 10 canales y una longitud de secuencia de 64.
numFeatures = 10;
numObservations = 32;
sequenceLength = 64;
X = randn(numFeatures,numObservations,sequenceLength);
X = dlarray(X,"CBT");
Cree los estados ocultos y celulares iniciales con 3 unidades ocultas. Utilice el mismo estado oculto y el mismo estado de celda iniciales para todas las observaciones.
numHiddenUnits = 3; H0 = zeros(numHiddenUnits,1); C0 = zeros(numHiddenUnits,1);
Cree los parámetros que se pueden aprender para la operación LSTM.
weights = dlarray(randn(4*numHiddenUnits,numFeatures),"CU"); recurrentWeights = dlarray(randn(4*numHiddenUnits,numHiddenUnits),"CU"); bias = dlarray(randn(4*numHiddenUnits,1),"C");
Realice el cálculo LSTM.
[Y,hiddenState,cellState] = lstm(X,H0,C0,weights,recurrentWeights,bias);
Visualice el tamaño y las dimensiones de la salida.
size(Y)
ans = 1×3
3 32 64
dims(Y)
ans = 'CBT'
Visualice el tamaño de los estados oculto y de celda.
size(hiddenState)
ans = 1×2
3 32
size(cellState)
ans = 1×2
3 32
Argumentos de entrada
X
— Datos de entrada
dlarray
| Arreglo numérico
Datos de entrada, especificados como un arreglo dlarray
con formato, un arreglo dlarray
sin formato o un arreglo numérico. Cuando X
no es un dlarray
con formato, debe especificar el formato de etiqueta de dimensión con la opción DataFormat
. Si X
es un arreglo numérico, al menos uno de H0
, C0
, weights
, recurrentWeights
o bias
debe ser un dlarray
.
X
debe contener una dimensión de secuencia etiquetada "T"
. Si X
cuenta con alguna dimensión espacial etiquetada "S"
, esta se aplana en la dimensión de canal "C"
. Si X
no cuenta con una dimensión de canal, se añade una. Si X
cuenta con alguna dimensión sin especificar etiquetada "U"
, esta debe ser única.
H0
— Vector de estado oculto inicial
dlarray
| Arreglo numérico
Vector de estado oculto inicial, especificado como un arreglo dlarray
con formato, un arreglo dlarray
sin formato o un arreglo numérico.
Si H0
es un dlarray
con formato, debe contener una dimensión de canal etiquetada "C"
y opcionalmente una dimensión de lote etiquetada "B"
con el mismo tamaño que la dimensión "B"
de X
. Si H0
no cuenta con una dimensión "B"
, la función utiliza el mismo vector de estado oculto para cada observación en X
.
El tamaño de la dimensión "C"
determina el número de unidades ocultas. El tamaño de la dimensión "C"
de H0
debe ser igual que el tamaño de las dimensiones "C"
de C0
.
Si H0
no es un dlarray
con formato, el tamaño de la primera dimensión determina el número de unidades ocultas y debe tener el mismo tamaño que la primera dimensión o la dimensión "C"
de C0
.
C0
— Vector de estado de celda inicial
dlarray
| Arreglo numérico
Vector de estado de celda inicial, especificado como un dlarray
con formato, un dlarray
sin formato o un arreglo numérico.
Si C0
es un dlarray
con formato, debe contener una dimensión de canal etiquetada 'C'
y opcionalmente una dimensión de lote etiquetada 'B'
con el mismo tamaño que la dimensión 'B'
de X
. Si C0
no cuenta con una dimensión 'B'
, la función utiliza el mismo vector de estado de celda para cada observación en X
.
El tamaño de la dimensión 'C'
determina el número de unidades ocultas. El tamaño de la dimensión 'C'
de C0
debe ser igual que el tamaño de las dimensiones 'C'
de H0
.
Si C0
no es un dlarray
con formato, el tamaño de la primera dimensión determina el número de unidades ocultas y debe tener el mismo tamaño que la primera dimensión o la dimensión 'C'
de H0
.
weights
— Pesos
dlarray
| Arreglo numérico
Pesos, especificados como un dlarray
con formato, un dlarray
sin formato o un arreglo numérico.
Especifique weights
como una matriz con un tamaño de 4*NumHiddenUnits
por InputSize
, donde NumHiddenUnits
es el tamaño de la dimensión "C"
de C0
y H0
, y InputSize
es el tamaño de la dimensión "C"
de X
multiplicada por el tamaño de cada dimensión "S"
de X
, donde esté presente.
Si weights
es un dlarray
con formato, debe contener una dimensión "C"
con un tamaño de 4*NumHiddenUnits
y una dimensión "U"
con un tamaño de InputSize
.
recurrentWeights
— Pesos recurrentes
dlarray
| Arreglo numérico
Pesos recurrentes, especificados como un dlarray
con formato, un dlarray
sin formato o un arreglo numérico.
Especifique recurrentWeights
como una matriz con un tamaño de 4*NumHiddenUnits
por NumHiddenUnits
, donde NumHiddenUnits
es el tamaño de la dimensión "C"
de C0
y H0
.
Si recurrentWeights
es un dlarray
con formato, debe contener una dimensión "C"
con un tamaño de 4*NumHiddenUnits
y una dimensión "U"
con un tamaño de NumHiddenUnits
.
bias
— Sesgo
Vector de dlarray
| Vector numérico
Sesgo, especificado como un dlarray
con formato, un dlarray
sin formato o un arreglo numérico.
Especifique bias
como un vector con una longitud de 4*NumHiddenUnits
, donde NumHiddenUnits
es el tamaño de la dimensión "C"
de C0
y H0
.
Si bias
es un dlarray
con formato, la dimensión única debe estar etiquetada como "C"
.
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos de nombre-valor deben aparecer después de otros argumentos. Sin embargo, el orden de los pares no importa.
En las versiones anteriores a la R2021a, utilice comas para separar cada nombre y valor, y encierre Name
entre comillas.
Ejemplo: Y = lstm(X,H0,C0,weights,recurrentWeights,bias,DataFormat="CTB")
aplica la operación de LSTM y especifica que los datos tienen formato "CTB"
(canal, tiempo, lote).
DataFormat
— Descripción de dimensiones de datos
vector de caracteres | escalar de cadena
Descripción de las dimensiones de los datos, especificada como vector de caracteres o escalar de cadena.
Un formato de datos es una cadena de caracteres, en la que cada carácter describe el tipo de la dimensión de datos correspondiente.
Los caracteres son los siguientes:
"S"
: espacial"C"
: canal"B"
: lote"T"
: tiempo"U"
: sin especificar
Por ejemplo, considere un arreglo que contiene un lote de secuencias, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo, respectivamente. Puede especificar que este arreglo tenga el formato "CBT"
(canal, lote, tiempo).
Puede especificar varias dimensiones etiquetadas "S"
o "U"
. Puede utilizar las etiquetas "C"
, "B"
y "T"
como mucho una vez. El software ignora las dimensiones únicas "U"
restantes tras la segunda dimensión.
Si los datos de entrada no son un objeto dlarray
con formato, debe especificar la opción DataFormat
.
Para obtener más información, consulte Deep Learning Data Formats.
Tipos de datos: char
| string
StateActivationFunction
— Función de activación de estado
"tanh"
(predeterminado) | "softsign"
| "relu"
Desde R2024a
Función de activación para actualizar el estado oculto y de celda, especificada como uno de estos valores:
"tanh"
: usa la función tangente hiperbólica (tanh)."softsign"
: usa la función softsign ."relu"
: usa la función de unidad lineal rectificada (ReLU) .
El software usa esta opción como la función en los cálculos para actualizar el estado oculto y de celda.
Para obtener más información, consulte la definición de Long Short-Term Memory Layer en la página de referencia lstmLayer
.
GateActivationFunction
— Función de activación de la puerta
"sigmoid"
(predeterminado) | "hard-sigmoid"
Desde R2024a
Función de activación que se aplicará a las puertas, especificada como uno de estos valores:
"sigmoid"
: usa la función sigmoide, ."hard-sigmoid"
: usa la función sigmoide estricta,.
El software usa esta opción como la función en los cálculos de las puertas de capa.
Para obtener más información, consulte la definición de Long Short-Term Memory Layer en la página de referencia lstmLayer
.
Argumentos de salida
Y
— Salida de LSTM
dlarray
Salida LSTM, devuelta como un dlarray
. La salida Y
contiene el mismo tipo de datos subyacentes que la entrada X
.
Si los datos de entrada de X
son un dlarray
con formato, Y
tiene el mismo formato de dimensión que X
, excepto en el caso de las dimensiones "S"
. Si los datos de entrada no son un arreglo dlarray
con formato, Y
es un arreglo dlarray
sin formato con el mismo orden de dimensiones que los datos de entrada.
El tamaño de la dimensión "C"
de Y
es el mismo que el tamaño de las unidades ocultas, especificado por el tamaño de la dimensión "C"
de H0
o C0
.
hiddenState
— Vector de estado oculto
dlarray
| Arreglo numérico
Vector de estado oculto para cada observación, devuelto como un dlarray
o un arreglo numérico con el mismo tipo de datos que H0
.
Si la entrada H0
es un dlarray
con formato, la salida hiddenState
es un dlarray
con el formato "CB"
.
cellState
— Vector de estado de celda
dlarray
| Arreglo numérico
Vector de estado de celda para cada observación, devuelto como un dlarray
o un arreglo numérico. cellState
se devuelve con el mismo tipo de datos que C0
.
Si la entrada C0
es un dlarray
con formato, la salida cellState
se devuelve como un dlarray
con el formato 'CB'
.
Algoritmos
Memoria de corto-largo plazo
La operación LSTM permite que una red aprenda dependencias a largo plazo entre unidades de tiempo de series de tiempo y datos secuenciales. Para obtener más información, consulte la definición de Long Short-Term Memory Layer en la página de referencia lstmLayer
.
Formatos de arreglos de deep learning
La mayoría de las redes y funciones de deep learning operan de forma distinta en diferentes dimensiones de los datos de entrada.
Por ejemplo, una operación de LSTM itera sobre la dimensión de tiempo de los datos de entrada, mientras que una operación de normalización de lote normaliza sobre la dimensión de lote de los datos de entrada.
Para proporcionar datos de entrada con dimensiones etiquetadas o con información de formato adicional, puede usar formatos de datos.
Un formato de datos es una cadena de caracteres, en la que cada carácter describe el tipo de la dimensión de datos correspondiente.
Los caracteres son los siguientes:
"S"
: espacial"C"
: canal"B"
: lote"T"
: tiempo"U"
: sin especificar
Por ejemplo, considere un arreglo que contiene un lote de secuencias, donde la primera, la segunda y la tercera dimensión corresponden a canales, observaciones y unidades de tiempo, respectivamente. Puede especificar que este arreglo tenga el formato "CBT"
(canal, lote, tiempo).
Para crear datos de entrada con formato, cree un objeto dlarray
y especifique el formato mediante el segundo argumento.
Para proporcionar información de formato adicional con datos que no tienen formato, especifique el formato mediante el argumento FMT
.
Para obtener más información, consulte Deep Learning Data Formats.
Capacidades ampliadas
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Notas y limitaciones de uso:
Cuando al menos uno de los argumentos de entrada siguientes es un
gpuArray
o undlarray
con datos subyacentes de tipogpuArray
, esta función se ejecuta en la GPU:X
H0
C0
weights
recurrentWeights
bias
Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Historial de versiones
Introducido en R2019bR2024a: Especificar las funciones de activación de estados y puertas
Especifique las funciones de activación de estados y puertas con los argumentos nombre-valor StateActivationFunction
y GateActivationFunction
, respectivamente.
Consulte también
dlarray
| fullyconnect
| softmax
| dlgradient
| dlfeval
| gru
| attention
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)