代码:

# -*- 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_modelEPISODES = 1000class DQNAgent:def __init__(self, state_size, action_size):self.state_size = state_sizeself.action_size = action_sizeself.memory = deque(maxlen=2000)self.gamma = 0.95    # discount rate#self.epsilon = 1.0  # exploration rateself.epsilon = 0.4  # exploration rateself.epsilon_min = 0.01self.epsilon_decay = 0.995self.learning_rate = 0.001self.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 Modelmodel = 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 modeldef 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 actiondef replay(self, batch_size):minibatch = random.sample(self.memory, batch_size)for state, action, reward, next_state, done in minibatch:target = rewardif not done:target = (reward + self.gamma *np.amax(self.model.predict(next_state)[0]))target_f = self.model.predict(state)target_f[0][action] = targetself.model.fit(state, target_f, epochs=1, verbose=0)#if self.epsilon > self.epsilon_min:#    self.epsilon *= self.epsilon_decaydef 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 = Falsebatch_size = 32avg=0for 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 -10next_state = np.reshape(next_state, [1, state_size])agent.remember(state, action, reward, next_state, done)state = next_stateif done:print("episode: {}/{}, score: {}, e: {:.2}".format(e, EPISODES, time, agent.epsilon))avg+=timebreakif len(agent.memory) > batch_size:agent.replay(batch_size)print("Avg score:{}".format(avg/1000))

基本思路:

让他自己训练玩这个游戏(每次应该左右移动的距离),基本思路就是:

本质上就是使用MLP训练(动作,得分)

这个得分是坚持时间的长短,如果时间长得分就高。

但是我感觉这个gym自己做了很多事情,比如度量奖励分数,action描述等。待进一步挖掘!

转载于:https://www.cnblogs.com/bonelee/p/9146540.html

DQN 处理 CartPole 问题——使用强化学习,本质上是训练MLP,预测每一个动作的得分...相关推荐

  1. 深度强化学习综述(上)

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 人工智能 ...

  2. 【DQN】解析 DeepMind 深度强化学习 (Deep Reinforcement Learning) 技术

    原文:http://www.jianshu.com/p/d347bb2ca53c 声明:感谢 Tambet Matiisen 的创作,这里只对最为核心的部分进行的翻译 Two years ago, a ...

  3. 基于强化学习与深度强化学习的游戏AI训练

    github地址 一.摘要 在本次大作业中由两个项目组成. 第一个小项目即为简单AI走迷宫游戏,通过强化学习的Q-learning算法,对AI进行训练来让其能以大概率找打一条通关路径并基本按照该路径进 ...

  4. “强化学习之父”萨顿:预测学习马上要火,AI将帮我们理解人类意识

    李杉 编译自 KDnuggets 量子位 出品 | 公众号 QbitAI 地处加拿大埃德蒙顿的阿尔伯塔大学(UAlberta)可谓是强化学习重镇,这项技术的缔造者之一萨顿(Rich Sutton)在这 ...

  5. 深度强化学习之:PPO训练红白机1942

    本篇是深度强化学习动手系列文章,自MyEncyclopedia公众号文章深度强化学习之:DQN训练超级玛丽闯关发布后收到不少关注和反馈,这一期,让我们实现目前主流深度强化学习算法PPO来打另一个红白机 ...

  6. 第七章 深度强化学习-深度Q网络系列1(Deep Q-Networks,DQN)

    获取更多资讯,赶快关注上面的公众号吧! 文章目录 第七章 深度强化学习-深度Q网络 7.1 学习目标 7.2 深度学习和强化学习的区别 7.3 DQN原理 7.4 DQN算法 7.4.1 预处理 7. ...

  7. 在Unity环境中使用强化学习训练Donkey Car(转译)

    在Unity环境中使用强化学习训练Donkey Car 1.Introduction 简介 2. Train Donkey Car with Reinforcement Learning 使用强化学习 ...

  8. 《EasyRL》强化学习笔记

    文章目录 概览 基本概念 系统构成 Agent与环境 策略 奖赏函数 值函数 环境模型 强化学习分类 强化学习与监督学习|非监督学习的区别 例子:playing pong 新技术:深度强化学习 马尔科 ...

  9. dpg learning 和q_深度学习和强化学习之间的差别有多大?

    我是做深度强化学习的(Deep Reinforcement Learning)的,这个问题有趣.我对@张馨宇他在此问题下的简洁回答非常认同:"可以用深度学习这个工具来做强化学习这个任务,也可 ...

最新文章

  1. munin监控windos机子
  2. php web目录结构,目录结构
  3. VB 长整型和字节数组的转换问题 (LongByte)
  4. C++基础回顾-强制类型转换
  5. 机器学习(十)——因子分析
  6. 行驶在傍山的道路上_进藏线上那些唯美弯道,行驶中却充满风险,自驾游要注意几个事项...
  7. 2021 re:Invent ,我们到底该关注哪些发布?
  8. Python深度学习:常见优化算法
  9. 微信小程序 和公众号 内嵌网页或H5页面记录
  10. Magento清空购物车
  11. 推荐8个值得推荐的神器软件和网站
  12. 十年HRD总结3个逆向思维的招聘方法
  13. bway ESL电竞联赛十六季C组对战前瞻 三组战队情报分析
  14. esp32 + python 呼吸灯实现
  15. 华为诺亚方舟实验室招聘实习生
  16. 单片机ch2o程序_基于单片机的甲醛浓度检测仪的设计_李娟娟
  17. 细胞培养常见问题分析
  18. 生活充满欺骗,不由你不信
  19. Python 爬虫进阶篇——Selenium教程(一)
  20. 2021年材料员-岗位技能(材料员)考试技巧及材料员-岗位技能(材料员)试题及答案

热门文章

  1. 鼠标点击触发事件python_如何在鼠标按下的情况下触发tkinter的“Enter”事件?...
  2. Jmeter性能测试之Switch控制器使用
  3. TestNG测试框架之失败测试重跑
  4. 第五章5.1 strace
  5. 大数据SQL日常学习——NVL函数
  6. linux注册硬盘中断,基于Linux底层硬盘中断辅助代码的分析与设计
  7. 设置刻度线_6.19 坐标轴:(补充)针对坐标轴线和小刻度线太细的问题
  8. Linux命令学习之nslookup
  9. 【响应式Web前端设计】Viewport解析
  10. 【微信小程序企业级开发教程】界面刷新获取新更新数据