Проверяйте валидность пользовательского или функционального слоя
checkLayer(
проверяет валидность пользовательского или функционального слоя с помощью сгенерированных данных размеров в layer
,validInputSize
)validInputSize
. Для слоев с одним входом, набор validInputSize
к типичному размеру входных данных к слою. Для слоев с несколькими входными параметрами, набор validInputSize
к массиву ячеек типичных размеров, где каждый элемент соответствует входу слоя.
checkLayer(
задает дополнительные опции с помощью одних или нескольких аргументов name-value.layer
,validInputSize
,Name=Value
)
Проверяйте валидность примера пользовательский слой preluLayer
.
Пользовательский слой preluLayer
, присоединенный к этому пример как вспомогательный файл, применяет операцию PReLU к входным данным. Чтобы получить доступ к этому слою, откройте этот пример как live скрипт.
Создайте экземпляр слоя и проверяйте, что это - допустимое использование checkLayer
. Установите допустимый входной размер на типичный размер одного входа наблюдения к слою. Для одного входа слой ожидает наблюдения за размером h w c, где h, w, и c являются высотой, шириной и количеством каналов предыдущего слоя выход, соответственно.
Задайте validInputSize
как типичный размер входного массива.
layer = preluLayer(20); 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: 12 Passed, 0 Failed, 0 Incomplete, 16 Skipped. Time elapsed: 0.14699 seconds.
Результаты показывают количество переданных, проваленных, и пропущенных тестов. Если вы не задаете ObservationsDimension
опция, или не имеют графического процессора, затем функция пропускает соответствующие тесты.
Проверяйте несколько наблюдений
Для входа мультинаблюдения слой ожидает массив наблюдений за размером h w c N, где h, w, и c являются высотой, шириной и количеством каналов, соответственно, и N является количеством наблюдений.
Чтобы проверять валидность слоя на несколько наблюдений, задайте типичный размер наблюдения и установите ObservationDimension
опция к 4.
layer = preluLayer(20); 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: 18 Passed, 0 Failed, 0 Incomplete, 10 Skipped. Time elapsed: 0.18684 seconds.
В этом случае функция не обнаруживает проблем со слоем.
Создайте функциональный расположенный на слое объект, который применяет softsign операцию к входу. softsign операция дана функцией .
layer = functionLayer(@(X) X./(1 + abs(X)))
layer = FunctionLayer with properties: Name: '' PredictFcn: @(X)X./(1+abs(X)) Formattable: 0 Learnable Parameters No properties. State Parameters No properties. Show all properties
Проверяйте, что слой это - допустимое использование checkLayer
функция. Установите допустимый входной размер на типичный размер одного входа наблюдения к слою. Например, для одного входа, слой ожидает наблюдения за размером h w c, где h, w, и c являются высотой, шириной и количеством каналов предыдущего слоя выход, соответственно.
Задайте validInputSize
как типичный размер входного массива.
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: 12 Passed, 0 Failed, 0 Incomplete, 16 Skipped. Time elapsed: 0.17347 seconds.
Результаты показывают количество переданных, проваленных, и пропущенных тестов. Если вы не задаете ObservationsDimension
опция, или не имеют графического процессора, затем функция пропускает соответствующие тесты.
Проверяйте несколько наблюдений
Для входа мультинаблюдения изображений слой ожидает массив наблюдений за размером h w c N, где h, w, и c являются высотой, шириной и количеством каналов, соответственно, и N является количеством наблюдений.
Чтобы проверять валидность слоя на несколько наблюдений, задайте типичный размер наблюдения и установите ObservationDimension
опция к 4.
layer = functionLayer(@(X) X./(1 + abs(X))); 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: 18 Passed, 0 Failed, 0 Incomplete, 10 Skipped. Time elapsed: 0.13796 seconds.
В этом случае функция не обнаруживает проблем со слоем.
Проверяйте совместимость генерации кода пользовательского слоя codegenPreluLayer
.
Пользовательский слой codegenPreluLayer
, присоединенный к этому пример как вспомогательный файл, применяет операцию PReLU к входным данным. Чтобы получить доступ к этому слою, откройте этот пример как live скрипт.
Создайте экземпляр слоя и проверяйте его валидность с помощью checkLayer
. Задайте допустимый входной размер как размер одного наблюдения за типичным входом к слою. Слой ожидает 4-D входные параметры массивов, где первые три измерения соответствуют высоте, ширине и количеству каналов предыдущего слоя выход, и четвертая размерность соответствует наблюдениям.
Задайте типичный размер входа наблюдения и установите 'ObservationDimension'
опция к 4. Чтобы проверять на совместимость генерации кода, установите CheckCodegenCompatibility
опция к true
. checkLayer
функция не проверяет на функции, которые не совместимы с генерацией кода. Чтобы проверять, что пользовательское определение слоя поддерживается для генерации кода, сначала используйте приложение Готовности Генерации кода. Для получения дополнительной информации смотрите Проверку кода при помощи Инструмента Готовности Генерации кода (MATLAB Coder).
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: 23 Passed, 0 Failed, 0 Incomplete, 5 Skipped. Time elapsed: 0.54964 seconds.
Функция не обнаруживает проблем со слоем.
layer
— Слой, чтобы проверятьnnet.layer.Layer
возразите | nnet.layer.ClassificationLayer
возразите | nnet.layer.RegressionLayer
объектСлой, чтобы проверять в виде nnet.layer.Layer
, nnet.layer.ClassificationLayer
, nnet.layer.RegressionLayer
, или FunctionLayer
объект.
Для примера, показывающего, как задать ваш собственный слой, смотрите, Задают Пользовательский Слой Глубокого обучения с Настраиваемыми параметрами. Чтобы создать слой, который применяет заданную функцию, используйте functionLayer
.
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 допустимый входной размер для второго входа.
Для получения дополнительной информации смотрите Входные Размеры Слоя.
Для больших входных размеров проверки градиента занимают больше времени, чтобы запуститься. Чтобы ускорить тесты, задайте меньший допустимый входной размер.
Пример: [5 5 10]
Пример: {[24 24 20],[24 24 10]}
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| cell
Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN
, где Name
имя аргумента и Value
соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.
ObservationDimension=4
устанавливает размерность наблюдения на 4ObservationDimension
— Размерность наблюденияРазмерность наблюдения в виде положительного целого числа.
Размерность наблюдения задает, какая размерность входных данных слоя соответствует наблюдениям. Например, если слой ожидает, что входные данные имеют размер h-by-w-by-c-by-N, где h, w и c соответствуют высоте, ширине и количеству каналов входных данных, соответственно, и N соответствует количеству наблюдений, затем размерность наблюдения равняется 4. Для получения дополнительной информации смотрите Входные Размеры Слоя.
Если вы задаете размерность наблюдения, то checkLayer
функционируйте проверяет, что функции слоя являются сгенерированными данными допустимого использования с мини-пакетами размера 1 и 2. Если вы не задаете размерность наблюдения, то функция пропускает соответствующие тесты.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
CheckCodegenCompatibility
— Отметьте, чтобы включить тесты генерации кода
(FALSE) (значение по умолчанию) | 1
TRUEОтметьте, чтобы включить тесты генерации кода в виде 0
(FALSE) или 1
TRUE.
Если CheckCodegenCompatibility
1
(TRUE), затем необходимо задать ObservationDimension
опция.
Генерация кода поддерживает промежуточные слои с 2D изображением или входом функции только. Генерация кода не делает уровней поддержки со свойствами состояний (свойства с атрибутом State
).
checkLayer
функция не проверяет, что эти функции, используемые слоем, совместимы с генерацией кода. Чтобы проверять эти функции, используемые пользовательским слоем также, поддерживают генерацию кода, сначала используют приложение Code Generation Readiness. Для получения дополнительной информации смотрите Проверку кода при помощи Инструмента Готовности Генерации кода (MATLAB Coder).
Для примера, показывающего, как задать пользовательский слой, который поддерживает генерацию кода, смотрите, Задают Пользовательский Слой Глубокого обучения для Генерации кода.
Типы данных: логический
Для каждого слоя допустимый входной размер и размерность наблюдения зависят от выхода предыдущего слоя.
Для промежуточных слоев (слои типа nnet.layer.Layer
), допустимый входной размер и размерность наблюдения зависят от типа ввода данных к слою.
Для слоев с одним входом задайте validInputSize
как вектор из целых чисел, соответствующих размерностям входных данных.
Для слоев с несколькими входными параметрами задайте validInputSize
как массив ячеек векторов, где каждый вектор соответствует входу слоя и элементам векторов, соответствует размерностям соответствующих входных данных.
Для больших входных размеров проверки градиента занимают больше времени, чтобы запуститься. Чтобы ускорить тесты, задайте меньший допустимый входной размер.
Вход слоя | Введите размер | Размерность наблюдения |
---|---|---|
Характеристические векторы | c-by-N, где c соответствует количеству каналов и N, является количеством наблюдений. | 2 |
2D изображения | h-by-w-by-c-by-N, где h, w и c соответствуют высоте, ширине, и количеству каналов изображений, соответственно, и N, является количеством наблюдений. | 4 |
3-D изображения | h-by-w-by-d-by-c-by-N, где h, w, d и c соответствуют высоте, ширине, глубине, и количеству каналов 3-D изображений, соответственно, и N, является количеством наблюдений. | 5 |
Векторные последовательности | c-by-N-by-S, где c является количеством функций последовательностей, N, является количеством наблюдений, и S является длиной последовательности. | 2 |
2D последовательности изображений | 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 |
Например, для 2D проблем классификации изображений, устанавливает validInputSize
к [h w c]
, где h
W
, и c
соответствуйте высоте, ширине, и количеству каналов изображений, соответственно, и ObservationDimension
к 4
.
Генерация кода поддерживает промежуточные слои с 2D входом изображений только.
Для выходных слоев (слои типа nnet.layer.ClassificationLayer
или nnet.layer.RegressionLayer
), установите validInputSize
к типичному размеру одного входного наблюдения Y
к слою.
Для проблем классификации, допустимого входного размера и размерности наблюдения Y
зависьте от типа проблемы:
Задача классификации | Введите размер | Размерность наблюдения |
---|---|---|
2D классификация изображений | 1 1 K 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 |
Например, для 2D проблем классификации изображений, устанавливает validInputSize
к [1 1 K]
, где K
количество классов и ObservationDimension
к 4
.
Для проблем регрессии, размерностей Y
также зависьте от типа проблемы. Следующая таблица описывает размерности Y
.
Задача регрессии | Введите размер | Размерность наблюдения |
---|---|---|
2D регрессия изображений | 1 1 R N, где R является количеством ответов и N, количество наблюдений. | 4 |
2D регрессия От изображения к изображению | 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 |
Регрессия Sequence-one | R-by-N, где R является количеством ответов и N, является количеством наблюдений. | 2 |
Регрессия от последовательности к последовательности | R-by-N-by-S, где R является количеством ответов, N, является количеством наблюдений, и S является длиной последовательности. | 2 |
Например, для 2D проблем регрессии изображений, устанавливает 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 не задан, производные могут быть вычислены с помощью автоматического дифференцирования. |
predictReturnsValidStates | Для слоев со свойствами состояний, predict функция возвращает допустимые состояния. |
forwardReturnsValidStates | Для слоев со свойствами состояний, forward функция, если задано, возвращает допустимые состояния. |
resetStateDoesNotError | Для слоев со свойствами состояний, resetState функция, если задано, не делает ошибки и сбрасывает состояния к допустимым состояниям. |
codegenPragmaDefinedInClassDef | Прагма "%#codegen" поскольку генерация кода задана в файле класса. |
checkForSupportedLayerPropertiesForCodegen | Свойства слоя поддерживают генерацию кода. |
predictIsValidForCodeGeneration | predict допустимо для генерации кода. |
doesNotHaveStateProperties | Для генерации кода слой не имеет свойств состояний. |
supportedFunctionLayer | Для генерации кода слоем не является FunctionLayer объект. |
Некоторый тестовый прогон многократно. Эти тесты также проверяют различные типы данных и на совместимость с GPU:
predictIsConsistentInType
forwardIsConsistentInType
backwardIsConsistentInType
Чтобы выполнить функции слоя на графическом процессоре, функции должны поддержать вводы и выводы типа gpuArray
с базовым типом данных single
.
checkLayer
функционируйте использует эти тесты, чтобы проверять валидность пользовательских выходных слоев (слои типа nnet.layer.ClassificationLayer
или nnet.layer.RegressionLayer
).
Тест | Описание |
---|---|
forwardLossDoesNotError | forwardLoss не делает ошибки. |
backwardLossDoesNotError | backwardLoss не делает ошибки. |
forwardLossIsScalar | Выход forwardLoss isscalar. |
backwardLossIsConsistentInSize | Когда backwardLoss задан, выход backwardLoss сопоставимо в размере: dLdY одного размера с предсказаниями Y . |
forwardLossIsConsistentInType | Выход |
backwardLossIsConsistentInType | Когда |
gradientsAreNumericallyCorrect | Когда backwardLoss задан, градиенты, вычисленные в backwardLoss численно правильны. |
backwardPropagationDoesNotError | Когда backwardLoss не задан, производные могут быть вычислены с помощью автоматического дифференцирования. |
forwardLossIsConsistentInType
и backwardLossIsConsistentInType
тесты также проверяют на совместимость с GPU. Чтобы выполнить функции слоя на графическом процессоре, функции должны поддержать вводы и выводы типа gpuArray
с базовым типом данных single
.
trainNetwork
| trainingOptions
| analyzeNetwork
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.