Архитектура Q-сети
Вы почти готовы к обучению своего первого агента глубокого обучения с подкреплением! Прежде чем перейти к первому полному циклу обучения, необходимо определить архитектуру нейронной сети, которая будет управлять решениями агента и его способностью к обучению.
Вам предстоит доработать универсальную архитектуру, определённую в одном из предыдущих упражнений.
torch и torch.nn уже импортированы в упражнения.
Это упражнение является частью курса
Глубокое обучение с подкреплением на Python
Инструкции к упражнению
- Создайте первый скрытый слой; его входными данными будет состояние среды с размерностью
state_size. - Создайте выходной слой; он возвращает Q-значения для каждого действия с размерностью
action_size. - Завершите метод
forward(); используйте функцию активацииtorch.relu.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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)