Импортируйте политику и представления функции ценности

Чтобы создать функциональную аппроксимацию для обучения с подкрепления, можно импортировать предварительно обученные глубокие нейронные сети или архитектуру слоя глубокой нейронной сети с помощью функциональности импорта сетей пакета Deep Learning Toolbox™. Можно импортировать:

  • Модели Open Neural Network Exchange (ONNX™), которые требуют Конвертера Deep Learning Toolbox для программного обеспечения пакета поддержки Формата Модели ONNX. Для получения дополнительной информации, importONNXLayers.

  • Сети TensorFlow™-Keras, которые требуют Средства импорта Deep Learning Toolbox для программного обеспечения пакета поддержки Моделей TensorFlow-Keras. Для получения дополнительной информации смотрите importKerasLayers.

  • Сверточные сети Caffe, которые требуют пакета поддержки Importer for Caffe Models пакета Deep Learning Toolbox. Для получения дополнительной информации смотрите importCaffeLayers.

После того, как вы импортируете глубокую нейронную сеть, можно создать политику или объект представления функции ценности использование объекта представления, такой как rlValueRepresentation.

Когда вы импортируете архитектуры глубоких нейронных сетей, рассматриваете следующее.

  • Импортированные архитектуры должны иметь один входной слой и один выходной слой. Поэтому импорт целых сетей критика с наблюдением и входными слоями действия не поддерживается.

  • Размерности входных и выходных слоёв импортированной архитектуры сети должны совпадать с размерностями соответствующих действий, наблюдений или вознаграждения вашего окружения.

  • После импорта сетевой архитектуры необходимо задать имена входного и выходного слоёв, так чтобы они совпадали с именами соответствующих спецификаций действий и наблюдений.

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

Импортируйте агента и критика для приложения наблюдения изображений

Как пример, примите, что у вас есть среда с 50 50 сигналом наблюдения полутонового изображения и непрерывным пространством действий. Для обучения агента градиента политики (GP) вам требуется нижеследующие функциональные аппроксимации, при этом обе должны иметь единственный входной слой наблюдений изображений 50 на 50 и одно скалярное выходное значение.

  • Агент — Выбирает значение действия на основе текущего наблюдения

  • Критик — Оценивает ожидаемое долгосрочное вознаграждение на основе текущего наблюдения

Кроме того, предположим, что у вас есть следующая сетевая архитектура для импорта:

  • Архитектура глубоких нейронных сетей для актера с входным слоем изображений 50 на 50 и скалярным выходным слоем, который сохранен в формате ONNX (criticNetwork.onnx).

  • Архитектура глубоких нейронных сетей для критика с входным слоем изображений 50 на 50 и скалярным выходном слоем, который сохранен в формате ONNX (actorNetwork.onnx).

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

criticNetwork = importONNXLayers('criticNetwork.onnx');
actorNetwork = importONNXLayers('actorNetwork.onnx');

Эти команды генерируют предупреждение, которое утверждает, что сеть обучаема, пока выходной слой не добавляется. Когда вы используете импортированную сеть, чтобы создать агента или представление критика, пакет Reinforcement Learning Toolbox™ автоматически добавляет выходной слой для вас.

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

obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);

Создайте представление критика, задав имя входного слоя сети критика как имя наблюдения. Поскольку сети критика вводили одно наблюдение и одно действие выход, используйте представление функции ценности.

critic = rlValueRepresentation(criticNetwork,obsInfo,...
    'Observation',{criticNetwork.Layers(1).Name});

Создайте представление актера, задав имя входного слоя сети агента как имя наблюдения и выходной слой сети агента как имя наблюдения. Поскольку сеть агента имеет один скалярный выход, используйте детерминированное представление актера.

actor = rlDeterministicActorRepresentation(actorNetwork,obsInfo,actInfo,...
    'Observation',{actorNetwork.Layers(1).Name},...
    'Action',{actorNetwork.Layers(end).Name});

Вы можете затем:

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

  • Задайте представление актёра и критика в существующем использовании агента setActor и setCritic, соответственно.

Похожие темы