Если вы обучаете агент изучения укрепления, можно сгенерировать код, чтобы развернуть оптимальную политику. Можно сгенерировать:
Код CUDA® для политик глубокой нейронной сети с помощью GPU Coder™
Код C/C++ для таблицы, глубокой нейронной сети или линейных политик основной функции с помощью MATLAB® Coder™
Генерация кода для политик глубокой нейронной сети поддерживает сети только с одним входным слоем.
Для получения дополнительной информации об учебных агентах изучения укрепления смотрите, что Укрепление Train Изучает Агенты.
Чтобы сгенерировать код для обученной оптимальной политики агента изучения укрепления, необходимо сначала создать функцию оценки политики из агента. Можно сгенерировать функцию политики для агента с любым типом объекта представления политики:
Таблицы Value и Q (rlTableRepresentation
)
Глубокие нейронные сети (rlLayerRepresentation
)
Линейные основные функции (rlLinearBasisRepresentation
)
Для получения дополнительной информации о различных типах политик смотрите, Создают политику и Представления Функции Значения.
Чтобы создать функцию оценки политики, которая выбирает действие на основе данного наблюдения, используйте команду generatePolicyFunction
. Эта команда генерирует скрипт MATLAB, который содержит функцию оценки политики и MAT-файл, который содержит оптимальные данные о политике.
Можно сгенерировать код, чтобы развернуть эту функцию политики использование GPU Coder или MATLAB Coder.
Если ваша обученная оптимальная политика использует глубокую нейронную сеть, можно сгенерировать код CUDA для политики с помощью GPU Coder. Существуют несколько необходимые и рекомендовали необходимые как условие продукты для генерации кода CUDA для глубоких нейронных сетей. Для получения дополнительной информации смотрите Устанавливающие Необходимые как условие продукты (GPU Coder) и Подготовка Необходимых как условие продуктов (GPU Coder).
Не вся поддержка слоев глубокой нейронной сети генерация кода графического процессора. Для списка поддерживаемых слоев смотрите Поддерживаемые Сети и Слои (GPU Coder). Для получения дополнительной информации и примеры на генерации кода графического процессора, смотрите Глубокое обучение для GPU Coder (GPU Coder).
Как пример, сгенерируйте код графического процессора для агента градиента политики, обученного в Train Агент PG, чтобы Сбалансировать полюсную Корзиной Систему.
Загрузите обученный агент.
load('MATLABCartpolePG.mat','agent')
Создайте функцию оценки политики для этого агента.
generatePolicyFunction(agent)
Эта команда создает файл evaluatePolicy.m
, который содержит функцию политики и файл agentData.mat
, который содержит обученного агента глубокой нейронной сети. Для данного наблюдения функция политики оценивает вероятность для каждого возможного действия с помощью сети агента. Затем функция политики случайным образом выбирает действие на основе этих вероятностей.
Поскольку сеть агента для этого агента PG имеет один входной слой и один выходной слой, можно сгенерировать код для этой сети с помощью GPU Coder. Например, можно сгенерировать CUDA-совместимую MEX-функцию.
Сконфигурируйте функцию codegen
, чтобы создать CUDA-совместимую MEX-функцию C++
cfg = coder.gpuConfig('mex'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn');
Установите размерности входного параметра оценки политики, который соответствует размерностям спецификации наблюдения для агента. Чтобы найти размерности наблюдения, используйте функцию getObservationInfo
. В этом случае наблюдения находятся в четырехэлементном векторе.
argstr = '{ones(4,1)}';
Сгенерируйте код с помощью функции codegen
.
codegen('-config','cfg','evaluatePolicy','-args',argstr,'-report');
Эта команда генерирует MEX-функцию evaluatePolicy_mex
.
Можно сгенерировать код C/C++ для таблицы, глубокой нейронной сети или линейных политик основной функции с помощью MATLAB Coder.
Используя MATLAB Coder, можно сгенерировать:
Код C/C++ для политик, которые используют таблицы Q, таблицы значения или линейные основные функции. Для получения дополнительной информации об общей генерации кода C/C++ см. Генерирующийся Код (MATLAB Coder).
Код С++ для политик то использование глубокие нейронные сети. Для получения дополнительной информации смотрите Глубокое обучение для MATLAB Coder (MATLAB Coder).
Как пример, сгенерируйте код С для агента Q-изучения, обученного в Агенте Изучения Укрепления Train в Основном Мире Сетки.
Загрузите обученный агент.
load('basicGWQAgent.mat','qAgent')
Создайте функцию оценки политики для этого агента.
generatePolicyFunction(qAgent)
Эта команда создает файл evaluatePolicy.m
, который содержит функцию политики и файл agentData.mat
, который содержит обученную функцию табличного значения Q. Для данного наблюдения функция политики ищет функцию значения для каждого возможного действия с помощью таблицы Q. Затем функция политики выбирает действие, для которого функция значения является самой большой.
Установите размерности входного параметра оценки политики, который соответствует размерностям спецификации наблюдения для агента. Чтобы найти размерности наблюдения, используйте функцию getObservationInfo
. В этом случае существует одно конечное наблюдение.
argstr = '{[1]}';
Сконфигурируйте функцию codegen
, чтобы сгенерировать встраиваемый код С, подходящий для предназначения для статической библиотеки и установить выходную папку на buildFolder
.
cfg = coder.config('lib'); outFolder = 'buildFolder';
Сгенерируйте код С с помощью функции codegen
.
codegen('-c','-d',outFolder,'-config','cfg',... 'evaluatePolicy','-args',argstr,'-report');