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

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

    plot(actorNet)

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

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

    deepNetworkDesigner(criticNet)
    deepNetworkDesigner(actorNet)
    

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

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

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

    createModifiedNetworks

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

    plot(modifiedActorNet)

    Figure contains an axes. The axes 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