Чтобы создать функциональные аппроксимации для обучения с подкреплением, можно импортировать предварительно обученные глубокие нейронные сети или архитектуры слоя глубокой нейронной сети с помощью функциональности импорта сети Deep Learning Toolbox™. Можно импортировать:
Модели Open Neural Network Exchange (ONNX™), для которых требуется Deep Learning Toolbox Converter для ONNX Model Формата поддерживает программное обеспечение пакета. Для получения дополнительной информации, importONNXLayers
.
TensorFlow™-Keras сети, которым требуется Deep Learning Toolbox Converter для пакета поддержки TensorFlow Models. Для получения дополнительной информации см. importKerasLayers
.
Caffe сверточные сети, которые требуют Пакета поддержки Importer for Caffe Models пакета Deep Learning Toolbox. Для получения дополнительной информации см. importCaffeLayers
.
После импорта глубокой нейронной сети можно создать объект представления политики или функции ценности с помощью объекта представления, такого как rlValueRepresentation
.
Когда вы импортируете архитектуры глубоких нейронных сетей, примите к сведению следующее.
Импортированные архитектуры должны иметь один входной слой и один выходной слой. Поэтому импорт целых сетей критика с входными слоями наблюдений и действий не поддерживается.
Размерности входных и выходных слоев импортированной архитектуры сети должны совпадать с размерностями соответствующих действий, наблюдений или вознаграждения вашего окружения.
После импорта сетевой архитектуры необходимо задать имена входного и выходного слоев, так чтобы они совпадали с именами соответствующих спецификаций действий и наблюдений.
Для получения дополнительной информации об архитектурах глубоких нейронных сетей, поддерживаемых для обучения с подкреплением, смотрите, Создают представления политики и функции ценности.
В качестве примера предположим, что у вас есть окружение с сигналом наблюдения полутонового изображения 50 на 50 и непрерывным пространством действий. Чтобы обучить агента градиента политики, вам требуется нижеследующие функциональные аппроксимации, обе из которых должны иметь один входной слой наблюдения изображений 50 на 50 и одно скалярное выходное значение.
Актёр - выбирает значение действия на основе текущего наблюдения
Критик - Оценивает ожидаемое долгосрочное вознаграждение на основе текущего наблюдения
Кроме того, предположим, что у вас есть следующие сетевые архитектуры для импорта:
A архитектуры глубоких нейронных сетей для актера с входным слоем изображений 50 на 50 и скалярным выходным слоем, которая сохранена в формате ONNX (criticNetwork.onnx
).
A архитектуры глубоких нейронных сетей для критика с входным слоем изображений 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
, соответственно.