莫烦python讲得好差_莫烦PYTHON——PyTorch——DQN 代码详解

本文详细介绍了如何使用PyTorch实现Deep Q-Network(DQN)算法,涉及环境设置、网络结构、超参数配置、动作选择、记忆库、学习过程等多个方面。通过一个CartPole-v0环境的示例,展示了DQN如何学习并优化策略。
摘要由CSDN通过智能技术生成

import torch # 导入torch

import torch.nn as nn # 导入torch.nn

import torch.nn.functional as F # 导入torch.nn.functional

import numpy as np # 导入numpy

import gym # 导入gym

# 超参数

BATCH_SIZE = 32 # 样本数量

LR = 0.01 # 学习率

EPSILON = 0.9 # greedy policy

GAMMA = 0.9 # reward discount

TARGET_REPLACE_ITER = 100 # 目标网络更新频率

MEMORY_CAPACITY = 2000 # 记忆库容量

env = gym.make('CartPole-v0').unwrapped # 使用gym库中的环境:CartPole,且打开封装 (若想了解该环境,请自行百度)

N_ACTIONS = env.action_space.n # 杆子动作个数 (2个)

N_STATES = env.observation_space.shape[0] # 杆子状态个数 (4个)

"""

torch.nn是专门为神经网络设计的模块化接口。nn构建于Autograd之上,可以用来定义和运行神经网络。

nn.Module是nn中十分重要的类,包含网络各层的定义及forward方法。

定义网络:

需要继承nn.Module类,并实现forward方法。

一般把网络中具有可学习参数的层放在构造函数__init__()中。

不具有可学习参数的层(如ReLU)可放在构造函数中,也可不放在构造函数中(而在forward中使用nn.functional来代替)。

只要在nn.Module的子类中定义了forward函数,backward函数就会被自动实现(利用Autograd)。

在forward函数中可以使用任何Variable支持的函数,毕竟在整个Pytorch构建的图中,是Variable在流动。还可以使用if,for,print,log等python语法。

注:Pytorch基于nn.Module构建的模型中,只支持mini-batch的Variable输入方式。

"""

# 定义Net类 (定义网络)

class Net(nn.Module):

def __init__(self): # 定义Net的一系列属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值