Architektura sieci Q
Jesteś już prawie gotowy, aby wytrenować swojego pierwszego agenta głębokiego uczenia ze wzmocnieniem! Zanim przejdziesz do pierwszej pełnej pętli treningowej, potrzebujesz architektury sieci neuronowej, która będzie sterować decyzjami agenta i jego zdolnością do uczenia się.
Zmodyfikujesz ogólną architekturę zdefiniowaną w poprzednim ćwiczeniu.
torch oraz torch.nn są już zaimportowane do ćwiczenia.
To ćwiczenie jest częścią kursu
Głębokie uczenie ze wzmocnieniem w Pythonie
Instrukcje do ćwiczenia
- Utwórz pierwszą warstwę ukrytą; jej dane wejściowe to stan środowiska o wymiarze
state_size. - Utwórz warstwę wyjściową; dostarcza ona wartości Q dla każdej akcji, o wymiarze
action_size. - Uzupełnij metodę
forward(); użyj funkcji aktywacjitorch.relu.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
class QNetwork(nn.Module):
def __init__(self, state_size, action_size):
super(QNetwork, self).__init__()
# Instantiate the first hidden layer
self.fc1 = nn.Linear(____, ____)
self.fc2 = nn.Linear(64, 64)
# Instantiate the output layer
self.fc3 = nn.Linear(____, ____)
def forward(self, state):
# Ensure the ReLU activation function is used
x = ____(self.fc1(torch.tensor(state)))
x = ____(self.fc2(x))
return self.fc3(x)