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

Если вы создаете пользовательский слой глубокого обучения, то можно использовать checkLayer функционируйте, чтобы проверять, что слой допустим. Функция проверяет, что слои для валидности, совместимости с GPU, правильно задали градиенты и совместимость генерации кода. Чтобы проверять, что слой допустим, запустите следующую команду:

checkLayer(layer,validInputSize,'ObservationDimension',dim)
где layer экземпляр слоя, validInputSize векторный массив или массив ячеек, задающий допустимые входные размеры к слою и dim задает размерность наблюдений во входных данных слоя. Для больших входных размеров проверки градиента занимают больше времени, чтобы запуститься. Чтобы ускорить тесты, задайте меньший допустимый входной размер.

Проверяйте валидность слоя

Проверяйте валидность примера пользовательский слой 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, 12 Skipped.
	 Time elapsed: 0.11901 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, 8 Skipped.
	 Time elapsed: 0.069311 seconds.

В этом случае функция не обнаруживает проблем со слоем.

Список тестов

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.

Сгенерированные данные

Проверять валидность слоя, checkLayer функция генерирует данные в зависимости от типа слоя:

Тип слояОписание сгенерированных данных
Промежуточное звеноЗначения в области значений [-1,1]
Regression выходПредсказания и цели со значениями в области значений [-1,1]
Classification выход

Предсказания со значениями в области значений [0,1].

Если вы задаете 'ObservationDimension' опция, затем цели являются одногорячими закодированными векторами (векторы, содержащие один 1, и 0 в другом месте).

Если вы не задаете 'ObservationDimension' опция, затем цели являются значениями в области значений [0,1].

Чтобы проверять на несколько наблюдений, задайте размерность наблюдения с помощью 'ObservationDimension' пара "имя-значение". Если вы задаете размерность наблюдения, то checkLayer функционируйте проверяет, что функции слоя являются сгенерированными данными допустимого использования с мини-пакетами размера 1 и 2. Если вы не задаете эту пару "имя-значение", то функция пропускает тесты, которые проверяют, что функции слоя допустимы для нескольких наблюдений.

Диагностика

Если тест перестал работать, когда вы используете checkLayer, затем функция обеспечивает тестовую диагностику и диагностику в среде. Тестовая диагностика подсвечивает любые проблемы, найденные со слоем. Диагностика в среде обеспечивает более подробную информацию.

Синтаксисы функций

Тест functionSyntaxesAreCorrect проверки, что функции слоя правильно задали синтаксисы.

Тестовая диагностикаОписаниеВозможное решение
Incorrect number of input arguments for 'predict' in Layer.Синтаксис для predict функция не сопоставима с количеством входных параметров слоя.

Задайте правильное количество аргументов ввода и вывода в predict.

Синтаксис для predict

[Z1,…,Zm] = predict(layer,X1,…,Xn)
где X1,…,Xn n входные параметры слоя и Z1,…,Zm m слой выходные параметры. Значения n и m должен соответствовать NumInputs и NumOutputs свойства слоя.

Совет

Если количество входных параметров к predict может варьироваться, затем использовать varargin вместо X1,…,Xn. В этом случае, varargin массив ячеек входных параметров, где varargin{i} соответствует Xi. Если количество выходных параметров может варьироваться, то используйте varargout вместо Z1,…,Zm. В этом случае, varargout массив ячеек выходных параметров, где varargout{j} соответствует Zj.

Совет

Если пользовательский слой имеет dlnetwork объект для настраиваемого параметра, затем в predict функция пользовательского слоя, используйте predict функция для dlnetwork. Используя dlnetwork объект predict функция гарантирует, что программное обеспечение использует правильные операции слоя для предсказания.

Incorrect number of output arguments for 'predict' in LayerСинтаксис для predict функция не сопоставима с количеством слоя выходные параметры.
Incorrect number of input arguments for 'forward' in LayerСинтаксис для дополнительного forward функция не сопоставима с количеством входных параметров слоя.

Задайте правильное количество аргументов ввода и вывода в forward.

Синтаксис для forward

[Z1,…,Zm,memory] = forward(layer,X1,…,Xn)
где X1,…,Xn n входные параметры слоя, Z1,…,Zm m слой выходные параметры и memory память о слое.

