Разверните обученные политики обучения с подкреплением

Если вы обучаете агента обучения с подкреплением, можно сгенерировать код, чтобы развернуть оптимальную политику. Можно сгенерировать:

  • Код CUDA® для политик глубокой нейронной сети с помощью GPU Coder™

  • Код C/C++ для таблицы, глубокой нейронной сети или линейных политик основной функции с помощью MATLAB® Coder™

Генерация кода поддерживается для агентов с помощью нейронных сетей прямого распространения в любом из входных путей, при условии, что все используемые слои поддерживаются. Генерация кода не поддерживается для непрерывного PG действий, AC, PPO и агентов SAC с помощью рекуррентной нейронной сети (RNN), или для любого агента, имеющего несколько входных путей и содержащего RNN в любом из путей.

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

Чтобы создать функцию оценки политики, которая выбирает действие на основе заданного наблюдения, используйте generatePolicyFunction команда. Эта команда генерирует скрипт MATLAB, который содержит функцию оценки политики и MAT-файл, который содержит оптимальные данные о политике.

Можно сгенерировать код, чтобы развернуть эту функцию политики использование GPU Coder или MATLAB Coder.

Сгенерируйте код Используя GPU Coder

Если ваша обученная оптимальная политика использует глубокую нейронную сеть, можно сгенерировать код CUDA для политики с помощью GPU Coder. Для получения дополнительной информации о поддерживаемых графических процессорах смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox). Существуют несколько необходимые и рекомендовали необходимые как условие продукты для генерации кода CUDA для глубоких нейронных сетей. Для получения дополнительной информации смотрите Устанавливающие Необходимые как условие продукты (GPU Coder) и Подготовка Необходимых как условие продуктов (GPU Coder).

Не вся поддержка слоев глубокой нейронной сети генерация кода графического процессора. Для списка поддерживаемых слоев смотрите Поддерживаемые Сети, Слои и Классы (GPU Coder). Для получения дополнительной информации и примеры на генерации кода графического процессора, смотрите Глубокое обучение для GPU Coder (GPU Coder).

Сгенерируйте код CUDA для политики глубокой нейронной сети

Как пример, сгенерируйте код графического процессора для агента градиента политики, обученного в, Обучают Агента PG Балансировать Систему Тележки с шестом.

Загрузите обученного агента.

load('MATLABCartpolePG.mat','agent')

Создайте функцию оценки политики для этого агента.

generatePolicyFunction(agent)

Эта команда создает evaluatePolicy.m файл, который содержит функцию политики и agentData.mat файл, который содержит обученного агента глубокой нейронной сети. Для заданного наблюдения функция политики оценивает вероятность для каждого возможного действия с помощью сети агента. Затем функция политики случайным образом выбирает действие на основе этих вероятностей.

Можно сгенерировать код для этой сети с помощью GPU Coder. Например, можно сгенерировать совместимую MEX-функцию CUDA.

Сконфигурируйте codegen функция, чтобы создать совместимую MEX-функцию C++ CUDA.

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.

Сгенерируйте код Используя MATLAB Coder

Можно сгенерировать код C/C++ для таблицы, глубокой нейронной сети или линейных политик основной функции с помощью MATLAB Coder.

Используя MATLAB Coder, можно сгенерировать:

Сгенерируйте код С для политики Глубокой нейронной сети, не пользуясь никакой Сторонней Библиотекой

Как пример, сгенерируйте код С без зависимостей от сторонних библиотек для агента градиента политики, обученного в, Обучают Агента PG Балансировать Систему Тележки с шестом.

Загрузите обученного агента.

load('MATLABCartpolePG.mat','agent')

Создайте функцию оценки политики для этого агента.

generatePolicyFunction(agent)

Эта команда создает evaluatePolicy.m файл, который содержит функцию политики и agentData.mat файл, который содержит обученного агента глубокой нейронной сети. Для заданного наблюдения функция политики оценивает вероятность для каждого возможного действия с помощью сети агента. Затем функция политики случайным образом выбирает действие на основе этих вероятностей.

Сконфигурируйте codegen функция, чтобы сгенерировать код, подходящий для создания файла MEX.

cfg = coder.config('mex');

На объекте настройки, набор выходной язык на C++ и набор DeepLearningConfig к 'none'. Эта опция генерирует код, не пользуясь никакой сторонней библиотекой.

cfg.TargetLang = 'C';
cfg.DeepLearningConfig = coder.DeepLearningConfig('none'); 

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

argstr = '{ones(4,1)}';

Сгенерируйте код с помощью codegen функция.

codegen('-config','cfg','evaluatePolicy','-args',argstr,'-report');

Эта команда генерирует Код С++ для агента градиента политики, содержащего агента глубокой нейронной сети.

Сгенерируйте Код С++ для политики Глубокой нейронной сети, пользующейся Сторонними Библиотеками

Как пример, сгенерируйте Код С++ для агента градиента политики, обученного в, Обучают Агента PG Балансировать Систему Тележки с шестом с помощью Math Kernel Library Intel для Глубоких нейронных сетей (MKL-DNN).

Загрузите обученного агента.

load('MATLABCartpolePG.mat','agent')

Создайте функцию оценки политики для этого агента.

generatePolicyFunction(agent)

Эта команда создает evaluatePolicy.m файл, который содержит функцию политики и agentData.mat файл, который содержит обученного агента глубокой нейронной сети. Для заданного наблюдения функция политики оценивает вероятность для каждого возможного действия с помощью сети агента. Затем функция политики случайным образом выбирает действие на основе этих вероятностей.

Сконфигурируйте codegen функция, чтобы сгенерировать код, подходящий для создания файла MEX.

cfg = coder.config('mex');

На объекте настройки, набор выходной язык на C++ и набор DeepLearningConfig к целевой библиотеке 'mkldnn'. Эта опция генерирует код с помощью Math Kernel Library Intel для Глубоких нейронных сетей (Intel MKL-DNN).

cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn'); 

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

argstr = '{ones(4,1)}';

Сгенерируйте код с помощью codegen функция.

codegen('-config','cfg','evaluatePolicy','-args',argstr,'-report');

Эта команда генерирует Код С++ для агента градиента политики, содержащего агента глубокой нейронной сети.

Сгенерируйте код С для политики Q-таблицы

Как пример, сгенерируйте код С для агента Q-обучения, обученного в, Обучают Агента Обучения с подкреплением в Основном Мире Сетки.

Загрузите обученного агента.

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');

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

Похожие темы