Проверка достоверности пользовательского слоя
checkLayer( проверяет действительность пользовательского слоя, используя сгенерированные данные размеров в layer,validInputSize)validInputSize. Для слоев с одним входом установите validInputSize к типичному размеру входных данных на слой. Для слоев с несколькими входами установите validInputSize к массиву ячеек типичных размеров, где каждый элемент соответствует входу слоя.
checkLayer( задает дополнительные параметры, использующие одну или несколько пар имя-значение.layer,validInputSize,Name,Value)
Проверка допустимости примера пользовательского слоя preluLayer.
Определите пользовательский слой PReLU. Чтобы создать этот слой, сохраните файл preluLayer.m в текущей папке.
Создание экземпляра слоя и проверка его допустимости с помощью checkLayer. Задайте допустимый размер ввода, равный типовому размеру одного входного сигнала наблюдения для слоя. Для одного входа уровень ожидает наблюдения размера h-by-w-by-c, где h, w и c - высота, ширина и количество каналов предыдущего выхода уровня соответственно.
Определить validInputSize как типичный размер входного массива.
layer = preluLayer(20,'prelu');
validInputSize = [5 5 20];
checkLayer(layer,validInputSize)Skipping multi-observation tests. To enable tests with multiple observations, specify the 'ObservationDimension' option. For 2-D image data, set 'ObservationDimension' to 4. For 3-D image data, set 'ObservationDimension' to 5. For sequence data, set 'ObservationDimension' to 2. Skipping GPU tests. No compatible GPU device found. Skipping code generation compatibility tests. To check validity of the layer for code generation, specify the 'CheckCodegenCompatibility' and 'ObservationDimension' options. Running nnet.checklayer.TestLayerWithoutBackward ......... Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 9 Passed, 0 Failed, 0 Incomplete, 13 Skipped. Time elapsed: 0.12426 seconds.
Результаты показывают количество пройденных, неудачных и пропущенных тестов. Если не указать 'ObservationsDimension' или не имеют графического процессора, то функция пропускает соответствующие тесты.
Проверка нескольких наблюдений
Для ввода с несколькими наблюдениями слой ожидает массив наблюдений размера h-by-w-by-c-by-N, где h, w и c - высота, ширина и количество каналов соответственно, а N - количество наблюдений.
Чтобы проверить допустимость слоя для нескольких наблюдений, укажите типичный размер наблюдения и задайте 'ObservationDimension' до 4.
layer = preluLayer(20,'prelu'); validInputSize = [5 5 20]; checkLayer(layer,validInputSize,'ObservationDimension',4)
Skipping GPU tests. No compatible GPU device found. Skipping code generation compatibility tests. To check validity of the layer for code generation, specify the 'CheckCodegenCompatibility' and 'ObservationDimension' options. Running nnet.checklayer.TestLayerWithoutBackward .......... ... Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 13 Passed, 0 Failed, 0 Incomplete, 9 Skipped. Time elapsed: 0.047134 seconds.
В этом случае функция не обнаруживает никаких проблем с уровнем.
Проверка совместимости создания кода пользовательского слоя codegenPreluLayer.
Определите пользовательский уровень PReLU с поддержкой генерации кода. Чтобы создать этот слой, сохраните файл codegenPreluLayer.m в текущей папке.
Создание экземпляра слоя и проверка его действительности с помощью checkLayer. Укажите допустимый размер ввода в качестве размера одного наблюдения за типовым вводом в слой. Слой ожидает 4-D входов массива, где первые три размера соответствуют высоте, ширине и количеству каналов предыдущего выхода слоя, а четвертый размер соответствует наблюдениям.
Укажите типичный размер входных данных наблюдения и установите значение 'ObservationDimension' опция 4. Чтобы проверить совместимость генерации кода, установите 'CheckCodegenCompatibility' опция для true.
layer = codegenPreluLayer(20,'prelu'); validInputSize = [24 24 20]; checkLayer(layer,validInputSize,'ObservationDimension',4,'CheckCodegenCompatibility',true)
Skipping GPU tests. No compatible GPU device found. Running nnet.checklayer.TestLayerWithoutBackward .......... ........ Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 18 Passed, 0 Failed, 0 Incomplete, 4 Skipped. Time elapsed: 0.53879 seconds.
Функция не обнаруживает никаких проблем со слоем.
layer - Пользовательский слойnnet.layer.Layer объект | nnet.layer.ClassificationLayer объект | nnet.layer.RegressionLayer объектПользовательский слой, указанный как nnet.layer.Layer объект, nnet.layer.ClassificationLayer объект, или nnet.layer.RegressionLayer объект. Пример определения собственного пользовательского слоя см. в разделе Определение пользовательского слоя глубокого обучения с обучаемыми параметрами.
checkLayer функция не поддерживает слои, наследующие от nnet.layer.Formattable.
validInputSize - Допустимые размеры вводаДопустимые входные размеры слоя, определяемые как вектор положительных целых чисел или клеточный массив векторов положительных целых чисел.
Для слоев с одним входом укажите validInputSize как вектор целых чисел, соответствующих размерам входных данных. Например, [5 5 10] соответствует допустимым входным данным размера 5-на-5-на-10.
Для слоев с несколькими входами укажите validInputSize как клеточный массив векторов, где каждый вектор соответствует входу слоя, а элементы векторов соответствуют размерам соответствующих входных данных. Например, {[24 24 20],[24 24 10]} соответствует действительным входным размерам двух исходных данных, где 24 на 24 на 20 - действительный входной размер для первого входа, и 24 на 24 на 10 - действительный входной размер для второго входа.
Дополнительные сведения см. в разделе Размеры вводимых слоев.
Для больших размеров ввода проверка градиента занимает больше времени. Чтобы ускорить тесты, укажите допустимый размер ввода меньшего размера.
Пример: [5 5 10]
Пример: {[24 24 20],[24 24 10]}
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | cell
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'ObservationDimension',4 задание размера наблюдения равным 4'ObservationDimension' - Измерение наблюденияРазмер наблюдения, заданный как разделенная запятыми пара, состоящая из 'ObservationDimension' и положительное целое число.
Размер наблюдения определяет, какой размер входных данных слоя соответствует наблюдениям. Например, если слой ожидает, что входные данные имеют размер h-by-w-by-c-by-N, где h, w и c соответствуют высоте, ширине и количеству каналов входных данных, соответственно, и N соответствует количеству наблюдений, то размер наблюдения равен 4. Дополнительные сведения см. в разделе Размеры вводимых слоев.
Если указан размер наблюдения, то checkLayer функция проверяет действительность функций уровня с использованием сгенерированных данных с мини-партиями размера 1 и 2. Если размер наблюдения не указан, функция пропускает соответствующие тесты.
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
'CheckCodegenCompatibility' - Флаг для включения тестов генерации кодаfalse (по умолчанию) | trueФлаг для включения тестов генерации кода, указанный как разделенная запятыми пара, состоящая из 'CheckCodegenCompatibility' и true или false.
Если 'CheckCodegenCompatibility' является true, то необходимо установить 'ObservationDimension' вариант.
checkLayer функция не проверяет функции, несовместимые с генерацией кода. Чтобы проверить, поддерживается ли пользовательское определение слоя для создания кода, сначала используйте параметр «Готовность к созданию кода». Дополнительные сведения см. в разделе Проверка кода с помощью инструмента готовности к созданию кода (кодер MATLAB).
Типы данных: logical
Для каждого слоя допустимый размер ввода и размер наблюдения зависят от выхода предыдущего слоя.
Для промежуточных слоев (слои типа nnet.layer.Layer), допустимый размер ввода и размер наблюдения зависят от типа данных, вводимых в слой.
Для слоев с одним входом укажите validInputSize как вектор целых чисел, соответствующих размерам входных данных.
Для слоев с несколькими входами укажите validInputSize как клеточный массив векторов, где каждый вектор соответствует входу слоя, а элементы векторов соответствуют размерам соответствующих входных данных.
Для больших размеров ввода проверка градиента занимает больше времени. Чтобы ускорить тесты, укажите допустимый размер ввода меньшего размера.
| Ввод слоев | Размер ввода | Измерение наблюдения |
|---|---|---|
| 2-D изображения | h-by-w-c-by-N, где h, w и c соответствуют высоте, ширине и количеству каналов изображений соответственно, а N - количество наблюдений. | 4 |
| 3-D изображения | h-by-w-d-by-c-by-N, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов 3-D изображений соответственно, а N - количество наблюдений. | 5 |
| Векторные последовательности | c-by-N-by-S, где c - число признаков последовательностей, N - число наблюдений, а S - длина последовательности. | 2 |
| 2-D последовательности изображений | h-by-w-c-by-N-by-S, где h, w и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, N - количество наблюдений, а S - длина последовательности. | 4 |
| 3-D последовательности изображений | h-by-w-d-by-c-by-N-by-S, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов 3-D изображений, соответственно, N - количество наблюдений, а S - длина последовательности. | 5 |
Например, для 2-D проблем классификации изображений установите validInputSize кому [h w c], где h, w, и c соответствуют высоте, ширине и количеству каналов изображений, соответственно, и 'ObservationDimension' кому 4.
Генерация кода поддерживает промежуточные слои только с 2-D вводом изображения.
Для выходных слоев (слоев типа nnet.layer.ClassificationLayer или nnet.layer.RegressionLayer), комплект validInputSize к типовому размеру одного входного наблюдения Y к слою.
Для проблем классификации допустимый размер ввода и измерение наблюдения Y зависят от типа проблемы:
| Задача классификации | Размер ввода | Измерение наблюдения |
|---|---|---|
| 2-D классификация изображений | 1-by-1-by-K-by-N, где K - число классов, а N - число наблюдений. | 4 |
| 3-D классификация изображений | 1-by-1-by-1-by-K-by-N, где K - число классов, а N - число наблюдений. | 5 |
| Классификация «последовательность-метка» | K-by-N, где K - число классов, а N - число наблюдений. | 2 |
| Классификация последовательности к последовательности | K-by-N-by-S, где K - число классов, N - число наблюдений, а S - длина последовательности. | 2 |
Например, для 2-D проблем классификации изображений установите validInputSize кому [1 1 K], где K - количество классов, и 'ObservationDimension' кому 4.
Для регрессионных проблем размеры Y также зависит от типа проблемы. В следующей таблице описаны размеры Y.
| Задача регрессии | Размер ввода | Измерение наблюдения |
|---|---|---|
| 2-D регрессия изображения | 1-by-1-by-R-by-N, где R - количество ответов, а N - количество наблюдений. | 4 |
| 2-D Регрессия между изображениями | h-by-w-by-c-by-N, где h, w и c - высота, ширина и количество каналов выхода соответственно, а N - количество наблюдений. | 4 |
| 3-D регрессия изображения | 1-by-1-by-1-by-R-by-N, где R - количество ответов, а N - количество наблюдений. | 5 |
| 3-D Регрессия между изображениями | h-by-w-by-d-by-c-by-N, где h, w, d и c - высота, ширина, глубина и количество каналов выхода соответственно, а N - количество наблюдений. | 5 |
| Регрессия «последовательность к одному» | R-by-N, где R - число ответов, а N - число наблюдений. | 2 |
| Регрессия последовательности к последовательности | R-by-N-by-S, где R - количество откликов, N - количество наблюдений, а S - длина последовательности. | 2 |
Например, для 2-D проблем регрессии изображения установите validInputSize кому [1 1 R], где R - количество ответов, и 'ObservationDimension' кому 4.
checkLayer функция проверяет достоверность пользовательского слоя, выполняя ряд тестов, описанных в этих таблицах. Для получения дополнительной информации о тестах, используемых checkLayerсм. раздел Проверка допустимости пользовательского слоя.
checkLayer функция использует эти тесты для проверки достоверности пользовательских промежуточных слоев (слоев типа nnet.layer.Layer).
| Тест | Описание |
|---|---|
functionSyntaxesAreCorrect | Синтаксисы функций слоя определены правильно. |
predictDoesNotError | predict не приводит к ошибке. |
forwardDoesNotError | Если указано, |
forwardPredictAreConsistentInSize | Когда |
backwardDoesNotError | Если указано, backward не приводит к ошибке. |
backwardIsConsistentInSize | Когда
|
predictIsConsistentInType | Выходные данные |
forwardIsConsistentInType | Когда |
backwardIsConsistentInType | Когда |
gradientsAreNumericallyCorrect | Когда backward указан, градиенты вычислены в backward согласуются с числовыми градиентами. |
backwardPropagationDoesNotError | Когда backward не указан, производные можно вычислить с помощью автоматической дифференциации. |
codegenPragmaDefinedInClassDef | pragma "%#codegen" для генерации кода указывается в файле класса. |
checkForSupportedLayerPropertiesForCodegen | Свойства слоя поддерживают создание кода. |
predictIsValidForCodeGeneration | predict действителен для создания кода. |
Тесты predictIsConsistentInType, forwardIsConsistentInType, и backwardIsConsistentInType также проверьте совместимость графического процессора. Для выполнения функций уровня на GPU эти функции должны поддерживать входы и выходы типа gpuArray с базовым типом данных single.
checkLayer функция использует эти тесты для проверки достоверности пользовательских выходных слоев (слоев типа nnet.layer.ClassificationLayer или nnet.layer.RegressionLayer).
| Тест | Описание |
|---|---|
forwardLossDoesNotError | forwardLoss не приводит к ошибке. |
backwardLossDoesNotError | backwardLoss не приводит к ошибке. |
forwardLossIsScalar | Выходные данные forwardLoss является скалярным. |
backwardLossIsConsistentInSize | Когда backwardLoss указано, выход backwardLoss согласован по размеру: dLdY имеет тот же размер, что и прогнозы Y. |
forwardLossIsConsistentInType | Выходные данные |
backwardLossIsConsistentInType | Когда |
gradientsAreNumericallyCorrect | Когда backwardLoss указан, градиенты вычислены в backwardLoss численно корректны. |
backwardPropagationDoesNotError | Когда backwardLoss не указан, производные можно вычислить с помощью автоматической дифференциации. |
forwardLossIsConsistentInType и backwardLossIsConsistentInType тесты также проверяют совместимость графического процессора. Для выполнения функций уровня на GPU эти функции должны поддерживать входы и выходы типа gpuArray с базовым типом данных single.
analyzeNetwork | trainingOptions | trainNetwork
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.