Совет

Если количество входных параметров к forward может варьироваться, затем использовать varargin вместо X1,…,Xn. В этом случае, varargin массив ячеек входных параметров, где varargin{i} соответствует Xi. Если количество выходных параметров может варьироваться, то используйте varargout вместо Z1,…,Zm. В этом случае, varargout массив ячеек выходных параметров, где varargout{j} соответствует Zj для j=1, …, NumOutputs и varargout{NumOutputs+1} соответствует memory.

Совет

Если пользовательский слой имеет dlnetwork объект для настраиваемого параметра, затем в forward функция пользовательского слоя, используйте forward функция dlnetwork объект. Используя dlnetwork объект forward функция гарантирует, что программное обеспечение использует правильные операции слоя для обучения.

Incorrect number of output arguments for 'forward' in LayerСинтаксис для дополнительного forward функция не сопоставима с количеством слоя выходные параметры.
Incorrect number of input arguments for 'backward' in LayerСинтаксис для дополнительного backward функция не сопоставима с количеством вводов и выводов слоя.

Задайте правильное количество аргументов ввода и вывода в backward.

Синтаксис для backward

[dLdX1,…,dLdXn,dLdW1,…,dLdWk] = backward(layer,X1,…,Xn,Z1,…,Zm,dLdZ1,…,dLdZm,memory)
где:

  • X1,…,Xn n входные параметры слоя

  • Z1,…,Zm m выходные параметры слоя передают функции

  • dLdZ1,…,dLdZm градиенты, назад распространенные от следующего слоя

  • memory выход memory forward если forward задан, в противном случае, memory [].

Для выходных параметров, dLdX1,…,dLdXn производные потери относительно входных параметров слоя и dLdW1,…,dLdWk производные потери относительно k настраиваемые параметры. Чтобы уменьшать использование памяти путем предотвращения неиспользуемых переменных, являющихся сохраненным между прямым и обратным проходом, замените соответствующие входные параметры на ~.

Совет

Если количество входных параметров к backward может варьироваться, затем использовать varargin вместо входных параметров после layer. В этом случае, varargin массив ячеек входных параметров, где varargin{i} соответствует Xi для i=1, …, NumInputs, varargin{NumInputs+j} и varargin{NumInputs+NumOutputs+j} соответствуйте Zj и dLdZj, соответственно, для j=1, …, NumOutputs, и varargin{end} соответствует memory.

Если количество выходных параметров может варьироваться, то используйте varargout вместо выходных аргументов. В этом случае, varargout массив ячеек выходных параметров, где varargout{i} соответствует dLdXi для i=1, …, NumInputs и varargout{NumInputs+t} соответствует dLdWt для t=1, …, k, где k количество настраиваемых параметров.

Совет

Если слой вперед функции поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию, и вы не должны задавать backward функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Incorrect number of output arguments for 'backward' in LayerСинтаксис для дополнительного backward функция не сопоставима с количеством слоя выходные параметры.

Для слоев с несколькими вводами или выводами необходимо установить значения свойств слоя NumInputs (или альтернативно, InputNames) и NumOutputs (или альтернативно, OutputNames) в функции конструктора слоя, соответственно.

Несколько наблюдений

checkLayer функционируйте проверяет, что функции слоя допустимы для сингла и нескольких наблюдений. Чтобы проверять на несколько наблюдений, задайте размерность наблюдения с помощью 'ObservationDimension' пара "имя-значение". Если вы задаете размерность наблюдения, то checkLayer функционируйте проверяет, что функции слоя являются сгенерированными данными допустимого использования с мини-пакетами размера 1 и 2. Если вы не задаете эту пару "имя-значение", то функция пропускает тесты, которые проверяют, что функции слоя допустимы для нескольких наблюдений.

Тестовая диагностикаОписаниеВозможное решение
Skipping multi-observation tests. To enable checks with multiple observations, specify the 'ObservationDimension' parameter in checkLayer.Если вы не задаете 'ObservationDimension' параметр в checkLayer, затем функция пропускает тесты, которые проверяют данные с несколькими наблюдениями.

