import argparse
import gym
import numpy as np
from itertools import count
from collections import namedtuple
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torch.distributions import Categorical
# Cart Pole
parser = argparse.ArgumentParser(description='PyTorch actor-critic example')
parser.add_argument('--gamma', type=float, default=0.99, metavar='G',
help='discount factor (default: 0.99)')
parser.add_argument('--seed', type=int, default=543, metavar='N',
help='random seed (default: 543)')
parser.add_argument('--render', action='store_true',
help='render the environment')
parser.add_argument('--log-interval', type=int, default=10, metavar='N',
help='interval between training status logs (default: 10)')
args = parser.parse_args()
env = gym.make('CartPole-v1')
env.reset(seed=args.seed)
torch.manual_seed(args.seed)
# namedtuple 是 collections 模块中的一个工厂函数,用于创建具有命名字段的元组子类。
# 它提供了一种简洁的方式来创建具有属性的元组,使代码更具可读性和可维护性。
# 创建一个名为SavedAction的namedtuple元组,并将log_prob和value作为其字段。
SavedAction = namedtuple('SavedAction', ['log_prob', 'value'])
class Policy(nn.Module):
"""
imple
强化学习Actor-Critic算法代码精读(PyTorch,含详细注释)
于 2025-01-20 16:48:47 首次发布