Входной слой изображения
Входной слой изображений вводит 2-D изображения в сеть и применяет нормализацию данных.
Для 3-D входы изображений используйте image3dInputLayer
.
возвращает входной слой изображения и задает layer
= imageInputLayer(inputSize
)InputSize
свойство.
InputSize
- Размер входаРазмер входных данных, заданный как вектор-строка из целых чисел [h w c]
, где h
, w
, и c
соответствуют высоте, ширине и количеству каналов соответственно.
Для полутоновых изображений задайте вектор с c
равно 1
.
Для изображений RGB задайте вектор с c
равно 3
.
Для мультиспектральных или гиперспектральных изображений задайте вектор с c
равен количеству каналов.
Для 3-D входы изображения или объема используйте image3dInputLayer
.
Пример:
[224 224 3]
Normalization
- Нормализация данных'zerocenter'
(по умолчанию) | 'zscore'
| 'rescale-symmetric'
| 'rescale-zero-one'
| 'none'
| указатель на функциюНормализация данных для применения каждый раз, когда данные передаются вперед через слой входа, заданная как одно из следующего:
'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
.
NormalizationDimension
- Нормализационная размерность'auto'
(по умолчанию) | 'channel'
| 'element'
| 'all'
Нормализующая размерность, заданная как одно из следующего:
'auto'
- Если опция обучения false
и вы задаете любую из статистики нормализации (Mean
, StandardDeviation
, Min
, или Max
), затем нормализуйте по размерностям, соответствующим статистике. В противном случае пересчитайте статистику во время обучения и примените нормализацию по каналу.
'channel'
- Нормализация по каналам.
'element'
- Поэлементная нормализация.
'all'
- Нормализуйте все значения с помощью скалярной статистики.
Mean
- Среднее значение для нормализации с нулевым центром и z-результатом[]
(по умолчанию) | трехмерный массив | числовым скаляромСреднее значение для нормализации с нулевым центром и 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
StandardDeviation
- Стандартное отклонение для нормализации z-балла[]
(по умолчанию) | трехмерный массив | числовым скаляромСтандартное отклонение для нормализации 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
Min
- Минимальное значение для перемасштабирования[]
(по умолчанию) | трехмерный массив | числовым скаляромМинимальное значение для перемасштабирования, заданное как 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
Max
- Максимальное значение для перемасштабирования[]
(по умолчанию) | трехмерный массив | числовым скаляромМаксимальное значение для перемасштабирования, заданное как 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
DataAugmentation
- Преобразования увеличения данных'none'
(по умолчанию) | 'randcrop'
| 'randfliplr'
| массивов ячеек 'randcrop'
и 'randfliplr'
Примечание
The DataAugmentation
свойство не рекомендуется. Для предварительной обработки изображений с обрезкой, отражением и другими геометрическими преобразованиями используйте augmentedImageDatastore
вместо этого.
Увеличение количества данных преобразуется в использование во время обучения, заданное как одно из следующего.
'none'
- Нет увеличения данных
'randcrop'
- Взять случайный кадр из обучающего изображения. Случайный размер кадра совпадает с размером входного сигнала.
'randfliplr'
- Случайным образом разверните входные изображения горизонтально с вероятностью 50%.
Массив ячеек 'randcrop'
и 'randfliplr'
. Программа применяет увеличение в порядке, заданном в массиве ячеек.
Увеличение количества данных об изображениях является еще одним способом уменьшения сверхподбора кривой [1], [2].
Типы данных: string
| char
| cell
Name
- Имя слоя''
(по умолчанию) | символьный вектор | строковый скаляр
Имя слоя, заданное как вектор символов или строковый скаляр. Чтобы включить слой в график слоев, необходимо задать непустое уникальное имя слоя. Если вы обучаете последовательную сеть с слоем и Name
установлено в ''
затем программа автоматически присваивает слою имя во время обучения.
Типы данных: char
| string
NumInputs
- Количество входовКоличество входов слоя. Слой не имеет входов.
Типы данных: double
InputNames
- Входные имена{}
(по умолчанию)Входные имена слоя. Слой не имеет входов.
Типы данных: cell
NumOutputs
- Количество выходовКоличество выходов слоя. Этот слой имеет только один выход.
Типы данных: double
OutputNames
- Выходные имена{'out'}
(по умолчанию)Выходные имена слоя. Этот слой имеет только один выход.
Типы данных: 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
AverageImage
свойство будет удаленоНе рекомендуемый запуск в R2019b
AverageImage
будет удалено. Использование Mean
вместо этого. Чтобы обновить код, замените все образцы AverageImage
с Mean
. Нет различий между свойствами, которые требуют дополнительных обновлений вашего кода.
imageInputLayer
и image3dInputLayer
по умолчанию используйте канальную нормализациюИзменение поведения в будущем релизе
Начиная с R2019b, imageInputLayer
и image3dInputLayer
по умолчанию используйте нормализацию по каналу. В предыдущих версиях эти слои используют поэлементную нормализацию. Чтобы воспроизвести это поведение, установите NormalizationDimension
опция для этих слоев, чтобы 'element'
.
[1] Крижевский, А., И. Суцкевер, и Г. Е. Хинтон. «Классификация ImageNet с глубокими сверточными нейронными сетями». Усовершенствования в системах нейронной обработки информации. Том 25, 2012.
[2] Сирешан, Д., У. Мейер, Й. Шмидхубер. «Глубокие нейронные сети с несколькими столбцами для классификации изображений». IEEE Conference on Компьютерное Зрение and Pattern Recognition, 2012.
Указания и ограничения по применению:
Генерация кода не поддерживает 'Normalization'
задается с помощью указателя на функцию.
Указания и ограничения по применению:
Генерация кода не поддерживает 'Normalization'
задается с помощью указателя на функцию.
augmentedImageDatastore
| convolution2dLayer
| Deep Network Designer | featureInputLayer
| fullyConnectedLayer
| image3dInputLayer
| maxPooling2dLayer
| trainNetwork
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.