Используйте команду checkLayer(layer,validInputSize,'ObservationDimension',dim), где layer экземпляр пользовательского слоя, validInputSize вектор, задающий допустимый входной размер к слою и dim задает размерность наблюдений во входе слоя.

Для получения дополнительной информации смотрите Входные Размеры Слоя.

Функции не делают ошибки

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

Промежуточные Слои.  Тесты predictDoesNotError, forwardDoesNotError, и backwardDoesNotError проверяйте, что функции слоя не делают ошибки когда переданные входные параметры допустимого размера. Если вы задаете размерность наблюдения, то функция проверяет слой и на одно наблюдение и на несколько наблюдений.

Тестовая диагностикаОписаниеВозможное решение
The function 'predict' threw an error:predict функциональные ошибки, когда переданные данные размера validInputSize.

Исправьте ошибку, описанную в Framework Diagnostic раздел.

Совет

Если слой вперед функции поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию, и вы не должны задавать backward функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

The function 'forward' threw an error:Дополнительный forward функциональные ошибки, когда переданные данные размера validInputSize.
The function 'backward' threw an error:Дополнительный backward функциональные ошибки, когда передано выход predict.

Выходной слой.  Тесты forwardLossDoesNotError и backwardLossDoesNotError проверяйте, что функции слоя не делают ошибки когда переданные входные параметры допустимого размера. Если вы задаете размерность наблюдения, то функция проверяет слой и на одно наблюдение и на несколько наблюдений.

Тестовая диагностикаОписаниеВозможное решение
The function 'forwardLoss' threw an error:forwardLoss функциональные ошибки, когда переданные данные размера validInputSize.

Исправьте ошибку, описанную в Framework Diagnostic раздел.

Совет

Если forwardLoss функционируйте поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию потерь, и вы не должны задавать backwardLoss функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

The function 'backwardLoss' threw an error:Дополнительный backwardLoss функциональные ошибки, когда переданные данные размера validInputSize.

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

Эти тесты проверяют, что функция слоя выходные параметры сопоставима в размере.

Промежуточные Слои.  Тест backwardIsConsistentInSize проверки, что backward функционируйте выходные производные правильного размера.

Синтаксис для backward

[dLdX1,…,dLdXn,dLdW1,…,dLdWk] = backward(layer,X1,…,Xn,Z1,…,Zm,dLdZ1,…,dLdZm,memory)
где:

  • X1,…,Xn n входные параметры слоя

  • Z1,…,Zm m выходные параметры слоя передают функции

  • dLdZ1,…,dLdZm градиенты, назад распространенные от следующего слоя

  • memory выход memory forward если forward задан, в противном случае, memory [].

Для выходных параметров, dLdX1,…,dLdXn производные потери относительно входных параметров слоя и dLdW1,…,dLdWk производные потери относительно k настраиваемые параметры. Чтобы уменьшать использование памяти путем предотвращения неиспользуемых переменных, являющихся сохраненным между прямым и обратным проходом, замените соответствующие входные параметры на ~.

Совет

Если количество входных параметров к backward может варьироваться, затем использовать varargin вместо входных параметров после layer. В этом случае, varargin массив ячеек входных параметров, где varargin{i} соответствует Xi для i=1, …, NumInputs, varargin{NumInputs+j} и varargin{NumInputs+NumOutputs+j} соответствуйте Zj и dLdZj, соответственно, для j=1, …, NumOutputs, и varargin{end} соответствует memory.

Если количество выходных параметров может варьироваться, то используйте varargout вместо выходных аргументов. В этом случае, varargout массив ячеек выходных параметров, где varargout{i} соответствует dLdXi для i=1, …, NumInputs и varargout{NumInputs+t} соответствует dLdWt для t=1, …, k, где k количество настраиваемых параметров.

Производные dLdX1, …, dLdXn должен быть одного размера с соответствующими входными параметрами слоя и dLdW1,…,dLdWk должен быть одного размера с соответствующими настраиваемыми параметрами. Размеры должны быть сопоставимы для входных данных с синглом и несколькими наблюдениями.

Тестовая диагностикаОписаниеВозможное решение
Incorrect size of 'dLdX' for 'backward'.Производные потери относительно входных параметров слоя должны быть одного размера с соответствующим входом слоя.

