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

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

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 in checkLayer.
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.
 
Running nnet.checklayer.TestLayerWithoutBackward
.......... ...
Done nnet.checklayer.TestLayerWithoutBackward
__________

Test Summary:
	 13 Passed, 0 Failed, 0 Incomplete, 4 Skipped.
	 Time elapsed: 0.28215 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)
Running nnet.checklayer.TestLayerWithoutBackward
.......... .......
Done nnet.checklayer.TestLayerWithoutBackward
__________

Test Summary:
	 17 Passed, 0 Failed, 0 Incomplete, 0 Skipped.
	 Time elapsed: 0.15864 seconds.

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

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

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

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

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

ТестОписание
functionSyntaxesAreCorrectСинтаксисы функций уровня правильно заданы.
predictDoesNotErrorpredict не делает ошибки.
forwardDoesNotError

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

forwardPredictAreConsistentInSize

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

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

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

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

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

predictIsConsistentInType

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

forwardIsConsistentInType

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

backwardIsConsistentInType

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

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

Тесты predictIsConsistentInType, forwardIsConsistentInType, и backwardIsConsistentInType также проверяйте на совместимость графического процессора. Чтобы выполнить функции уровня на графическом процессоре, функции должны поддержать вводы и выводы типа 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 тесты также проверяют на совместимость графического процессора. Чтобы выполнить функции уровня на графическом процессоре, функции должны поддержать вводы и выводы типа 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.

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.

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 выходные параметры forward, dLdZ1,…,dLdZm градиенты, назад распространенные от следующего слоя и memory выход memory forward. Для выходных параметров, dLdX1,…,dLdXn производные потери относительно входных параметров слоя и dLdW1,…,dLdWk производные потери относительно k learnable параметры. Чтобы уменьшать использование памяти путем предотвращения неиспользуемых переменных, являющихся сохраненным между прямым и обратным проходом, замените соответствующие входные параметры на ~.

Совет

Если количество входных параметров к 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 количество learnable параметров.

Совет

Если слой вперед функции поддерживает 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 выходные параметры forward, dLdZ1,…,dLdZm градиенты, назад распространенные от следующего слоя и memory выход memory forward. Для выходных параметров, dLdX1,…,dLdXn производные потери относительно входных параметров слоя и dLdW1,…,dLdWk производные потери относительно k learnable параметры. Чтобы уменьшать использование памяти путем предотвращения неиспользуемых переменных, являющихся сохраненным между прямым и обратным проходом, замените соответствующие входные параметры на ~.

Совет

Если количество входных параметров к 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 количество learnable параметров.

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

Тестовая диагностикаОписаниеВозможное решение
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'.Производные потери относительно learnable параметров должны быть одного размера с соответствующими learnable параметрами.

Возвратите производные dLdW1,…,dLdWk с тем же размером как соответствующие learnable параметры 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.

Сопоставимые типы данных и совместимость графического процессора

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

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

Много встроенных функций MATLAB® поддерживают gpuArray и 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'.Тип производной потери learnable параметров должен быть сопоставим с соответствующими learnable параметрами.

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

Совет

Если слой вперед функции поддерживает 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.

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

|

Похожие темы