BaşlayınÜcretsiz Başlayın

Sabit Q-hedefleri

Sabit Q-hedefleriyle Lunar Lander'ını eğitmeye hazırlanıyorsun. Önkoşul olarak, hem eylemi seçen çevrimiçi ağı hem de TD-hedefi hesaplamasında kullanılan hedef ağı oluşturman gerekiyor.

Ayrıca, her eğitim adımında kullanabileceğin bir update_target_network işlevi de yazmalısın. Hedef ağ gradyan inişiyle güncellenmez; bunun yerine, update_target_network ağırlıklarını küçük bir miktar Q-ağına doğru iterek zaman içinde oldukça kararlı kalmasını sağlar.

Dikkat: Yalnızca bu egzersizde, durum sözlüğünü kolayca yazdırıp inceleyebilmemiz için çok küçük bir ağ kullanıyorsun. Sadece iki boyutlu tek bir gizli katmana sahip; eylem uzayı ve durum uzayı da boyut 2'dir.

print_state_dict() işlevi, durum sözlüğünü yazdırman için ortamında hazırdır.

Bu egzersiz

Python ile Deep Reinforcement Learning

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • Hem hedef hem de çevrimiçi ağlar için .state_dict() değerini al.
  • tau çevrimiçi ağın ağırlığı olacak şekilde, çevrimiçi ağın ve hedef ağın parametreleri arasında ağırlıklı ortalama alarak hedef ağın durum sözlüğünü güncelle.
  • Güncellenmiş durum sözlüğünü hedef ağa geri yükle.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

def update_target_network(target_network, online_network, tau):
    # Obtain the state dicts for both networks
    target_net_state_dict = ____
    online_net_state_dict = ____
    for key in online_net_state_dict:
        # Calculate the updated state dict for the target network
        target_net_state_dict[key] = (online_net_state_dict[____] * ____ + target_net_state_dict[____] * ____)
        # Load the updated state dict into the target network
        target_network.____
    return None
  
print("online network weights:", print_state_dict(online_network))
print("target network weights (pre-update):", print_state_dict(target_network))
update_target_network(target_network, online_network, .001)
print("target network weights (post-update):", print_state_dict(target_network))
Kodu Düzenle ve Çalıştır