日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

dqn在训练过程中loss越来越大_[动手学强化学习] 2.DQN解决CartPole-v0问题

發(fā)布時(shí)間:2024/10/8 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dqn在训练过程中loss越来越大_[动手学强化学习] 2.DQN解决CartPole-v0问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

強(qiáng)化學(xué)習(xí)如何入門(mén):

強(qiáng)化學(xué)習(xí)怎么入門(mén)好??www.zhihu.com

最近在整理之前寫(xiě)的強(qiáng)化學(xué)習(xí)代碼,發(fā)現(xiàn)pytorch的代碼還是老版本的。

而pytorch今年更新了一個(gè)大版本,更到0.4了,很多老代碼都不兼容了,于是基于最新版重寫(xiě)了一下 CartPole-v0這個(gè)環(huán)境的DQN代碼。

  • 對(duì)代碼進(jìn)行了簡(jiǎn)化,網(wǎng)上其他很多代碼不是太老就是太亂;
  • 增加了一個(gè)動(dòng)態(tài)繪圖函數(shù);
  • 這次改動(dòng)可以很快就達(dá)到200步,不過(guò)后期不穩(wěn)定,還需要詳細(xì)調(diào)整下 探索-利用困境。

CartPole-v0環(huán)境:

Gym: A toolkit for developing and comparing reinforcement learning algorithms?gym.openai.com

DQN CartPole-v0源碼,歡迎fork和star:

https://github.com/hangsz/reinforcement_learning?github.com

需要安裝gym庫(kù)和pytorch

gym安裝方式:pip install gym

pytorch(選擇適合自己的版本): https://pytorch.org/get-started/locally/

動(dòng)畫(huà):

https://www.zhihu.com/video/1193285883359604736# coding: utf-8__author__ = 'zhenhang.sun@gmail.com' __version__ = '1.0.0'import gym import math import randomimport torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optimclass Net(nn.Module):def __init__(self, input_size, hidden_size, output_size):super().__init__()self.linear1 = nn.Linear(input_size, hidden_size)self.linear2 = nn.Linear(hidden_size, output_size)def forward(self, x):x = F.relu(self.linear1(x))x = self.linear2(x)return xclass Agent(object):def __init__(self, **kwargs):for key, value in kwargs.items():setattr(self, key, value)self.eval_net = Net(self.state_space_dim, 256, self.action_space_dim)self.optimizer = optim.Adam(self.eval_net.parameters(), lr=self.lr)self.buffer = []self.steps = 0def act(self, s0):self.steps += 1epsi = self.epsi_low + (self.epsi_high-self.epsi_low) * (math.exp(-1.0 * self.steps/self.decay))if random.random() < epsi:a0 = random.randrange(self.action_space_dim)else:s0 = torch.tensor(s0, dtype=torch.float).view(1,-1)a0 = torch.argmax(self.eval_net(s0)).item()return a0def put(self, *transition):if len( self.buffer)==self.capacity:self.buffer.pop(0)self.buffer.append(transition)def learn(self):if (len(self.buffer)) < self.batch_size:returnsamples = random.sample( self.buffer, self.batch_size)s0, a0, r1, s1 = zip(*samples)s0 = torch.tensor( s0, dtype=torch.float)a0 = torch.tensor( a0, dtype=torch.long).view(self.batch_size, -1)r1 = torch.tensor( r1, dtype=torch.float).view(self.batch_size, -1)s1 = torch.tensor( s1, dtype=torch.float)y_true = r1 + self.gamma * torch.max( self.eval_net(s1).detach(), dim=1)[0].view(self.batch_size, -1)y_pred = self.eval_net(s0).gather(1, a0)loss_fn = nn.MSELoss()loss = loss_fn(y_pred, y_true)self.optimizer.zero_grad()loss.backward()self.optimizer.step()# coding: utf-8__author__ = 'zhenhang.sun@gmail.com' __version__ = '1.0.0'import gym from IPython import display import matplotlib.pyplot as pltfrom dqn import Agentdef plot(score, mean):display.clear_output(wait=True)display.display(plt.gcf())plt.figure(figsize=(20,10))plt.clf()plt.title('Training...')plt.xlabel('Episode')plt.ylabel('Duration')plt.plot(score)plt.plot(mean)plt.text(len(score)-1, score[-1], str(score[-1]))plt.text(len(mean)-1, mean[-1], str(mean[-1]))if __name__ == '__main__':env = gym.make('CartPole-v0')params = {'gamma': 0.8,'epsi_high': 0.9,'epsi_low': 0.05,'decay': 200, 'lr': 0.001,'capacity': 10000,'batch_size': 64,'state_space_dim': env.observation_space.shape[0],'action_space_dim': env.action_space.n }agent = Agent(**params)score = []mean = []for episode in range(1000):s0 = env.reset()total_reward = 1while True:env.render()a0 = agent.act(s0)s1, r1, done, _ = env.step(a0)if done:r1 = -1agent.put(s0, a0, r1, s1)if done:breaktotal_reward += r1s0 = s1agent.learn()score.append(total_reward)mean.append( sum(score[-100:])/100)plot(score, mean)