Возвратите производные dLdX1,…,dLdXn с тем же размером, когда соответствующий слой вводит X1,…,Xn.

Incorrect size of the derivative of the loss with respect to the input 'in1' for 'backward'
The size of 'Z' returned from 'forward' must be the same as for 'predict'.Выходные параметры predict должен быть одного размера с соответствующими выходными параметрами forward.

Возвратите выходные параметры Z1,…,Zm из predict с тем же размером как соответствующие выходные параметры Z1,…,Zm из forward.

Incorrect size of the derivative of the loss with respect to 'W' for 'backward'.Производные потери относительно настраиваемых параметров должны быть одного размера с соответствующими настраиваемыми параметрами.

Возвратите производные dLdW1,…,dLdWk с тем же размером как соответствующие настраиваемые параметры W1,…,Wk.

Совет

Если слой вперед функции поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию, и вы не должны задавать backward функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Выходной слой.  Тест forwardLossIsScalar проверки, что выход forwardLoss функция является скаляром. Когда backwardLoss функция задана, тест backwardLossIsConsistentInSize проверки, что выходные параметры forwardLoss и backwardLoss имеют правильный размер.

Синтаксис для forwardLoss loss = forwardLoss(layer, Y, T). Вход Y соответствует предсказаниям, сделанным сетью. Этими предсказаниями является выход предыдущего слоя. Вход T соответствует учебным целям. Выход loss потеря между Y и T согласно заданной функции потерь. Выход loss должен быть скаляр.

Если forwardLoss функционируйте поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию потерь, и вы не должны задавать backwardLoss функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Синтаксис для backwardLoss dLdY = backwardLoss(layer, Y, T). Вход Y содержит предсказания, сделанные сетью и T содержит учебные цели. Выход dLdY производная потери относительно предсказаний Y. Выход dLdY должен быть одного размера с входом Y слоя.

Тестовая диагностикаОписаниеВозможное решение
Incorrect size of 'loss' for 'forwardLoss'.Выход loss из forwardLoss должен быть скаляр.

Возвратите выход loss как скаляр. Например, если у вас есть несколько значений потери, затем можно использовать mean или sum.

Incorrect size of the derivative of loss 'dLdY' for 'backwardLoss'.Когда backwardLoss задан, производные потери относительно входа слоя должны быть одного размера с входом слоя.

Возвратите производный dLdY с тем же размером как вход Y слоя.

Если forwardLoss функционируйте поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию потерь, и вы не должны задавать backwardLoss функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Сопоставимые типы данных и совместимость с GPU

Эти тесты проверяют, что функция слоя, выходные параметры сопоставимы в типе и что функциями слоя является совместимый графический процессор.

Если слой вперед функции полностью поддерживает dlarray объекты, затем слоем является совместимый графический процессор. В противном случае, чтобы быть совместимым графическим процессором, функции слоя должны поддержать входные параметры и возвратить выходные параметры типа gpuArray (Parallel Computing Toolbox).

Много поддержки встроенных функций MATLAB® gpuArray (Parallel Computing Toolbox) и dlarray входные параметры. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray. Для списка функций, которые выполняются на графическом процессоре, смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox). Чтобы использовать графический процессор для глубокого обучения, у вас должен также быть CUDA®, включенный NVIDIA®, графический процессор с вычисляет возможность 3.0 или выше. Для получения дополнительной информации о работе с графическими процессорами в MATLAB смотрите, что графический процессор Вычисляет в MATLAB (Parallel Computing Toolbox).

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

Совет

Если вы предварительно выделяете массивы с помощью функций как zeros, затем необходимо гарантировать, что типы данных этих массивов сопоставимы с входными параметрами функции слоя. Чтобы создать массив нулей совпадающего типа данных другого массива, используйте 'like' опция zeros. Например, чтобы инициализировать массив нулей размера sz с совпадающим типом данных как массив X, используйте Z = zeros(sz,'like',X).

Тестовая диагностикаОписаниеВозможное решение
Incorrect type of 'Z' for 'predict'.Типы выходных параметров Z1,…,Zm из predict функция должна быть сопоставима с входными параметрами X1,…,Xn.

Возвратите выходные параметры Z1,…,Zm с тем же типом как входные параметры X1,…,Xn.

