convolution1dLayer

1D сверточный слой

    Описание

    1D сверточный слой применяет скользящие сверточные фильтры к 1D входу. Слой применяет операцию свертки к входу путем перемещения фильтров вдоль входа и вычисления скалярного произведения весов и входа, затем добавления термина смещения.

    Размерность, к которой слой применяет операцию свертки, зависит от входа слоя:

    • Для временных рядов и векторного входа последовательности (данные с тремя измерениями, соответствующими каналам, наблюдениям и временным шагам), слой применяет операцию свертки по измерению времени.

    • Для 1D входа изображений (данные с тремя измерениями, соответствующими пространственным пикселям, каналам и наблюдениям), слой применяет операцию свертки по пространственной размерности.

    • Для 1D входа последовательности изображений (данные с четырьмя размерностями, соответствующими пространственным пикселям, каналам, наблюдениям и временным шагам), слой применяет операцию свертки по пространственной размерности.

    Создание

    Описание

    пример

    layer = convolution1dLayer(filterSize,numFilters) создает 1D сверточный слой и устанавливает FilterSize и NumFilters свойства.

    layer = convolution1dLayer(filterSize,numFilters,Name=Value) также устанавливает дополнительный Stride, DilationFactor, NumChannels, Параметры и инициализация, скорость обучения и регуляризация и Name свойства с помощью одних или нескольких аргументов name-value. Чтобы задать входное дополнение, используйте Padding аргумент значения имени. Например, convolution1dLayer(11,96,Padding=1) создает 1D сверточный слой с 96 фильтрами размера 11 и задает дополнение размера 1 слева и право на вход слоя.

    Входные параметры

    развернуть все

    Аргументы в виде пар имя-значение

    Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.

    Пример: convolution1dLayer(11,96,Padding=1) создает 1D сверточный слой с 96 фильтрами размера 11 и задает дополнение размера 1 слева и право на вход слоя.

    Дополнение, чтобы примениться к входу в виде одного из следующего:

    • "same" — Примените дополнение таким образом, что выходным размером является ceil(inputSize/stride), где inputSize длина входа. Когда Stride 1, выход одного размера с входом.

    • "causal" — Примените оставленное дополнение к входу, равному (FilterSize - 1) .* DilationFactor. Когда Stride 1, выход одного размера с входом.

    • Неотрицательный целочисленный sz — Добавьте дополнение размера sz к обоим концам входа.

    • Векторный [l r] из неотрицательных целых чисел — Добавляют дополнение размера l налево и r справа от входа.

    Пример: Padding=[2 1] добавляет дополнение размера 2 налево и размера 1 справа от входа.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    Свойства

    развернуть все

    Свертка

    Это свойство доступно только для чтения.

    Ширина фильтров в виде положительного целого числа.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Это свойство доступно только для чтения.

    Количество фильтров в виде положительного целого числа. Этот номер соответствует количеству нейронов в сверточном слое, которые соединяются с той же областью во входе. Этот параметр определяет количество каналов (карты функции) в выходе сверточного слоя.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Размер шага для того, чтобы пересечь вход в виде положительного целого числа.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Фактор для расширенной свертки (также известный atrous свертка) в виде положительного целого числа.

    Используйте расширенные свертки, чтобы увеличить восприимчивое поле (область входа, который слой видит) слоя, не увеличивая число параметров или расчета.

    Слой расширяет фильтры путем вставки нулей между каждым элементом фильтра. Коэффициент расширения определяет размер шага для выборки входа, или эквивалентно, фактор повышающей дискретизации фильтра. Это соответствует эффективному размеру фильтра (FilterSize – 1) .* DilationFactor + 1. Например, 1 3 фильтруют с коэффициентом расширения 2 эквивалентно фильтру 1 на 5 с нулями между элементами.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Размер дополнения, чтобы примениться к каждой стороне входа в виде векторного [l r] из двух неотрицательных целых чисел, где l дополнение, примененное налево и r дополнение, примененное направо.

    Когда вы создадите слой, используйте Padding аргумент значения имени, чтобы задать дополнительный размер.

    Типы данных: double

    Это свойство доступно только для чтения.

    Метод, чтобы определить дополнительный размер в виде одного из следующего:

    • 'manual' – Клавиатура с помощью целого числа или вектора задана Padding.

    • 'same' – Примените дополнение таким образом, что выходным размером является ceil(inputSize/Stride), где inputSize длина входа. Когда Stride 1, выход совпадает с входом.

    • 'causal' – Примените причинное дополнение. Заполните левых входа с дополнением размера (FilterSize - 1) .* DilationFactor.

    Чтобы задать дополнение слоя, используйте Padding аргумент значения имени.

    Типы данных: char

    Это свойство доступно только для чтения.

    Значение, чтобы заполнить данные в виде одного из следующего:

    PaddingValueОписаниеПример
    СкалярЗаполните заданным скалярным значением.

    [314][0031400]

    'symmetric-include-edge'Заполните зеркально отраженные значения использования входа, включая значения ребра.

    [313][1331441]

    'symmetric-exclude-edge'Заполните зеркально отраженные значения использования входа, исключая значения ребра.

    [314][4131413]

    'replicate'Заполните использование повторенные элементы границы входа.

    [313][3331444]

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    Это свойство доступно только для чтения.

    Количество каналов для каждого фильтра в виде 'auto' или положительное целое число.

    Если NumChannels 'auto', затем программное обеспечение автоматически определяет количество каналов в учебное время.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    Параметры и инициализация

    Функция, чтобы инициализировать веса в виде одного из следующего:

    • 'glorot' – Инициализируйте веса инициализатором Glorot [1] (также известный как инициализатор Ксавьера). Инициализатор Glorot независимо выборки от равномерного распределения со средним значением нуля и отклонением 2/(numIn + numOut), где numIn = FilterSize*NumChannels и numOut = FilterSize*NumFilters.

    • 'he' – Инициализируйте веса Им инициализатор [2]. Он выборки инициализатора от нормального распределения с нулевым средним значением и отклонением 2/numIn, где numIn = FilterSize*NumChannels.

    • 'narrow-normal' – Инициализируйте веса путем независимой выборки от нормального распределения со средним значением нуля и стандартным отклонением 0,01.

    • 'zeros' – Инициализируйте веса нулями.

    • 'ones' – Инициализируйте веса единицами.

    • Указатель на функцию – Инициализирует веса пользовательской функцией. Если вы задаете указатель на функцию, то функция должна иметь форму weights = func(sz), где sz размер весов. Для примера смотрите, Задают Пользовательскую Функцию Инициализации Веса.

    Слой только инициализирует веса когда Weights свойство пусто.

    Типы данных: char | string | function_handle

    Функция, чтобы инициализировать смещение в виде одного из следующего:

    • 'zeros' – Инициализируйте смещение нулями.

    • 'ones' – Инициализируйте смещение единицами.

    • 'narrow-normal' – Инициализируйте смещение путем независимой выборки от нормального распределения с нулевым средним и стандартным отклонением 0.01.

    • Указатель на функцию – Инициализирует смещение пользовательской функцией. Если вы задаете указатель на функцию, то функция должна иметь форму bias = func(sz), где sz размер смещения.

    Слой только инициализирует смещение когда Bias свойство пусто.

    Типы данных: char | string | function_handle

    Веса слоя для сверточного слоя в виде числового массива.

    Веса слоя являются настраиваемыми параметрами. Можно задать начальное значение для весов непосредственно с помощью Weights свойство слоя. Когда вы обучаете сеть, если Weights свойство слоя непусто, затем trainNetwork использует Weights свойство как начальное значение. Если Weights свойство пусто, затем trainNetwork использует инициализатор, заданный WeightsInitializer свойство слоя.

    В учебное время, Weights FilterSize- NumChannels- NumFilters массив.

    Типы данных: single | double

    Слой смещает для сверточного слоя в виде числового массива.

    Смещения слоя являются настраиваемыми параметрами. Когда вы обучаете сеть, если Bias непусто, затем trainNetwork использует Bias свойство как начальное значение. Если Bias пусто, затем trainNetwork использует инициализатор, заданный BiasInitializer.

    В учебное время, Bias 1 NumFilters массив.

    Типы данных: single | double

    Скорость обучения и регуляризация

    Фактор скорости обучения для весов в виде неотрицательного скаляра.

    Программное обеспечение умножает этот фактор на глобальную скорость обучения, чтобы определить скорость обучения для весов в этом слое. Например, если WeightLearnRateFactor 2, затем скорость обучения для весов в этом слое является дважды текущей глобальной скоростью обучения. Программное обеспечение определяет глобальную скорость обучения на основе настроек, вы задаете использование trainingOptions функция.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Фактор скорости обучения для смещений в виде неотрицательного скаляра.

    Программное обеспечение умножает этот фактор на глобальную скорость обучения, чтобы определить скорость обучения для смещений в этом слое. Например, если BiasLearnRateFactor 2, затем скорость обучения для смещений в слое является дважды текущей глобальной скоростью обучения. Программное обеспечение определяет глобальную скорость обучения на основе настроек, вы задаете использование trainingOptions функция.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Фактор регуляризации L2 для весов в виде неотрицательного скаляра.

    Программное обеспечение умножает этот фактор на глобальный фактор регуляризации L2, чтобы определить регуляризацию L2 для весов в этом слое. Например, если WeightL2Factor 2, затем регуляризация L2 для весов в этом слое является дважды глобальным фактором регуляризации L2. Можно задать глобальный фактор регуляризации L2 использование trainingOptions функция.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Фактор регуляризации L2 для смещений в виде неотрицательного скаляра.

    Программное обеспечение умножает этот фактор на глобальный фактор регуляризации L2, чтобы определить регуляризацию L2 для смещений в этом слое. Например, если BiasL2Factor 2, затем регуляризация L2 для смещений в этом слое является дважды глобальным фактором регуляризации L2. Можно задать глобальный фактор регуляризации L2 использование trainingOptions функция.

    Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Слой

    Имя слоя в виде вектора символов или строкового скаляра. Для Layer вход массивов, trainNetwork, assembleNetwork, layerGraph, и dlnetwork функции автоматически присваивают имена к слоям с Name установите на ''.

    Типы данных: char | string

    Это свойство доступно только для чтения.

    Количество входных параметров слоя. Этот слой принимает один вход только.

    Типы данных: double

    Это свойство доступно только для чтения.

    Введите имена слоя. Этот слой принимает один вход только.

    Типы данных: cell

    Это свойство доступно только для чтения.

    Количество выходных параметров слоя. Этот слой имеет один выход только.

    Типы данных: double

    Это свойство доступно только для чтения.

    Выведите имена слоя. Этот слой имеет один выход только.

    Типы данных: cell

    Примеры

    свернуть все

    Создайте 1D сверточный слой с 96 фильтрами ширины 11.

    layer = convolution1dLayer(11,96)
    layer = 
      Convolution1DLayer with properties:
    
                  Name: ''
    
       Hyperparameters
            FilterSize: 11
           NumChannels: 'auto'
            NumFilters: 96
                Stride: 1
        DilationFactor: 1
           PaddingMode: 'manual'
           PaddingSize: [0 0]
          PaddingValue: 0
    
       Learnable Parameters
               Weights: []
                  Bias: []
    
      Show all properties
    
    

    Включайте 1D сверточный слой в Layer массив.

    layers = [
        sequenceInputLayer(12)
        convolution1dLayer(11,96)
        reluLayer
        globalMaxPooling1dLayer
        fullyConnectedLayer(10)
        softmaxLayer
        classificationLayer]
    layers = 
      7x1 Layer array with layers:
    
         1   ''   Sequence Input           Sequence input with 12 dimensions
         2   ''   Convolution              96 11 convolutions with stride 1 and padding [0  0]
         3   ''   ReLU                     ReLU
         4   ''   1-D Global Max Pooling   1-D global max pooling
         5   ''   Fully Connected          10 fully connected layer
         6   ''   Softmax                  softmax
         7   ''   Classification Output    crossentropyex
    

    Алгоритмы

    развернуть все

    Ссылки

    [1] Glorot, Ксавьер и Иосуа Бенхио. "Изучая Трудность Учебных Глубоких Нейронных сетей Прямого распространения". В Продолжениях Тринадцатой Международной конференции по вопросам Искусственного интеллекта и Статистики, 249–356. Сардиния, Италия: AISTATS, 2010.

    [2] Он, Kaiming, Сянюй Чжан, Шаоцин Жэнь и Цзянь Сунь. "Копаясь Глубоко в Выпрямителях: Превышение Эффективности Человеческого Уровня на Классификации ImageNet". В Продолжениях 2 015 Международных конференций IEEE по вопросам Компьютерного зрения, 1026–1034. Вашингтон, округ Колумбия: Общество Компьютерного зрения IEEE, 2015.

    Введенный в R2021b