शुरू करेंमुफ़्त में शुरू करें

बैच अपडेट्स के साथ A2C

इस कोर्स में अब तक आपने एक ही कोर DRL ट्रेनिंग लूप के विभिन्न रूपों का उपयोग किया है. व्यवहार में, इस संरचना को बढ़ाने के कई तरीके होते हैं, जैसे कि बैच अपडेट्स को शामिल करना.

अब आप Lunar Lander एनवायरनमेंट पर A2C ट्रेनिंग लूप पर लौटेंगे, लेकिन हर स्टेप पर नेटवर्क्स को अपडेट करने के बजाय, आप ग्रेडिएंट डिसेंट स्टेप चलाने से पहले 10 स्टेप बीतने का इंतज़ार करेंगे. 10 स्टेप्स पर लॉस का औसत लेने से, अपडेट्स थोड़े अधिक स्थिर हो जाते हैं.

यह अभ्यास पाठ्यक्रम का हिस्सा है

Python में Deep Reinforcement Learning

पाठ्यक्रम देखें

अभ्यास निर्देश

  • हर स्टेप से निकले लॉस को करंट बैच के लॉस टेन्सर्स में जोड़ें.
  • बैच लॉसेज़ की गणना करें.
  • लॉस टेन्सर्स को फिर से रीइनिशियलाइज़ करें.

इंटरैक्टिव व्यावहारिक अभ्यास

इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।

actor_losses = torch.tensor([])
critic_losses = torch.tensor([])
for episode in range(10):
    state, info = env.reset()
    done = False
    episode_reward = 0
    step = 0
    while not done:
        step += 1
        action, action_log_prob = select_action(actor, state)                
        next_state, reward, terminated, truncated, _ = env.step(action)
        done = terminated or truncated
        episode_reward += reward
        actor_loss, critic_loss = calculate_losses(
            critic, action_log_prob, 
            reward, state, next_state, done)
        # Append to the loss tensors
        actor_losses = torch.cat((____, ____))
        critic_losses = torch.cat((____, ____))
        if len(actor_losses) >= 10:
            # Calculate the batch losses
            actor_loss_batch = actor_losses.____
            critic_loss_batch = critic_losses.____
            actor_optimizer.zero_grad(); actor_loss_batch.backward(); actor_optimizer.step()
            critic_optimizer.zero_grad(); critic_loss_batch.backward(); critic_optimizer.step()
            # Reinitialize the loss tensors
            actor_losses = ____
            critic_losses = ____
        state = next_state
    describe_episode(episode, reward, episode_reward, step)
कोड संपादित करें और चलाएँ