Incorrect type of output 'out1' for 'predict'.
Incorrect type of 'Z' for 'forward'.Типы выходных параметров Z1,…,Zm из дополнительного forward функция должна быть сопоставима с входными параметрами X1,…,Xn.
Incorrect type of output 'out1' for 'forward'.
Incorrect type of 'dLdX' for 'backward'.Типы производных dLdX1,…,dLdXn из дополнительного backward функция должна быть сопоставима с входными параметрами X1,…,Xn.

Возвратите производные dLdX1,…,dLdXn с тем же типом как входные параметры X1,…,Xn.

Incorrect type of the derivative of the loss with respect to the input 'in1' for 'backward'.
Incorrect type of the derivative of loss with respect to 'W' for 'backward'.Тип производной потери настраиваемых параметров должен быть сопоставим с соответствующими настраиваемыми параметрами.

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

Совет

Если слой вперед функции поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию, и вы не должны задавать backward функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Выходной слой.  Тесты forwardLossIsConsistentInType и backwardLossIsConsistentInType проверяйте что выходные переменные функций слоя правильного типа данных. Тесты проверяют, что слои возвращают сопоставимые типы данных когда данный входные параметры типов данных single'double', и gpuArray с базовыми типами single или double.

Тестовая диагностикаОписаниеВозможное решение
Incorrect type of 'loss' for 'forwardLoss'.Тип выхода loss из forwardLoss функция должна быть сопоставима с входом Y.

Возвратите loss с тем же типом как вход Y.

Incorrect type of the derivative of loss 'dLdY' for 'backwardLoss'.Тип выхода dLdY из дополнительного backwardLoss функция должна быть сопоставима с входом Y.

Возвратите dLdY с тем же типом как вход Y.

Совет

Если forwardLoss функционируйте поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию потерь, и вы не должны задавать backwardLoss функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Правильные градиенты

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

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

Тестовая диагностикаОписаниеВозможное решение
Expected a dlarray with no dimension labels, but instead found labels.Когда дополнительный backward функция не задана, слой, прямые функции должны вывести dlarray объекты без меток размерности.Убедитесь, что любой dlarray объекты, созданные в слое прямые функции, не содержат метки размерности.
Unable to backward propagate through the layer. Check that the 'forward' function fully supports automatic differentiation. Alternatively, implement the 'backward' function manually.

Один или несколько из следующего:

  • Когда дополнительный backward функция не задана, слой, прямые функции не поддерживают dlarray объекты.

  • Когда дополнительный backward функция не задана, трассировка входа dlarray объекты в прямых функциях были повреждены. Например, при помощи extractdata функция.

Проверяйте, что прямые функции поддерживают dlarray объекты. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Проверяйте что производные входа dlarray объекты могут быть прослежены. Узнать больше о производной трассировке dlarray объекты, смотрите Производную Трассировку.

В качестве альтернативы задайте пользовательскую обратную функцию путем создания функции с именем backward. Чтобы узнать больше, смотрите Обратную Функцию.

Unable to backward propagate through the layer. Check that the 'predict' function fully supports automatic differentiation. Alternatively, implement the 'backward' function manually.
The derivative 'dLdX' for 'backward' is inconsistent with the numerical gradient.

Один или несколько из следующего:

  • Когда дополнительный backward функция задана, производная неправильно вычисляется

  • Прямые функции недифференцируемы в некоторых точках ввода

  • Ошибочный допуск слишком мал

Если слой вперед функции поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию, и можно не использовать обратную функцию. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Проверяйте что производные в backward правильно вычисляются.

Если производные правильно вычисляются, то в Framework Diagnostic разделите, вручную проверяйте абсолютную и относительную погрешность между фактическими и ожидаемыми значениями производной.

Если абсолютные и относительные погрешности в приемлемом поле допуска, то можно проигнорировать эту тестовую диагностику.

The derivative of the loss with respect to the input 'in1' for 'backward' is inconsistent with the numerical gradient.
The derivative of loss with respect to 'W' for 'backward' is inconsistent with the numerical gradient.

Совет

Если слой вперед функции поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию, и вы не должны задавать backward функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

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

