НачатьНачать бесплатно

Архитектура 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)
Редактировать и запускать код