exponenta event banner

setModel

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

    Описание

    пример

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

    Примеры

    свернуть все

    Создание среды с непрерывным пространством действий и получение ее характеристик наблюдения и действий. В этом примере загрузите среду, используемую в примере Train DDPG Agent to Control Double Integrator System.

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

    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 в их выходном тракте. Просмотр измененной сети субъектов.

    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 объекты, a layerGraph объект, a 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