exponenta event banner

featureInputLayer

Слой ввода элементов

Описание

Входной уровень элемента вводит данные элемента в сеть и применяет нормализацию данных. Этот слой используется при наличии набора числовых скаляров, представляющих элементы (данные без пространственных или временных измерений).

Для ввода изображения используйте imageInputLayer.

Создание

Описание

layer = featureInputLayer(numFeatures) возвращает слой ввода элемента и задает InputSize для указанного количества элементов.

пример

layer = featureInputLayer(numFeatures,Name,Value) задает необязательные свойства, используя аргументы пары имя-значение. Можно указать несколько аргументов пары имя-значение. Заключите каждое имя свойства в отдельные кавычки.

Свойства

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

Ввод элементов

Количество элементов для каждого наблюдения в данных, указанное как положительное целое число.

Для ввода изображения используйте imageInputLayer.

Пример: 10

Нормализация данных для применения при каждом прямом распространении данных через входной уровень, определяемая одним из следующих параметров:

  • 'zerocenter' - Вычитание среднего значения, указанного Mean.

  • 'zscore' - Вычитание среднего значения, указанного Mean и делить на StandardDeviation.

  • 'rescale-symmetric' - Масштабировать входные данные в диапазоне [-1, 1] с использованием минимального и максимального значений, указанных в Min и Maxсоответственно.

  • 'rescale-zero-one' - Масштабировать входные данные в диапазоне [0, 1] с использованием минимального и максимального значений, указанных в Min и Maxсоответственно.

  • 'none' - Не нормализуйте входные данные.

  • дескриптор функции - нормализация данных с помощью указанной функции. Функция должна иметь вид Y = func(X), где X - входные данные и выходные данные; Y - нормализованные данные.

Совет

По умолчанию программа автоматически вычисляет статистику нормализации во время обучения. Чтобы сэкономить время при обучении, укажите необходимые статистические данные для нормализации и установите 'ResetInputNormalization' опция в trainingOptions кому false.

Размер нормализации, указанный как одно из следующих значений:

  • 'auto' - Если вариант обучения false и укажите любую из статистики нормализации (Mean, StandardDeviation, Min, или Max), затем нормализовать по измерениям, соответствующим статистике. В противном случае пересчитайте статистику во время обучения и примените нормализацию канала.

  • 'channel' - Канальная нормализация.

  • 'all' - Нормализация всех значений с помощью скалярной статистики.

Среднее значение для нормализации нулевого центра и z-показателя, указанное как numFeatures-на-1 вектор средства на элемент, числовой скаляр или [].

При указании Mean собственность, то Normalization должно быть 'zerocenter' или 'zscore'. Если Mean является []затем программное обеспечение вычисляет среднее значение во время обучения.

Это свойство можно задать при создании сетей без обучения (например, при сборке сетей с помощью assembleNetwork).

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

Стандартное отклонение для нормализации показателя z, указанное как numFeatures-на-1 вектор средства на элемент, числовой скаляр или [].

При указании StandardDeviation собственность, то Normalization должно быть 'zscore'. Если StandardDeviation является []затем программное обеспечение вычисляет стандартное отклонение во время обучения.

Это свойство можно задать при создании сетей без обучения (например, при сборке сетей с помощью assembleNetwork).

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

Минимальное значение для масштабирования, указанное как numFeatures-by-1 вектор минимумов на элемент, числовой скаляр или [].

При указании Min собственность, то Normalization должно быть 'rescale-symmetric' или 'rescale-zero-one'. Если Min является [], то программное обеспечение вычисляет минимум во время обучения.

Это свойство можно задать при создании сетей без обучения (например, при сборке сетей с помощью assembleNetwork).

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

Максимальное значение для масштабирования, указанное как numFeatures-by-1 вектор максимумов на элемент, числовой скаляр или [].

При указании Max собственность, то Normalization должно быть 'rescale-symmetric' или 'rescale-zero-one'. Если Max является [], то программное обеспечение вычисляет максимум во время обучения.

Это свойство можно задать при создании сетей без обучения (например, при сборке сетей с помощью assembleNetwork).

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

Слой

Имя слоя, указанное как символьный вектор или строковый скаляр. Чтобы включить слой в график слоев, необходимо указать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с уровнем и Name имеет значение ''затем программа автоматически присваивает имя слою во время обучения.

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

Количество входов слоя. Слой не имеет входных данных.

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

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

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

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

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

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

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

Примеры

свернуть все

Создание слоя ввода элемента с именем 'input' для наблюдений, состоящих из 21 признака.

layer = featureInputLayer(21,'Name','input')
layer = 
  FeatureInputLayer with properties:

                      Name: 'input'
                 InputSize: 21

   Hyperparameters
             Normalization: 'none'
    NormalizationDimension: 'auto'

Включение слоя ввода элемента в Layer массив.

numFeatures = 21;
numClasses = 3;
 
layers = [
    featureInputLayer(numFeatures,'Name','input')
    fullyConnectedLayer(numClasses, 'Name','fc')
    softmaxLayer('Name','sm')
    classificationLayer('Name','classification')]
layers = 
  4x1 Layer array with layers:

     1   'input'            Feature Input           21 features
     2   'fc'               Fully Connected         3 fully connected layer
     3   'sm'               Softmax                 softmax
     4   'classification'   Classification Output   crossentropyex

Для обучения сети, содержащей как слой ввода изображения, так и слой ввода элемента, необходимо использовать dlnetwork объект в пользовательском учебном цикле.

Определите размер входного изображения, количество элементов каждого наблюдения, количество классов, а также размер и количество фильтров слоя свертки.

imageInputSize = [28 28 1];
numFeatures = 1;
numClasses = 10;
filterSize = 5;
numFilters = 16;

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

Определите первую часть сети. Определите слои классификации изображений и включите слой конкатенации перед последним полностью соединенным слоем.

layers = [
    imageInputLayer(imageInputSize,'Normalization','none','Name','images')
    convolution2dLayer(filterSize,numFilters,'Name','conv')
    reluLayer('Name','relu')
    fullyConnectedLayer(50,'Name','fc1')
    concatenationLayer(1,2,'Name','concat')
    fullyConnectedLayer(numClasses,'Name','fc2')
    softmaxLayer('Name','softmax')];

Преобразование слоев в график слоев.

lgraph = layerGraph(layers);

Для второй части сети добавьте уровень ввода элемента и подключите его ко второму входу уровня конкатенации.

featInput = featureInputLayer(numFeatures,'Name','features');
lgraph = addLayers(lgraph, featInput);
lgraph = connectLayers(lgraph, 'features', 'concat/in2');

Визуализация сети.

plot(lgraph)

Figure contains an axes. The axes contains an object of type graphplot.

Создать dlnetwork объект.

dlnet = dlnetwork(lgraph)
dlnet = 
  dlnetwork with properties:

         Layers: [8x1 nnet.cnn.layer.Layer]
    Connections: [7x2 table]
     Learnables: [6x3 table]
          State: [0x3 table]
     InputNames: {'images'  'features'}
    OutputNames: {'softmax'}
    Initialized: 1

Расширенные возможности

.
Представлен в R2020b