关键词:
代码:
# -*- coding: utf-8 -*- import random import gym import numpy as np from collections import deque from keras.models import Sequential from keras.layers import Dense from keras.optimizers import Adam from keras.utils.vis_utils import plot_model EPISODES = 1000 class DQNAgent: def __init__(self, state_size, action_size): self.state_size = state_size self.action_size = action_size self.memory = deque(maxlen=2000) self.gamma = 0.95 # discount rate #self.epsilon = 1.0 # exploration rate self.epsilon = 0.4 # exploration rate self.epsilon_min = 0.01 self.epsilon_decay = 0.995 self.learning_rate = 0.001 self.model = self._build_model() #可视化MLP结构 plot_model(self.model, to_file=\'dqn-cartpole-v0-mlp.png\', show_shapes=False) def _build_model(self): # Neural Net for Deep-Q learning Model model = Sequential() model.add(Dense(24, input_dim=self.state_size, activation=\'relu\')) model.add(Dense(24, activation=\'relu\')) model.add(Dense(self.action_size, activation=\'linear\')) model.compile(loss=\'mse\', optimizer=Adam(lr=self.learning_rate)) return model def remember(self, state, action, reward, next_state, done): self.memory.append((state, action, reward, next_state, done)) def act(self, state): if np.random.rand() <= self.epsilon: return random.randrange(self.action_size) act_values = self.model.predict(state) #print("act_values:") #print(act_values) return np.argmax(act_values[0]) # returns action def replay(self, batch_size): minibatch = random.sample(self.memory, batch_size) for state, action, reward, next_state, done in minibatch: target = reward if not done: target = (reward + self.gamma * np.amax(self.model.predict(next_state)[0])) target_f = self.model.predict(state) target_f[0][action] = target self.model.fit(state, target_f, epochs=1, verbose=0) #if self.epsilon > self.epsilon_min: # self.epsilon *= self.epsilon_decay def load(self, name): self.model.load_weights(name) def save(self, name): self.model.save_weights(name) if __name__ == "__main__": env = gym.make(\'CartPole-v0\') state_size = env.observation_space.shape[0] action_size = env.action_space.n #print(state_size) #print(action_size) agent = DQNAgent(state_size, action_size) done = False batch_size = 32 avg=0 for e in range(EPISODES): state = env.reset() state = np.reshape(state, [1, state_size]) for time in range(500): env.render() action = agent.act(state) next_state, reward, done, _ = env.step(action) reward = reward if not done else -10 next_state = np.reshape(next_state, [1, state_size]) agent.remember(state, action, reward, next_state, done) state = next_state if done: print("episode: /, score: , e: :.2" .format(e, EPISODES, time, agent.epsilon)) avg+=time break if len(agent.memory) > batch_size: agent.replay(batch_size) print("Avg score:".format(avg/1000))
基本思路:
让他自己训练玩这个游戏(每次应该左右移动的距离),基本思路就是:
本质上就是使用MLP训练(动作,得分)
这个得分是坚持时间的长短,如果时间长得分就高。
但是我感觉这个gym自己做了很多事情,比如度量奖励分数,action描述等。待进一步挖掘!
pytorch-21强化学习(dqn,deepqlearning)教程(代码片段)
要查看图文并茂的教程,请移步:http://studyai.com/pytorch-1.4/intermediate/reinforcement_q_learning.html本教程演示如何使用PyTorch在OpenAIGym的手推车连杆(CartPole-v0)任务上训练深度Q-学习的智能体(DeepQLearning(DQN)agent 查看详情
pytorch-21强化学习(dqn,deepqlearning)教程(代码片段)
...rning.html本教程演示如何使用PyTorch在OpenAIGym的手推车连杆(CartPole-v0)任务上训练深度Q-学习的智能体(DeepQLearning(DQN)agent)。任务(Task)智能体(agent)必须在两个动作(action)之间做出决定——向左或向右移动手推车(cart)——这样... 查看详情
深度强化学习 - CartPole 问题
】深度强化学习-CartPole问题【英文标题】:DeepReinforcementLearning-CartPoleProblem【发布时间】:2021-08-1323:03:57【问题描述】:我尝试实现最简单的深度Q学习算法。我认为,我已经正确地实施了它,并且知道深度Q学习与分歧作斗争,... 查看详情
强化学习库tianshou——dqn使用(代码片段)
强化学习库tianshou——DQN使用tianshou是清华大学学生开源编写的强化学习库。本人因为一些比赛的原因,有使用到强化学习,但是因为过于紧张与没有尝试快速复现强化学习的代码,并没有获得很好的成绩,故尝试... 查看详情
chatgpt使用拓展资料:强化学习dqn单模型双模型doubledqnduelingdqn
ChatGPT使用拓展资料:强化学习DQN单模型、双模型目录强化学习基础Q-LearningDQN单模型DQN双模型DoubleDQNDuelingDQNTransformers拓展资料强化学习基础在开始学习DQN之前,我们需要了解一些强化学习的基础知识。强化学习是一种机器学习方... 查看详情
强化学习(十三)策略梯度(policygradient)(代码片段)
...主要的问题主要有三点。 第一点是对连续动作的处理能力不足。DQN之类的方法一般都是只处理离散动作,无法处理连续动作。虽然有NAFDQN之类的变通方法,但是并不优雅。比如我们之前提到的经典的冰球世界(PuckWorld)强... 查看详情
dqn强化学习
pytorch比tenserflow简单。所以我们模仿用tensorflow写的强化学习。学习资料:本节的全部代码Tensorflow的100行DQN代码我制作的DQN动画简介我的DQNTensorflow教程我的强化学习教程PyTorch官网论文 PlayingAtariwithDeepReinforcementLearning要点Torch是... 查看详情
dqn(deepq-learning)入门教程(零)之教程介绍
...之后,我又不知道在哪里(YouTubeorB站杀我)看到了有人使用CNN网络玩飞翔的小鸟(FlappyBird)的游戏,当时我觉得,emm,竟然使用CNN就可以玩游戏,有意思,可以一试,然后发现,要用到DQN,再然后,又发现其是强化学习的知识... 查看详情
强化学习库tianshou——dqn使用(代码片段)
强化学习库tianshou——DQN使用tianshou是清华大学学生开源编写的强化学习库。本人因为一些比赛的原因,有使用到强化学习,但是因为过于紧张与没有尝试快速复现强化学习的代码,并没有获得很好的成绩,故尝试... 查看详情
强化学习学习资料汇总强化学习:q-learning与dqn(deepqnetwork)
python机器学习四(强化学习)DQN算法流程https://www.jianshu.com/p/42507aa63b05/https://www.jianshu.com/p/42507aa63b05/基于深度强化学习的智能体系结构参数调优基于深度强化学习的智能体系结构参数调优-知乎CAPES(ComputerAutomatedPerformanc... 查看详情
使用带有 DQN 算法的张量板
...UsingtensorboardwithaDQNalgorithm【发布时间】:2020-12-0402:09:43【问题描述】:对于强化学习,我读到张量板并不理想,因为它提供了每集和/或步骤的输入。由于在强化学习中有数千个步骤,它并没有为我们提供内容的概述。我在这里... 查看详情
004-dqn
什么是DQN今天我们会来说说强化学习中的一种强大武器,DeepQNetwork简称为DQN.GoogleDeepmind团队就是靠着这DQN使计算机玩电动玩得比我们还厉害. 强化学习与神经网络 之前我们所谈论到的强化学习方法都是比较传统的方式,... 查看详情
强化学习7日打卡营--使用gym游戏的预处理
最近参加完百度强化学习7日打卡营的学习班,初步了解了一些强化学习的算法。学习完后,试着开始玩玩atari的游戏,老师给了一个demo,https://github.com/PaddlePaddle/PARL/tree/develop/examples/DQN_variant,model,algorithm,agent等就不多说了,... 查看详情
自然语言处理:使用深度强化学习玩雅达利
论文名称:PlayingAtariwithDeepReinforcementLearning论文地址:http://www.cs.toronto.edu/~vmnih/docs/dqn.pdf相关论文:Human-levelcontrolthroughdeepreinforcementlearning论文地址:https://storage. 查看详情
actor-critic强化学习方法应用于cartpole-v1
...77深智研211班简介:本文结合Actor-Critic算法,针对CartPole-v1倒立摆小车环境进行了强化学习训练,最后成功实现了小车长时间维持平衡、奖励曲线收敛的理想效果。在实验过程中,我们发现,Actor-Critic算法的收... 查看详情
深度强化学习-dqn算法原理与代码(代码片段)
...-learning算法只能用于解决离散低维状态空间和动作空间类问题。DQN算法的核心就是用一个人工神经网络来代替Q-tabel,即动作价值函数。网络的输入为状态信息,输出为每个动作的价值,因此DQN算法可以用来解决连续... 查看详情
强化学习dqn经验回放是什么
...重放:强化学习由于state之间的相关性存在稳定性的问题,因为智能体去探索环境时采集到的样本是一个时间序列,样本之间具有连续性,所以需要打破时间相关性,解决的办法是在训练的时候存储当前训练的... 查看详情
强化学习dqn经验回放是什么
...重放:强化学习由于state之间的相关性存在稳定性的问题,因为智能体去探索环境时采集到的样本是一个时间序列,样本之间具有连续性,所以需要打破时间相关性,解决的办法是在训练的时候存储当前训练的... 查看详情