Проверяйте валидность пользовательского слоя
checkLayer(
проверяет валидность пользовательского слоя, используя сгенерированные данные размеров в layer
,validInputSize
)validInputSize
. Для слоев с одним входом задайте validInputSize
к типовому размеру входных данных для слоя. Для слоев с несколькими входами задайте validInputSize
массиву ячеек типичных размеров, где каждый элемент соответствует входу слоя.
checkLayer(
задает дополнительные опции, используя одну или несколько пары "имя-значение".layer
,validInputSize
,Name,Value
)
Проверьте валидность пользовательского слоя preluLayer
.
Задайте пользовательский слой PReLU. Чтобы создать этот слой, сохраните файл preluLayer.m
в текущей папке.
Создайте образец слоя и проверьте, что он действителен checkLayer
. Установите допустимый размер входного сигнала, равный типовому размеру единственного входа наблюдения для слоя. Для одного входа слой ожидает наблюдения размера h-на-w-на-c, где h, w и c являются высотой, шириной и количеством каналов предыдущего выходного слоя, соответственно.
Задайте validInputSize
как типовой размер массива входа.
layer = preluLayer(20,'prelu');
validInputSize = [5 5 20];
checkLayer(layer,validInputSize)
Skipping multi-observation tests. To enable tests with multiple observations, specify the 'ObservationDimension' option. For 2-D image data, set 'ObservationDimension' to 4. For 3-D image data, set 'ObservationDimension' to 5. For sequence data, set 'ObservationDimension' to 2. Skipping GPU tests. No compatible GPU device found. Skipping code generation compatibility tests. To check validity of the layer for code generation, specify the 'CheckCodegenCompatibility' and 'ObservationDimension' options. Running nnet.checklayer.TestLayerWithoutBackward ......... Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 9 Passed, 0 Failed, 0 Incomplete, 13 Skipped. Time elapsed: 0.12426 seconds.
Результаты показывают количество пройденных, неудачных и пропущенных тестов. Если вы не задаете 'ObservationsDimension'
опция, или не имеет графический процессор, тогда функция пропускает соответствующие тесты.
Проверяйте несколько наблюдений
Для входных входов нескольких наблюдений слой ожидает массив наблюдений размера h-на-w-на-c-на-N, где h, w и c - высота, ширина и количество каналов, соответственно, и N - количество наблюдений.
Чтобы проверить валидность слоя для нескольких наблюдений, задайте типичный размер наблюдения и установите 'ObservationDimension'
по 4.
layer = preluLayer(20,'prelu'); validInputSize = [5 5 20]; checkLayer(layer,validInputSize,'ObservationDimension',4)
Skipping GPU tests. No compatible GPU device found. Skipping code generation compatibility tests. To check validity of the layer for code generation, specify the 'CheckCodegenCompatibility' and 'ObservationDimension' options. Running nnet.checklayer.TestLayerWithoutBackward .......... ... Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 13 Passed, 0 Failed, 0 Incomplete, 9 Skipped. Time elapsed: 0.047134 seconds.
В этом случае функция не обнаруживает никаких проблем со слоем.
Проверьте совместимость генерации кода пользовательского слоя codegenPreluLayer
.
Задайте пользовательский слой PReLU с поддержкой генерации кода. Чтобы создать этот слой, сохраните файл codegenPreluLayer.m
в текущей папке.
Создайте образец слоя и проверьте его валидность с помощью checkLayer
. Задайте допустимый размер входа как размер единственного наблюдения типового входа для слоя. Слой ожидает 4-D входов массива, где первые три размерности соответствуют высоте, ширине и количеству каналов предыдущего выхода слоя, а четвертая размерность соответствует наблюдениям.
Задайте типовой размер входа наблюдения и установите 'ObservationDimension'
опция 4. Чтобы проверить совместимость генерации кода, установите 'CheckCodegenCompatibility'
опция для true
.
layer = codegenPreluLayer(20,'prelu'); validInputSize = [24 24 20]; checkLayer(layer,validInputSize,'ObservationDimension',4,'CheckCodegenCompatibility',true)
Skipping GPU tests. No compatible GPU device found. Running nnet.checklayer.TestLayerWithoutBackward .......... ........ Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 18 Passed, 0 Failed, 0 Incomplete, 4 Skipped. Time elapsed: 0.53879 seconds.
Функция не обнаруживает проблем со слоем.
layer
- Пользовательский слойnnet.layer.Layer
| объекта nnet.layer.ClassificationLayer
| объекта nnet.layer.RegressionLayer
объектПользовательский слой, заданный как nnet.layer.Layer
объект, nnet.layer.ClassificationLayer
объект, или nnet.layer.RegressionLayer
объект. Для примера, показывающего, как задать свой собственный пользовательский слой, смотрите Задать Пользовательский Слой Глубокого Обучения с Настраиваемыми параметрами.
checkLayer
функция не поддерживает слои, наследующие от nnet.layer.Formattable
.
validInputSize
- Действительные входные размерыДопустимые входные размеры слоя, заданные как вектор положительных целых чисел или массив ячеек векторов положительных целых чисел.
Для слоев с одним входом задайте validInputSize
как вектор целых чисел, соответствующих размерностям входных данных. Для примера, [5 5 10]
соответствует действительным входным данным размера 5 на 5 на 10.
Для слоев с несколькими входами задайте validInputSize
как массив ячеек векторов, где каждый вектор соответствует слою входу, а элементы векторов соответствуют размерностям соответствующих входных данных. Для примера, {[24 24 20],[24 24 10]}
соответствует действительным размерам входа двух входов, где 24 на 24 на 20 - действительный размер входа для первого входа, и 24 на 24 на 10 - действительный размер входа для второго входа.
Для получения дополнительной информации смотрите Слой Входа Sizes.
Для больших размеров входного сигнала проверки градиента выполняются дольше. Чтобы ускорить тесты, укажите меньший допустимый размер входа.
Пример: [5 5 10]
Пример: {[24 24 20],[24 24 10]}
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| cell
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
'ObservationDimension',4
устанавливает размерность наблюдения равным 4'ObservationDimension'
- размерность наблюденияРазмерность наблюдения, заданная как разделенная разделенными запятой парами, состоящая из 'ObservationDimension'
и положительное целое число.
Размерность наблюдения определяет, какая размерность входных данных слоя соответствует наблюдениям. Например, если слой ожидает, что входные данные имеют размер h -by- w -by- c -by- N, где h, w и c соответствуют высоте, ширине и количеству каналов входных данных, соответственно, и N соответствует количеству наблюдений, то размерность наблюдения равна 4. Для получения дополнительной информации смотрите Слой Входа Sizes.
Если вы задаете размерность наблюдения, то checkLayer
функция проверяет, что функции слоя действительны, используя сгенерированные данные с мини-пакетами размера 1 и 2. Если вы не задаете размерность наблюдения, то функция пропускает соответствующие тесты.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
'CheckCodegenCompatibility'
- Флаг, чтобы включить тесты генерации кодаfalse
(по умолчанию) | true
Флаг для включения тестов генерации кода, заданный как разделенная разделенными запятой парами, состоящая из 'CheckCodegenCompatibility'
и true
или false
.
Если 'CheckCodegenCompatibility'
является true
, затем необходимо задать 'ObservationDimension'
опция.
checkLayer
функция не проверяет функции, которые несовместимы с генерацией кода. Чтобы проверить, что определение пользовательского слоя поддерживается для генерации кода, сначала используйте Code Generation Readiness. Для получения дополнительной информации смотрите Проверить код при помощи Инструмента готовности генерации кода (MATLAB Coder).
Типы данных: logical
Для каждого слоя допустимый размер входа и размерность наблюдения зависят от выхода предыдущего слоя.
Для промежуточных слоев (слоев типа nnet.layer.Layer
), допустимый размер входа и размерность наблюдения зависят от типа данных, вводимых в слой.
Для слоев с одним входом задайте validInputSize
как вектор целых чисел, соответствующих размерностям входных данных.
Для слоев с несколькими входами задайте validInputSize
как массив ячеек векторов, где каждый вектор соответствует слою входу, а элементы векторов соответствуют размерностям соответствующих входных данных.
Для больших размеров входного сигнала проверки градиента выполняются дольше. Чтобы ускорить тесты, укажите меньший допустимый размер входа.
Вход слоя | Вход сигнала | Размерность наблюдения |
---|---|---|
2-D изображения | h -by- w -by- c -by- N, где h, w и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, а N - количеству наблюдений. | 4 |
3-D изображения | <reservedrangesplaceholder9>-by-<reservedrangesplaceholder8>-by-<reservedrangesplaceholder7>-by-<reservedrangesplaceholder6>-by-<reservedrangesplaceholder5>, где h, w, d, и c соответствуют высоте, ширине, глубине, и количество каналов 3D изображений, соответственно, и N - количество наблюдений. | 5 |
Векторные последовательности | c -by- N -by- S, где c - количество функций последовательностей, N - количество наблюдений, а S - длина последовательности. | 2 |
2-D последовательности изображений | h -by- w -by- c -by- N -by- S, где h, w и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, N является количеством наблюдений, а S - длиной последовательности. | 4 |
3-D последовательности изображений | h -by- w -by- d -by- c -by- N -by- S, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов 3-D изображений, соответственно, N количество наблюдений, а S - длина последовательности. | 5 |
Для примера, для 2-D задач классификации изображений, установите validInputSize
на [h w c]
, где h
, w
, и c
соответствуют высоте, ширине и количеству каналов изображений, соответственно и 'ObservationDimension'
на 4
.
Генерация кода поддерживает промежуточные слои только с 2-D входом изображения.
Для выходных слоев (слоев типа nnet.layer.ClassificationLayer
или nnet.layer.RegressionLayer
), установите validInputSize
к типовому размеру одной входной Y
наблюдения к слою.
Для задач классификации, допустимого размера входа и размерности наблюдения Y
зависят от типа задачи:
Задача классификации | Вход сигнала | Размерность наблюдения |
---|---|---|
2-D классификации изображений | 1 на 1-by - K -by - N, где K - количество классов, а N - количество наблюдений. | 4 |
3-D классификации изображений | 1 на 1 на 1 K N, где K количество классов и N, является количеством наблюдений. | 5 |
Классификация от последовательности до метки | K -by - N, где K - количество классов, а N - количество наблюдений. | 2 |
Классификация последовательность-последовательность | K -by- N -by- S, где K - количество классов, N - количество наблюдений, а S - длина последовательности. | 2 |
Для примера, для 2-D задач классификации изображений, установите validInputSize
на [1 1 K]
, где K
количество классов и 'ObservationDimension'
на 4
.
Для задач регрессии, размерности Y
также зависят от типа задачи. Следующая таблица описывает размерности Y
.
Регрессионная задача | Вход сигнала | Размерность наблюдения |
---|---|---|
2-D регрессию изображения | 1 на 1-by - R -by - N, где R - количество откликов, а N - количество наблюдений. | 4 |
2-D регрессию «изображение-изображение» | h -by- w -by- c -by- N , где h, w и c являются высотой, шириной и количеством каналов выхода соответственно, и N является количеством наблюдений. | 4 |
3-D регрессию изображения | 1 на 1 на 1 R N, где R количество ответов и N, является количеством наблюдений. | 5 |
3-D регрессию «изображение-изображение» | h -by- w -by- d -by- c -by- N , где h, w, d и c являются высотой, шириной, глубиной и количеством каналов выхода соответственно, и N является количеством наблюдений. | 5 |
Регрессия от последовательности к единице | R -by - N, где R - количество откликов, а N - количество наблюдений. | 2 |
Регрессия от последовательности к последовательности | R -by- N -by- S, где R - количество откликов, N - количество наблюдений, а S - длина последовательности. | 2 |
Для примера, для 2-D задач регрессии изображений, установите validInputSize
на [1 1 R]
, где R
количество ответов и 'ObservationDimension'
на 4
.
checkLayer
функция проверяет валидность пользовательского слоя путем выполнения ряда тестов, описанных в этих таблицах. Для получения дополнительной информации о тестах, используемых checkLayer
, см. «Проверка валидности пользовательского слоя».
checkLayer
функция использует эти тесты, чтобы проверить валидность пользовательских промежуточных слоев (слоев типа nnet.layer.Layer
).
Тест | Описание |
---|---|
functionSyntaxesAreCorrect | Синтаксисы функций слоя заданы правильно. |
predictDoesNotError | predict не ошибается. |
forwardDoesNotError | Когда задано, |
forwardPredictAreConsistentInSize | Когда |
backwardDoesNotError | Когда задано, backward не ошибается. |
backwardIsConsistentInSize | Когда
|
predictIsConsistentInType | Выходные выходы |
forwardIsConsistentInType | Когда |
backwardIsConsistentInType | Когда |
gradientsAreNumericallyCorrect | Когда backward задан градиент, вычисленный в backward согласуются с числовыми градиентами. |
backwardPropagationDoesNotError | Когда backward не задан, производные могут быть вычислены с помощью автоматической дифференциации. |
codegenPragmaDefinedInClassDef | Прагма- "%#codegen" для генерации кода указано в файле класса. |
checkForSupportedLayerPropertiesForCodegen | Свойства слоя поддерживают генерацию кода. |
predictIsValidForCodeGeneration | predict действителен для генерации кода. |
Тесты predictIsConsistentInType
, forwardIsConsistentInType
, и backwardIsConsistentInType
также проверьте совместимость с GPU. Чтобы выполнить функции слоя на графическом процессоре, функции должны поддерживать входы и выходы типа gpuArray
с базовым типом данных single
.
checkLayer
функция использует эти тесты, чтобы проверить валидность пользовательских выходных слоев (слоев типа nnet.layer.ClassificationLayer
или nnet.layer.RegressionLayer
).
Тест | Описание |
---|---|
forwardLossDoesNotError | forwardLoss не ошибается. |
backwardLossDoesNotError | backwardLoss не ошибается. |
forwardLossIsScalar | Область выхода forwardLoss скаляром. |
backwardLossIsConsistentInSize | Когда backwardLoss задан, выход backwardLoss согласуется в размере: dLdY - тот же размер, что и предсказания Y . |
forwardLossIsConsistentInType | Область выхода |
backwardLossIsConsistentInType | Когда |
gradientsAreNumericallyCorrect | Когда backwardLoss задан градиент, вычисленный в backwardLoss численно верны. |
backwardPropagationDoesNotError | Когда backwardLoss не задан, производные могут быть вычислены с помощью автоматической дифференциации. |
The forwardLossIsConsistentInType
и backwardLossIsConsistentInType
тесты также проверяют совместимость с GPU. Чтобы выполнить функции слоя на графическом процессоре, функции должны поддерживать входы и выходы типа gpuArray
с базовым типом данных single
.
analyzeNetwork
| trainingOptions
| trainNetwork
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.