imageInputLayer

Входной слой изображения

Описание

Входной слой изображений вводит 2-D изображения в сеть и применяет нормализацию данных.

Для 3-D входы изображений используйте image3dInputLayer.

Создание

Описание

layer = imageInputLayer(inputSize) возвращает входной слой изображения и задает InputSize свойство.

пример

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

Свойства

расширить все

Вход изображений

Размер входных данных, заданный как вектор-строка из целых чисел [h w c], где h, w, и c соответствуют высоте, ширине и количеству каналов соответственно.

  • Для полутоновых изображений задайте вектор с c равно 1.

  • Для изображений RGB задайте вектор с c равно 3.

  • Для мультиспектральных или гиперспектральных изображений задайте вектор с c равен количеству каналов.

Для 3-D входы изображения или объема используйте image3dInputLayer.

Пример: [224 224 3]

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

  • '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' - Нормализация по каналам.

  • 'element' - Поэлементная нормализация.

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

Среднее значение для нормализации с нулевым центром и z-результатом, заданное как h -by w -by - c массив, 1 на 1-by - c массив средств на канал, числовой скаляр или [], где h, w и c соответствуют высоте, ширине и количеству каналов среднего значения, соответственно.

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

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

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

Стандартное отклонение для нормализации z-балла, заданное как h -by w -by - c массив, 1 на 1-by - c массив средств на канал, числовой скаляр или [], где h, w и c соответствуют высоте, ширине и количеству каналов стандартного отклонения, соответственно.

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

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

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

Минимальное значение для перемасштабирования, заданное как h -by- w -by- c массив, 1 на 1-by- c массив минимумов на канал, числовой скаляр или [], где h, w и c соответствуют высоте, ширине и количеству каналов минимумов, соответственно.

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

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

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

Максимальное значение для перемасштабирования, заданное как h -by- w -by- c массив, 1 на 1-by- c массив максимумов на канал, числовой скаляр или [], где h, w и c соответствуют высоте, ширине и количеству каналов максимумов, соответственно.

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

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

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

Примечание

The DataAugmentation свойство не рекомендуется. Для предварительной обработки изображений с обрезкой, отражением и другими геометрическими преобразованиями используйте augmentedImageDatastore вместо этого.

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

  • 'none' - Нет увеличения данных

  • 'randcrop' - Взять случайный кадр из обучающего изображения. Случайный размер кадра совпадает с размером входного сигнала.

  • 'randfliplr' - Случайным образом разверните входные изображения горизонтально с вероятностью 50%.

  • Массив ячеек 'randcrop' и 'randfliplr'. Программа применяет увеличение в порядке, заданном в массиве ячеек.

Увеличение количества данных об изображениях является еще одним способом уменьшения сверхподбора кривой [1], [2].

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

Слой

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

Создайте входной слой для цветных изображений 28 на 28 с именем 'input'. По умолчанию слой выполняет нормализацию данных путем вычитания среднего изображения набора обучающих данных из каждого входа изображения.

inputlayer = imageInputLayer([28 28 3],'Name','input')
inputlayer = 
  ImageInputLayer with properties:

                      Name: 'input'
                 InputSize: [28 28 3]

   Hyperparameters
          DataAugmentation: 'none'
             Normalization: 'zerocenter'
    NormalizationDimension: 'auto'
                      Mean: []

Включите входной слой изображения в Layer массив.

layers = [ ...
    imageInputLayer([28 28 1])
    convolution2dLayer(5,20)
    reluLayer
    maxPooling2dLayer(2,'Stride',2)
    fullyConnectedLayer(10)
    softmaxLayer
    classificationLayer]
layers = 
  7x1 Layer array with layers:

     1   ''   Image Input             28x28x1 images with 'zerocenter' normalization
     2   ''   Convolution             20 5x5 convolutions with stride [1  1] and padding [0  0  0  0]
     3   ''   ReLU                    ReLU
     4   ''   Max Pooling             2x2 max pooling with stride [2  2] and padding [0  0  0  0]
     5   ''   Fully Connected         10 fully connected layer
     6   ''   Softmax                 softmax
     7   ''   Classification Output   crossentropyex

Вопросы совместимости

расширить все

Не рекомендуемый запуск в R2019b

Изменение поведения в будущем релизе

Ссылки

[1] Крижевский, А., И. Суцкевер, и Г. Е. Хинтон. «Классификация ImageNet с глубокими сверточными нейронными сетями». Усовершенствования в системах нейронной обработки информации. Том 25, 2012.

[2] Сирешан, Д., У. Мейер, Й. Шмидхубер. «Глубокие нейронные сети с несколькими столбцами для классификации изображений». IEEE Conference on Компьютерное Зрение and Pattern Recognition, 2012.

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

..
Введенный в R2016a