checkLayer

Проверяйте валидность пользовательского слоя

Описание

пример

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.

Функция не обнаруживает проблем со слоем.

Входные параметры

свернуть все

Пользовательский слой в виде nnet.layer.Layer объект, nnet.layer.ClassificationLayer объект или nnet.layer.RegressionLayer объект. Для примера, показывающего, как задать ваш собственный слой, смотрите, Задают Пользовательский Слой Глубокого обучения с Настраиваемыми параметрами.

checkLayer функция не делает уровней поддержки, которые наследовались nnet.layer.Formattable.

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

  • Для слоев с одним входом задайте 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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'ObservationDimension',4 устанавливает размерность наблюдения на 4

Размерность наблюдения в виде разделенной запятой пары, состоящей из 'ObservationDimension' и положительное целое число.

Размерность наблюдения задает, какая размерность входных данных слоя соответствует наблюдениям. Например, если слой ожидает, что входные данные имеют размер 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' и true или false.

Если 'CheckCodegenCompatibility' true, затем необходимо установить 'ObservationDimension' опция.

checkLayer функция не проверяет на функции, которые не совместимы с генерацией кода. Чтобы проверять, что пользовательское определение слоя поддерживается для генерации кода, сначала используйте Code Generation Readiness. Для получения дополнительной информации смотрите Проверку кода при помощи Инструмента Готовности Генерации кода (MATLAB Coder).

Типы данных: логический

Больше о

свернуть все

Входные размеры слоя

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

Промежуточные слои

Для промежуточных слоев (слои типа nnet.layer.Layer), допустимый входной размер и размерность наблюдения зависят от типа ввода данных к слою.

  • Для слоев с одним входом задайте validInputSize как вектор из целых чисел, соответствующих размерностям входных данных.

  • Для слоев с несколькими входными параметрами задайте validInputSize как массив ячеек векторов, где каждый вектор соответствует входу слоя и элементам векторов, соответствует размерностям соответствующих входных данных.

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

Вход слояВведите размерРазмерность наблюдения
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], где hW, и 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-oneR-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Синтаксисы функций слоя правильно заданы.
predictDoesNotErrorpredict не делает ошибки.
forwardDoesNotError

Когда задано, forward не делает ошибки.

forwardPredictAreConsistentInSize

Когда forward задан, forward и predict выходные значения, одного размера.

backwardDoesNotErrorКогда задано, backward не делает ошибки.
backwardIsConsistentInSize

Когда backward задан, выходные параметры backward сопоставимы в размере:

  • Производные относительно каждого входа одного размера с соответствующим входом.

  • Производные относительно каждого настраиваемого параметра одного размера с соответствующим настраиваемым параметром.

predictIsConsistentInType

Выходные параметры predict сопоставимы в типе с входными параметрами.

forwardIsConsistentInType

Когда forward задан, выходные параметры forward сопоставимы в типе с входными параметрами.

backwardIsConsistentInType

Когда backward задан, выходные параметры backward сопоставимы в типе с входными параметрами.

gradientsAreNumericallyCorrectКогда backward задан, градиенты, вычисленные в backward сопоставимы с числовыми градиентами.
backwardPropagationDoesNotErrorКогда backward не задан, производные могут быть вычислены с помощью автоматического дифференцирования.
codegenPragmaDefinedInClassDefПрагма "%#codegen" поскольку генерация кода задана в файле класса.
checkForSupportedLayerPropertiesForCodegenСвойства слоя поддерживают генерацию кода.
predictIsValidForCodeGenerationpredict допустимо для генерации кода.

Тесты predictIsConsistentInType, forwardIsConsistentInType, и backwardIsConsistentInType также проверяйте на совместимость с GPU. Чтобы выполнить функции слоя на графическом процессоре, функции должны поддержать вводы и выводы типа gpuArray с базовым типом данных single.

Выходной слой

checkLayer функционируйте использует эти тесты, чтобы проверять валидность пользовательских выходных слоев (слои типа nnet.layer.ClassificationLayer или nnet.layer.RegressionLayer).

ТестОписание
forwardLossDoesNotErrorforwardLoss не делает ошибки.
backwardLossDoesNotErrorbackwardLoss не делает ошибки.
forwardLossIsScalarВыход forwardLoss isscalar.
backwardLossIsConsistentInSizeКогда backwardLoss задан, выход backwardLoss сопоставимо в размере: dLdY одного размера с предсказаниями Y.
forwardLossIsConsistentInType

Выход forwardLoss сопоставимо в типе: loss тот же тип как предсказания Y.

backwardLossIsConsistentInType

Когда backwardLoss задан, выход backwardLoss сопоставимо в типе: dLdY должен быть тот же тип как предсказания Y.

gradientsAreNumericallyCorrectКогда backwardLoss задан, градиенты, вычисленные в backwardLoss численно правильны.
backwardPropagationDoesNotErrorКогда backwardLoss не задан, производные могут быть вычислены с помощью автоматического дифференцирования.

forwardLossIsConsistentInType и backwardLossIsConsistentInType тесты также проверяют на совместимость с GPU. Чтобы выполнить функции слоя на графическом процессоре, функции должны поддержать вводы и выводы типа gpuArray с базовым типом данных single.

Введенный в R2018a