getModel

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

    Синтаксис

    Описание

    пример

    model = getModel(rep) возвращает вычислительную модель, используемую политикой или представлением функции ценности rep.

    Примеры

    свернуть все

    Создайте среду с непрерывным пространством действий и получите его спецификации наблюдений и спецификации действия. В данном примере загрузите среду, используемую в примере, Обучают Агента 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.

    Примечание

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

    critics = getCritic(myTD3Agent);
    criticNet1 = getModel(critics(1));
    criticNet2 = getModel(critics(2));

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

    свернуть все

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

    • Глубокая нейронная сеть, заданная как dlnetwork объект

    • rlTable объект

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

    Вопросы совместимости

    развернуть все

    Поведение изменяется в R2021b

    Введенный в R2020b