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-by-1 вектор средств по признаку, числовой скаляр или [].

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

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

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

Стандартное отклонение для нормализации z-балла, заданное как numFeatures-by-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