setModel

Установите вычислительную модель для представления функции ценности или политики

    Описание

    пример

    newRep = setModel(oldRep,model) возвращает новую политику или представление функции ценности, newRep, с той же настройкой как исходное представление, oldRep, и вычислительная модель задана в model.

    Примеры

    свернуть все

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

    Загрузите предопределенную среду.

    env = rlPredefinedEnv("DoubleIntegrator-Continuous")
    env = 
      DoubleIntegratorContinuousAction with properties:
    
                 Gain: 1
                   Ts: 0.1000
          MaxDistance: 5
        GoalThreshold: 0.0100
                    Q: [2x2 double]
                    R: 0.0100
             MaxForce: Inf
                State: [2x1 double]
    
    

    Получите спецификации наблюдений и спецификации действия.

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

    Создайте агента PPO из спецификаций наблюдений среды и спецификаций действия.

    agent = rlPPOAgent(obsInfo,actInfo);

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

    actor = getActor(agent);
    critic = getCritic(agent);

    Извлеките глубокие нейронные сети от обоих представления актёра и критика.

    actorNet = getModel(actor);
    criticNet = getModel(critic);

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

    Например, просмотрите сеть агента.

    plot(layerGraph(actorNet))

    Figure contains an axes object. The axes object contains an object of type graphplot.

    Чтобы проверить сеть, используйте analyzeNetwork. Например, проверьте сеть критика.

    analyzeNetwork(criticNet)
    

    Можно изменить агента и сети критика и сохранить их назад в агента. Чтобы изменить сети, можно использовать приложение Deep Network Designer. Чтобы открыть приложение для каждой сети, используйте следующие команды.

    deepNetworkDesigner(layerGraph(criticNet))
    deepNetworkDesigner(layerGraph(actorNet))
    

    В Deep Network Designer измените сети. Например, можно добавить дополнительные слои в сеть. Когда вы измените сети, не изменяйте входные и выходные слои сетей, возвращенных getModel. Для получения дополнительной информации о создании сетей смотрите Сети Сборки с Deep Network Designer.

    Чтобы проверить модифицированную сеть в Deep Network Designer, необходимо нажать на Analyze для dlnetwork под разделом Analysis. Чтобы экспортировать модифицированные структуры сети в рабочую область MATLAB®, сгенерируйте код для создания новых сетей и запустите этот код из командной строки. Не используйте опцию экспорта в Deep Network Designer. Для примера, который показывает, как сгенерировать и запустить код, смотрите, Создают Агента Используя Deep Network Designer и Обучаются Используя Наблюдения Изображений.

    В данном примере код для создания модифицированного агента и сетей критика находится в createModifiedNetworks.m.

    createModifiedNetworks

    Каждая из модифицированных сетей включает дополнительный fullyConnectedLayer и reluLayer в их выходе path. Просмотрите модифицированную сеть агента.

    plot(modifiedActorNet)

    Figure contains an axes object. The axes object contains an object of type graphplot.

    После экспорта сетей вставьте сети в представления актёра и критика.

    actor = setModel(actor,modifiedActorNet);
    critic = setModel(critic,modifiedCriticNet);

    Наконец, вставьте модифицированные представления актёра и критика в объекты критика и агента.

    agent = setActor(agent,actor);
    agent = setCritic(agent,critic);

    Входные параметры

    свернуть все

    Политика или представление функции ценности в виде одного из следующего:

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

    • Создайте представление с помощью соответствующего объекта представления.

    • Получите существующее представление функции ценности от использования агента getCritic.

    • Получите существующее представление политики от использования агента getActor.

    Вычислительная модель в виде одного из следующего:

    • Глубокая нейронная сеть, заданная как массив Layer объекты, layerGraph объект, DAGNetwork объект или dlnetwork объект. Входные и выходные слои model должен иметь те же имена и размерности как сеть, возвращенная getModel для того же представления. Здесь, выходной слой сразу является слоем перед выходным слоем потерь.

    • rlTable объект с теми же размерностями как табличная модель задан в newRep.

    • 1 2 массив ячеек, который содержит указатель на функцию для пользовательской основной функции и параметров основной функции.

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

    Примечание

    Для агентов больше чем с одним критиком, таких как TD3 и агенты SAC, необходимо вызвать setModel для каждого представления критика индивидуально, вместо вызова setModel для массива возвращенных getCritic.

    critics = getCritic(myTD3Agent);
    % Modify critic networks.
    critics(1) = setModel(critics(1),criticNet1);
    critics(2) = setModel(critics(2),criticNet2);
    myTD3Agent = setCritic(myTD3Agent,critics);
    

    Выходные аргументы

    свернуть все

    Новая политика или представление функции ценности, возвращенное как объект представления того же типа как oldRep. Кроме новой вычислительной модели, newRep совпадает с oldRep.

    Введенный в R2020b