Если вы создаете пользовательский слой глубокого обучения, то можно использовать checkLayer
функционируйте, чтобы проверять, что слой допустим. Функция проверяет, что слои для валидности, совместимости с GPU, правильно задали градиенты и совместимость генерации кода. Чтобы проверять, что слой допустим, запустите следующую команду:
checkLayer(layer,validInputSize)
layer
экземпляр слоя, validInputSize
векторный массив или массив ячеек, задающий допустимые входные размеры к слою. Чтобы свериться с несколькими наблюдениями, используйте ObservationDimension
опция. Чтобы проверять на совместимость генерации кода, установите CheckCodegenCompatibility
опция к 1
TRUE. Для больших входных размеров проверки градиента занимают больше времени, чтобы запуститься. Чтобы ускорить тесты, задайте меньший допустимый входной размер.Проверяйте валидность примера пользовательский слой 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.
В этом случае функция не обнаруживает проблем со слоем.
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
.
Проверять валидность слоя, checkLayer
функция генерирует данные в зависимости от типа слоя:
Тип слоя | Описание сгенерированных данных |
---|---|
Промежуточное звено | Значения в области значений [-1,1] |
Regression выход | Предсказания и цели со значениями в области значений [-1,1] |
Classification выход | Предсказания со значениями в области значений [0,1]. Если вы задаете Если вы не задаете |
Чтобы проверять на несколько наблюдений, задайте размерность наблюдения с помощью ObservationDimension
опция. Если вы задаете размерность наблюдения, то checkLayer
функционируйте проверяет, что функции слоя являются сгенерированными данными допустимого использования с мини-пакетами размера 1 и 2. Если вы не задаете эту пару "имя-значение", то функция пропускает тесты, которые проверяют, что функции слоя допустимы для нескольких наблюдений.
Если тест перестал работать, когда вы используете checkLayer
, затем функция обеспечивает тестовую диагностику и диагностику в среде. Тестовая диагностика подсвечивает любые проблемы, найденные со слоем. Диагностика в среде обеспечивает более подробную информацию.
Тест functionSyntaxesAreCorrect
проверки, что функции слоя правильно задали синтаксисы.
Тестовая диагностика | Описание | Возможное решение |
---|---|---|
Incorrect number of input arguments for 'predict' in Layer . | Синтаксис для predict функция не сопоставима с количеством входных параметров слоя. | Задайте правильное количество аргументов ввода и вывода в
Можно настроить синтаксисы для слоев с несколькими входными параметрами, несколькими выходными параметрами или несколькими параметрами состояния:
Совет Если количество входных параметров к слою может варьироваться, то используйте Если количество выходных параметров может варьироваться, то используйте Совет Если пользовательский слой имеет |
Incorrect number of output arguments for 'predict' in Layer | Синтаксис для predict функция не сопоставима с количеством слоя выходные параметры. | |
Incorrect number of input arguments for 'forward' in Layer | Синтаксис для дополнительного forward функция не сопоставима с количеством входных параметров слоя. | Задайте правильное количество аргументов ввода и вывода в
Можно настроить синтаксисы для слоев с несколькими входными параметрами, несколькими выходными параметрами или несколькими параметрами состояния:
Совет Если количество входных параметров к слою может варьироваться, то используйте Если количество выходных параметров может варьироваться, то используйте Совет Если пользовательский слой имеет |
Incorrect number of output arguments for 'forward' in Layer | Синтаксис для дополнительного forward функция не сопоставима с количеством слоя выходные параметры. | |
Incorrect number of input arguments for 'backward' in Layer | Синтаксис для дополнительного backward функция не сопоставима с количеством вводов и выводов слоя. | Задайте правильное количество аргументов ввода и вывода в
Можно настроить синтаксисы для слоев с несколькими входными параметрами, несколькими выходными параметрами, несколькими настраиваемыми параметрами или несколькими параметрами состояния:
Чтобы уменьшать использование памяти путем предотвращения неиспользуемых переменных, являющихся сохраненным между прямым и обратным проходом, замените соответствующие входные параметры на Совет Если количество входных параметров к Если количество выходных параметров может варьироваться, то используйте Совет Если слой вперед функции поддерживает |
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 , затем функция пропускает тесты, которые проверяют данные с несколькими наблюдениями. | Используйте команду Для получения дополнительной информации смотрите Входные Размеры Слоя. |
Эти тесты проверяют, что слои не делают ошибки когда переданные входные данные допустимого размера.
Промежуточные Слои. Тесты predictDoesNotError
, forwardDoesNotError
, и backwardDoesNotError
проверяйте, что функции слоя не делают ошибки когда переданные входные параметры допустимого размера. Если вы задаете размерность наблюдения, то функция проверяет слой и на одно наблюдение и на несколько наблюдений.
Тестовая диагностика | Описание | Возможное решение |
---|---|---|
The function 'predict' threw an error: | predict функциональные ошибки, когда переданные данные размера validInputSize . | Исправьте ошибку, описанную в Совет Если слой вперед функции поддерживает |
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 . | Исправьте ошибку, описанную в Совет Если |
The function 'backwardLoss' threw an error: | Дополнительный backwardLoss функциональные ошибки, когда переданные данные размера validInputSize . |
Эти тесты проверяют, что функция слоя выходные параметры сопоставима в размере.
Промежуточные Слои. Тест backwardIsConsistentInSize
проверки, что backward
функционируйте выходные производные правильного размера.
backward
синтаксис функций зависит от типа слоя.
dLdX = backward(layer,X,Z,dLdZ,memory)
возвращает производные dLdX
из потери относительно входа слоя, где layer
имеет один вход и один выход. Z
соответствует прямому функциональному выходу и dLdZ
соответствует производной потери относительно Z
. Входной параметр функции memory
соответствует выходу memory прямой функции.
[dLdX,dLdW] = backward(layer,X,Z,dLdZ,memory)
также возвращает производный dLdW
из потери относительно настраиваемого параметра, где layer
имеет один настраиваемый параметр.
[dLdX,dLdSin] = backward(layer,X,Z,dLdZ,dLdSout,memory)
также возвращает производный dLdSin
из потери относительно входа состояния с помощью любого из предыдущих синтаксисов, где layer
имеет один параметр состояния и dLdSout
соответствует производной потери относительно состояния слоя выход.
[dLdX,dLdW,dLdSin] = backward(layer,X,Z,dLdZ,dLdSout,memory)
также возвращает производный dLdW
из потери относительно настраиваемого параметра и возвращает производный dLdSin
из потери относительно входа состояния слоя с помощью любого из предыдущих синтаксисов, где layer
имеет один параметр состояния и один настраиваемый параметр.
Можно настроить синтаксисы для слоев с несколькими входными параметрами, несколькими выходными параметрами, несколькими настраиваемыми параметрами или несколькими параметрами состояния:
Для слоев с несколькими входными параметрами замените X
и dLdX
с X1,...,XN
и dLdX1,...,dLdXN
, соответственно, где N
количество входных параметров.
Для слоев с несколькими выходными параметрами замените Z
и dLdZ
с Z1,...,ZM
и dLdZ1,...,dLdZM
, соответственно, где M
количество выходных параметров.
Для слоев с несколькими настраиваемыми параметрами замените dLdW
с dLdW1,...,dLdWP
, где P
количество настраиваемых параметров.
Для слоев с несколькими параметрами состояния замените dLdSin
и dLdSout
с dLdSin1,...,dLdSinK
и dLdSout1,...,dLdSoutK
, соответственно, где K
количество параметров состояния.
Чтобы уменьшать использование памяти путем предотвращения неиспользуемых переменных, являющихся сохраненным между прямым и обратным проходом, замените соответствующие входные параметры на ~
.
Совет
Если количество входных параметров к backward
может варьироваться, затем использовать varargin
вместо входных параметров после layer
. В этом случае, varargin
массив ячеек входных параметров, где первый N
элементы соответствуют N
входные параметры слоя, следующий M
элементы соответствуют M
слой выходные параметры, следующий M
элементы соответствуют производным потери относительно M
слой выходные параметры, следующий K
элементы соответствуют K
производные потери относительно K
состояния выходные параметры и последний элемент соответствуют memory
.
Если количество выходных параметров может варьироваться, то используйте varargout
вместо выходных аргументов. В этом случае, varargout
массив ячеек выходных параметров, где первый N
элементы соответствуют N
производные потери относительно N
входные параметры слоя, следующий P
элементы соответствуют производным потери относительно P
настраиваемые параметры и следующий K
элементы соответствуют производным потери относительно K
входные параметры состояния.
Производные dLdX1
, …, dLdXn
должен быть одного размера с соответствующими входными параметрами слоя и dLdW1,…,dLdWk
должен быть одного размера с соответствующими настраиваемыми параметрами. Размеры должны быть сопоставимы для входных данных с синглом и несколькими наблюдениями.
Тестовая диагностика | Описание | Возможное решение |
---|---|---|
Incorrect size of 'dLdX' for 'backward' . | Производные потери относительно входных параметров слоя должны быть одного размера с соответствующим входом слоя. | Возвратите производные |
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 . | Возвратите выходные параметры |
Incorrect size of the derivative of the loss with respect to 'W' for 'backward' . | Производные потери относительно настраиваемых параметров должны быть одного размера с соответствующими настраиваемыми параметрами. | Возвратите производные |
Совет
Если слой вперед функции поддерживает 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 должен быть скаляр. | Возвратите выход |
Incorrect size of the derivative of loss 'dLdY' for 'backwardLoss' . | Когда backwardLoss задан, производные потери относительно входа слоя должны быть одного размера с входом слоя. | Возвратите производный Если |
Эти тесты проверяют, что функция слоя, выходные параметры сопоставимы в типе и что функциями слоя является совместимый графический процессор.
Если слой вперед функции полностью поддерживает dlarray
объекты, затем слоем является совместимый графический процессор. В противном случае, чтобы быть совместимым графическим процессором, функции слоя должны поддержать входные параметры и возвратить выходные параметры типа gpuArray
(Parallel Computing Toolbox).
Многие MATLAB® поддержка встроенных функций gpuArray
(Parallel Computing Toolbox) и dlarray
входные параметры. Для списка функций та поддержка dlarray
объекты, см. Список Функций с Поддержкой dlarray. Для списка функций, которые выполняются на графическом процессоре, смотрите функции MATLAB Запуска на графическом процессоре (Parallel Computing Toolbox). Чтобы использовать графический процессор для глубокого обучения, у вас должно также быть поддерживаемое устройство графического процессора. Для получения информации о поддерживаемых устройствах смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox). Для получения дополнительной информации о работе с графическими процессорами в 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 . | Возвратите выходные параметры |
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 . | Возвратите производные |
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 . | Возвратите |
Incorrect type of the derivative of loss 'dLdY' for 'backwardLoss' . | Тип выхода dLdY из дополнительного backwardLoss функция должна быть сопоставима с входом 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 . | Один или несколько из следующего:
| Проверяйте, что прямые функции поддерживают Проверяйте что производные входа В качестве альтернативы задайте пользовательскую обратную функцию путем создания функции с именем |
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 . | Один или несколько из следующего:
| Если слой вперед функции поддерживает Проверяйте что производные в Если производные правильно вычисляются, то в Если абсолютные и относительные погрешности в приемлемом поле допуска, то можно проигнорировать эту тестовую диагностику. |
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 | Один или несколько из следующего:
| Проверяйте что Проверяйте что производные входа В качестве альтернативы задайте пользовательскую обратную функцию потерь путем создания функции с именем |
The derivative 'dLdY' for 'backwardLoss' is inconsistent with the numerical gradient . | Один или несколько из следующего:
| Проверяйте что производные в Если производные правильно вычисляются, то в Если абсолютные и относительные погрешности в приемлемом поле допуска, то можно проигнорировать эту тестовую диагностику. |
Совет
Если forwardLoss
функционируйте поддерживает dlarray
объекты, затем программное обеспечение автоматически определяет обратную функцию потерь, и вы не должны задавать backwardLoss
функция. Для списка функций та поддержка dlarray
объекты, см. Список Функций с Поддержкой dlarray.
Для слоев со свойствами состояний, тест predictReturnsValidStates
проверки, что предсказать функция возвращает допустимые состояния. Когда forward
задан, тест forwardReturnsValidStates
проверки, что прямая функция возвращает допустимые состояния. Тест resetStateDoesNotError
проверки, что resetState
функция возвращает слой с допустимыми свойствами состояний.
Тестовая диагностика | Описание | Возможное решение |
---|---|---|
Error using 'predict' in Layer. 'State' must be real-values numeric array or unformatted dlarray object . | Выходные параметры состояния должны быть числовыми массивами с действительным знаком или восстановили после форматирования dlarray объекты. | Убедитесь, что состояния идентифицированы в Framework Diagnostic числовые массивы с действительным знаком или восстановили после форматирования dlarray объекты. |
Error using 'resetState' in Layer. 'State' must be real-values numeric array or unformatted dlarray object | Свойства состояний возвращенного слоя должны быть числовыми массивами с действительным знаком или восстановили после форматирования dlarray объекты. |
Если вы устанавливаете CheckCodegenCompatibility
опция к 1
(TRUE), затем checkLayer
функционируйте проверяет слой на совместимость генерации кода.
Тест codegenPragmaDefinedInClassDef
проверки, что определение слоя содержит прагму генерации кода %#codegen
. Тест checkForSupportedLayerPropertiesForCodegen
проверки, что свойства слоя поддерживают генерацию кода. Тест predictIsValidForCodegeneration
проверки, что выходные параметры predict
сопоставимы в размерности и обрабатывают размер в пакетном режиме.
Генерация кода поддерживает промежуточные слои с 2D изображением или входом функции только. Генерация кода не делает уровней поддержки со свойствами состояний (свойства с атрибутом State
).
checkLayer
функция не проверяет, что эти функции, используемые слоем, совместимы с генерацией кода. Чтобы проверять эти функции, используемые пользовательским слоем также, поддерживают генерацию кода, сначала используют приложение Code Generation Readiness. Для получения дополнительной информации смотрите Проверку кода при помощи Инструмента Готовности Генерации кода (MATLAB Coder).
Тестовая диагностика | Описание | Возможное решение |
---|---|---|
Specify '%#codegen' in the class definition of custom layer | Определение слоя не включает прагму "%#codegen" для генерации кода. |
Добавьте |
Nonscalar layer properties must be type single or double or character array for custom layer | Слой содержит нескалярные свойства типа кроме одного, дважды, или символьный массив. | Преобразуйте нескалярные свойства использовать представление одного типа, дважды, или символьный массив. Например, преобразуйте категориальный массив в массив целых чисел типа |
Scalar layer properties must be numeric, logical, or string for custom layer | Слой содержит скалярные свойства типа кроме числового, логического, или строка. | Преобразуйте скалярные свойства использовать числовое представление или представление логического типа или строка. Например, преобразуйте категориальный скаляр в целое число типа |
For code generation, 'Z' must have the same number of dimensions as the layer input . | Количество размерностей выхода | В |
For code generation, 'Z' must have the same batch size as the layer input . | Размер пакетного размера выхода | В |