總結(jié)

以上是生活随笔為你收集整理的dqn在训练过程中loss越来越大_[动手学强化学习] 2.DQN解决CartPole-v0问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美专区在线播放 | 欧美三级在线视频 | 亚洲国产精 | 在线观看欧美成人 | 国产欧美综合视频 | 亚洲情热 | 亚洲av成人精品日韩在线播放 | 国产三区四区视频 | 一区在线观看视频 | 脱美女衣服亲摸揉视频 | 精品少妇人妻av免费久久洗澡 | 国产成人在线观看免费网站 | 男女视频国产 | 国产寡妇亲子伦一区二区三区四区 | 亚洲国产综合在线 | av一本二本| 三级视频在线看 | aaa国产| 国产福利一区二区 | 国产日本一区二区三区 | 国产高清不卡 | 美女100%露胸无遮挡 | 夜夜嗷| 日本涩涩视频 | 伊人激情在线 | a√天堂在线 | 色综合天天综合网天天狠天天 | 王者后宫yin肉h文催眠 | www.久久久.com | 全部孕妇毛片丰满孕妇孕交 | 国模吧无码一区二区三区 | 国产网红女主播精品视频 | 日韩中文字幕在线免费观看 | 狗爬女子的视频 | 欧美韩日精品 | 欧美亚韩一区二区三区 | 中文字幕一区二区三区免费看 | 亚洲欧美日本另类 | 日本成人免费在线 | 狠狠操免费视频 | 艳妇臀荡乳欲伦交换在线看 | 可以看毛片的网站 | 日本熟妇一区二区 | 国产午夜在线播放 | 国产高清自拍av | ass亚洲肉体欣赏pics | 国产113页 | 亚洲色图激情 | 男生操女生在线观看 | 在线观看第一页 | 国产欧美日韩精品一区二区三区 | 人妻少妇精品中文字幕av蜜桃 | 精品一区免费观看 | 日本少妇xxxxxx | 国产一区在线视频观看 | 最新黄色网址在线观看 | 91视频中文字幕 | 日日噜噜噜夜夜爽爽狠狠 | 国产成人精品自拍 | 黄色复仇草 | 厕拍极品| 九色视频91 | 手机在线一区 | 黄色性情网站 | 日韩精品国产精品 | 天天操天天爽天天干 | 日本一区二区三区欧美 | 国产精品一级片 | 日日噜噜夜夜狠狠久久丁香五月 | 丁香激情五月 | 日本黄色大片在线观看 | 公车乳尖揉捏酥软呻吟 | 国产一区视频免费观看 | 天天干天天天天 | 无码人妻精品一区二区三区蜜桃91 | 国产精品永久免费观看 | 国产精品国产精品国产专区不片 | 手机在线看黄色 | 国产一区不卡在线 | 孕妇疯狂做爰xxxⅹ 国产精品乱码久久久久久 99久久久成人国产精品 | 99色99| www黄色网址 | 国产熟妇搡bbbb搡bbbb搡 | 51av在线| 午夜h视频 | 国产区视频在线 | 99re在线视频免费观看 | 麻豆天天躁天天揉揉av | 久久久久久一区二区三区 | a级黄色片 | 国产男女猛烈无遮挡a片漫画 | 在线看的网站 | 免费人成自慰网站 | 超碰视屏 | 窝窝午夜理论片影院 | 9色91| 99久久久精品 | 中国少妇乱子伦视频播放 | 秋霞网一区 |