Main Content

convolution1dLayer

Capa convolucional 1D

Desde R2021b

    Descripción

    Una capa convolucional 1D aplica filtros convolucionales deslizantes a la entrada 1D. La capa convoluciona la entrada moviendo los filtros a lo largo de la entrada y calculando el producto de puntos de los pesos y la entrada, para después añadir un término de sesgo.

    La dimensión en la que convoluciona la capa depende de la entrada de la capa:

    • Para entradas de series de tiempo y secuencias de vectores (datos con tres dimensiones correspondientes a los canales, observaciones y pasos de tiempo), la capa convoluciona en la dimensión de tiempo.

    • Para entradas de imágenes 1D (datos con tres dimensiones correspondientes a los píxeles espaciales, canales y observaciones), la capa convoluciona en la dimensión espacial.

    • Para entradas de secuencias de imágenes 1D (datos con cuatro dimensiones correspondientes a los píxeles espaciales, canales, observaciones y unidades de tiempo), la capa convoluciona en la dimensión espacial.

    Creación

    Descripción

    ejemplo

    layer = convolution1dLayer(filterSize,numFilters) crea una capa convolucional 1D y establece las propiedades FilterSize y NumFilters.

    layer = convolution1dLayer(filterSize,numFilters,Name=Value) también establece las propiedades opcionales Stride, DilationFactor, NumChannels, Parámetros e inicialización, Tasa de aprendizaje y regularización y Name usando uno o más argumentos nombre-valor. Para especificar el relleno de la entrada, utilice el argumento nombre-valor Padding. Por ejemplo, convolution1dLayer(11,96,Padding=1) crea una capa convolucional 1D con 96 filtros de tamaño 11 y especifica un relleno de tamaño 1 a la izquierda y a la derecha de la entrada de la capa.

    Argumentos de entrada

    expandir todo

    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.

    Ejemplo: convolution1dLayer(11,96,Padding=1) crea una capa convolucional 1D con 96 filtros de tamaño 11 y especifica un relleno de tamaño 1 a la izquierda y a la derecha de la entrada de la capa.

    Relleno para aplicar a la entrada, especificado como una de las siguientes opciones:

    • "same": aplica relleno de tal manera que el tamaño de salida sea ceil(inputSize/stride), donde inputSize es la longitud de la entrada. Cuando Stride es 1, la salida es del mismo tamaño que la entrada.

    • "causal": aplica relleno a la izquierda de la entrada, equivalente a (FilterSize - 1) .* DilationFactor. Cuando Stride es 1, la salida es del mismo tamaño que la entrada.

    • Entero no negativo sz: añade relleno de tamaño sz a ambos extremos de la entrada.

    • Vector [l r] de enteros no negativos: añade relleno de tamaño l a la izquierda y r a la derecha de la entrada.

    Ejemplo: Padding=[2 1] añade relleno de tamaño 2 a la izquierda y de tamaño 1 a la derecha de la entrada.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    Propiedades

    expandir todo

    Convolución

    Esta propiedad o parámetro es de solo lectura.

    Anchura de los filtros, especificada como entero positivo.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Esta propiedad o parámetro es de solo lectura.

    Número de filtros, especificado como entero positivo. Este número corresponde al número de neuronas de la capa que se conectan a la misma región de la entrada. Este parámetro determina el número de canales (mapas de características) de la salida de la capa.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Tamaño de paso para recorrer la entrada, especificado como entero positivo.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Factor de convolución dilatada (también conocida como convolución atrous), especificado como entero positivo.

    Utilice convoluciones dilatadas para aumentar el campo receptivo de la capa (el área de la entrada que la capa puede ver) sin aumentar la cantidad de parámetros o cálculos.

    La capa expande los filtros insertando ceros entre cada elemento de filtro. El factor de dilatación determina el tamaño del paso para muestrear la entrada o, de forma equivalente, el factor de sobremuestreo del filtro. Corresponde a un tamaño de filtro efectivo de (FilterSize – 1) .* DilationFactor + 1. Por ejemplo, un filtro de 1 por 3 con un factor de dilatación de 2 equivale a un filtro de 1 por 5 con ceros entre los elementos.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Tamaño del relleno que se aplicará a cada lado de la entrada, especificado como un vector [l r] de dos enteros no negativos, donde l es el relleno aplicado a la izquierda y r es el relleno aplicado a la derecha.

    Cuando cree una capa, utilice el argumento nombre-valor Padding para especificar el tamaño del relleno.

    Tipos de datos: double

    Esta propiedad o parámetro es de solo lectura.

    Método para determinar el tamaño del relleno, especificado como una de las siguientes opciones:

    • 'manual': rellena utilizando el entero o vector especificado por Padding.

    • 'same': aplica relleno de tal manera que el tamaño de salida sea ceil(inputSize/Stride), donde inputSize es la longitud de la entrada. Cuando Stride es 1, la salida es igual que la entrada.

    • 'causal': aplica relleno causal. Rellena la izquierda de la entrada con tamaño de relleno (FilterSize - 1) .* DilationFactor.

    Para especificar el relleno de capa, utilice el argumento de nombre-valor Padding.

    Tipos de datos: char

    Esta propiedad o parámetro es de solo lectura.

    Valor para rellenar datos, especificado como uno de los siguientes:

    PaddingValueDescripciónEjemplo
    EscalarRellenar con el valor escalar especificado.

    [314][0031400]

    'symmetric-include-edge'Rellenar utilizando valores reflejados de la entrada, incluidos los valores de los bordes.

    [313][1331441]

    'symmetric-exclude-edge'Rellenar utilizando valores reflejados de la entrada, excluyendo los valores de los bordes.

    [314][4131413]

    'replicate'Rellenar utilizando los elementos de borde repetidos de la entrada.

    [313][3331444]

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    Esta propiedad o parámetro es de solo lectura.

    Número de canales de entrada, especificado como una de las siguientes opciones:

    • 'auto': determina automáticamente el número de canales de entrada durante el entrenamiento.

    • Entero positivo: configura la capa para el número especificado de canales de entrada. NumChannels debe coincidir con el número de canales de los datos de entrada de la capa. Por ejemplo, si la entrada es una imagen RGB, entonces NumChannels debe ser 3. Si la entrada es la salida de una capa convolucional con 16 filtros, entonces NumChannels debe ser 16.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    Parámetros e inicialización

    Función para inicializar los pesos, especificada como una de las siguientes opciones:

    • 'glorot': inicializa los pesos con el inicializador Glorot [1] (también denominado inicializador Xavier). El inicializador Glorot muestrea de forma independiente a partir de una distribución uniforme con media cero y varianza 2/(numIn + numOut), donde numIn = FilterSize*NumChannels y numOut = FilterSize*NumFilters.

    • 'he': inicializa los pesos con el inicializador He [2]. El inicializador He muestrea a partir de una distribución normal con media cero y varianza 2/numIn, donde numIn = FilterSize*NumChannels.

    • 'narrow-normal': inicializa los pesos muestreando de forma independiente a partir de una distribución normal con media cero y desviación estándar de 0.01.

    • 'zeros': inicializa los pesos con ceros.

    • 'ones': inicializa los pesos con unos.

    • Identificador de función: inicializa los pesos con una función personalizada. Si especifica un identificador de función, la función debe tener la forma weights = func(sz), donde sz es el tamaño de los pesos. Para ver un ejemplo, consulte Specify Custom Weight Initialization Function.

    La capa inicializa los pesos solo cuando la propiedad Weights está vacía.

    Tipos de datos: char | string | function_handle

    Función para inicializar sesgos, especificada como uno de estos valores:

    • "zeros": inicializa los sesgos con ceros.

    • "ones": inicializa los sesgos con unos.

    • "narrow-normal": inicializa los sesgos muestreando de forma independiente a partir de una distribución normal con media cero y desviación estándar de 0.01.

    • Identificador de función: inicializa los sesgos con una función personalizada. Si especifica un identificador de función, la función debe tener la forma bias = func(sz), donde sz es el tamaño de los sesgos.

    La capa inicializa los sesgos solo cuando la propiedad Bias está vacía.

    Tipos de datos: char | string | function_handle

    Pesos de capa para la operación de convolución traspuesta, especificados como un arreglo numérico de FilterSize por NumChannels por numFilters o [].

    Los pesos de las capas son parámetros que se pueden aprender. Puede especificar el valor inicial de los pesos usando directamente la propiedad Weights de la capa. Cuando entrena una red, si la propiedad Weights de la capa no está vacía, las funciones trainnet y trainNetwork usan la propiedad Weights como valor inicial. Si la propiedad Weights está vacía, el software usa el inicializador especificado por la propiedad WeightsInitializer de la capa.

    Tipos de datos: single | double

    Sesgos de capa para la operación de convolución traspuesta, especificados como un arreglo numérico de 1 por NumFilters o [].

    Los sesgos de capa de capa son parámetros que se pueden aprender. Cuando entrena una red neuronal, si Bias no está vacío, las funciones trainnet y trainNetwork usan la propiedad Bias como valor inicial. Si Bias está vacío, el software usa el inicializador especificado por BiasInitializer.

    Tipos de datos: single | double

    Tasa de aprendizaje y regularización

    Factor de la tasa de aprendizaje de los pesos, especificado como un escalar no negativo.

    El software multiplica este factor por la tasa de aprendizaje global para determinar la tasa de aprendizaje de los pesos de esta capa. Por ejemplo, si WeightLearnRateFactor es 2, la tasa de aprendizaje de los pesos de esta capa es dos veces la tasa de aprendizaje global actual. El software determina la tasa de aprendizaje global según la configuración que especifique usando la función trainingOptions.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Factor de la tasa de aprendizaje de los sesgos, especificado como un escalar no negativo.

    El software multiplica este factor por la tasa de aprendizaje global para determinar la tasa de aprendizaje de los sesgos de esta capa. Por ejemplo, si BiasLearnRateFactor es 2, la tasa de aprendizaje de los sesgos de esta capa es dos veces la tasa de aprendizaje global actual. El software determina la tasa de aprendizaje global según la configuración que especifique usando la función trainingOptions.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Factor de regularización L2 de los pesos, especificado como un escalar no negativo.

    El software multiplica este factor por el factor de regularización global L2 para determinar la regularización L2 de los pesos de esta capa. Por ejemplo, si WeightL2Factor es 2, la regularización L2 de los pesos de esta capa es dos veces el factor de regularización global L2. Puede especificar el factor de regularización global L2 usando la función trainingOptions.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Factor de regularización L2 de los sesgos, especificado como un escalar no negativo.

    El software multiplica este factor por el factor de regularización global L2 para determinar la regularización L2 de los sesgos de esta capa. Por ejemplo, si BiasL2Factor es 2, la regularización L2 de los sesgos de esta capa es dos veces el factor de regularización global L2. El software determina el factor de regularización global L2 según la configuración que especifique usando la función trainingOptions.

    Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Capa

    Nombre de la capa, especificado como un vector de caracteres o un escalar de cadena. Para entradas en forma de arreglo Layer, las funciones trainnet y dlnetwork asignan automáticamente nombres a las capas con el nombre "".

    El objeto Convolution1DLayer almacena esta propiedad como un vector de caracteres.

    Tipos de datos: char | string

    Esta propiedad o parámetro es de solo lectura.

    Número de entradas a la capa, devuelto como 1. Esta capa solo admite una entrada.

    Tipos de datos: double

    Esta propiedad o parámetro es de solo lectura.

    Nombres de entrada, devueltos como {'in'}. Esta capa solo admite una entrada.

    Tipos de datos: cell

    Esta propiedad o parámetro es de solo lectura.

    Número de salidas de la capa, devuelto como 1. Esta capa solo tiene una salida.

    Tipos de datos: double

    Esta propiedad o parámetro es de solo lectura.

    Nombres de salida, devueltos como {'out'}. Esta capa solo tiene una salida.

    Tipos de datos: cell

    Ejemplos

    contraer todo

    Cree un objeto dlnetwork.

    net = dlnetwork;

    Cree una capa convolucional 1D con 96 filtros de ancho 11.

    layer = convolution1dLayer(11,96);

    Incluya esa capa convolucional 1D en un arreglo Layers de la rama de clasificación y añádala a la red.

    layers = [
        sequenceInputLayer(3,MinLength=20)
        layer
        reluLayer
        globalMaxPooling1dLayer
        fullyConnectedLayer(10)
        softmaxLayer
        classificationLayer];
    
    net = addLayers(net,layers);

    Algoritmos

    expandir todo

    Referencias

    [1] Glorot, Xavier, and Yoshua Bengio. "Understanding the Difficulty of Training Deep Feedforward Neural Networks." In Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics, 249–356. Sardinia, Italy: AISTATS, 2010. https://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf

    [2] He, Kaiming, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. "Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification." In 2015 IEEE International Conference on Computer Vision (ICCV), 1026–34. Santiago, Chile: IEEE, 2015. https://doi.org/10.1109/ICCV.2015.123

    Capacidades ampliadas

    Historial de versiones

    Introducido en R2021b