Тестовая диагностикаОписаниеВозможное решение
Expected a dlarray with no dimension labels, but instead found labelsКогда дополнительный backwardLoss функция не задана, forwardLoss функция должна вывести dlarray объекты без меток размерности.Убедитесь, что любой dlarray объекты создаются в forwardLoss функция не содержит метки размерности.
Unable to backward propagate through the layer. Check that the 'forwardLoss' function fully supports automatic differentiation. Alternatively, implement the 'backwardLoss' function manually

Один или несколько из следующего:

  • Когда дополнительный backwardLoss функция не задана, слой forwardLoss функция не поддерживает dlarray объекты.

  • Когда дополнительный backwardLoss функция не задана, трассировка входа dlarray объекты в forwardLoss функция была повреждена. Например, при помощи extractdata функция.

Проверяйте что forwardLoss функционируйте поддерживает dlarray объекты. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Проверяйте что производные входа dlarray объекты могут быть прослежены. Узнать больше о производной трассировке dlarray объекты, смотрите Производную Трассировку.

В качестве альтернативы задайте пользовательскую обратную функцию потерь путем создания функции с именем backwardLoss. Чтобы узнать больше, смотрите Функции потерь.

The derivative 'dLdY' for 'backwardLoss' is inconsistent with the numerical gradient.

Один или несколько из следующего:

  • Производная относительно предсказаний Y неправильно вычисляется

  • Функция недифференцируема в некоторых точках ввода

  • Ошибочный допуск слишком мал

Проверяйте что производные в backwardLoss правильно вычисляются.

Если производные правильно вычисляются, то в Framework Diagnostic разделите, вручную проверяйте абсолютную и относительную погрешность между фактическими и ожидаемыми значениями производной.

Если абсолютные и относительные погрешности в приемлемом поле допуска, то можно проигнорировать эту тестовую диагностику.

Совет

Если forwardLoss функционируйте поддерживает dlarray объекты, затем программное обеспечение автоматически определяет обратную функцию потерь, и вы не должны задавать backwardLoss функция. Для списка функций та поддержка dlarray объекты, см. Список Функций с Поддержкой dlarray.

Совместимость генерации кода

Если вы устанавливаете 'CheckCodegenCompatibility' опция к true, затем checkLayer функционируйте проверяет слой на совместимость генерации кода.

Тест codegenPragmaDefinedInClassDef проверки, что определение слоя содержит прагму генерации кода %#codegen. Тест checkForSupportedLayerPropertiesForCodegen проверки, что свойства слоя поддерживают генерацию кода. Тест predictIsValidForCodegeneration проверки, что выходные параметры predict сопоставимы в размерности и обрабатывают размер в пакетном режиме.

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

Тестовая диагностикаОписаниеВозможное решение
Specify '%#codegen' in the class definition of custom layerОпределение слоя не включает прагму "%#codegen" для генерации кода.

Добавьте %#codegen директива (или прагма) к вашему определению слоя, чтобы указать, что вы намереваетесь сгенерировать код для этого слоя. Добавление этой директивы дает Анализатору кода MATLAB команду помогать вам диагностировать и зафиксировать нарушения, которые привели бы к ошибкам во время генерации кода.

Nonscalar layer properties must be type single or double or character array for custom layerСлой содержит нескалярные свойства типа кроме одного, дважды, или символьный массив.

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

Например, преобразуйте категориальный массив в массив целых чисел типа double представление категорий.

Scalar layer properties must be numeric, logical, or string for custom layerСлой содержит скалярные свойства типа кроме числового, логического, или строка.

Преобразуйте скалярные свойства использовать числовое представление или представление логического типа или строка.

Например, преобразуйте категориальный скаляр в целое число типа double представление категории.

For code generation, 'Z' must have the same number of dimensions as the layer input.

Количество размерностей выхода Z из predict не совпадает с количеством размерностей входных параметров слоя.

В predict функционируйте, возвратите выходные параметры с тем же количеством размерностей как входные параметры слоя.

For code generation, 'Z' must have the same batch size as the layer input.

Размер пакетного размера выхода Z из predict не совпадает с размером пакетного размера входных параметров слоя.

В predict функционируйте, возвратите выходные параметры с пакетным размером как входные параметры слоя.

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте