建设网站的app虞城seo代理地址

web/2025/10/6 8:14:38/文章来源:
建设网站的app,虞城seo代理地址,网站导航网址大全,做网站提成简介 DQN#xff0c;即深度Q网络#xff08;Deep Q-network#xff09;#xff0c;是指基于深度学习的Q-Learing算法。Q-Learing算法维护一个Q-table#xff0c;使用表格存储每个状态s下采取动作a获得的奖励#xff0c;即状态-价值函数Q(s,a)#xff0c;这种算法存在很…简介 DQN即深度Q网络Deep Q-network是指基于深度学习的Q-Learing算法。Q-Learing算法维护一个Q-table使用表格存储每个状态s下采取动作a获得的奖励即状态-价值函数Q(s,a)这种算法存在很大的局限性。在现实中很多情况下强化学习任务所面临的状态空间是连续的存在无穷多个状态这种情况就不能再使用表格的方式存储价值函数。 为了解决这个问题我们可以用一个函数Q(s,a;w)来近似动作-价值Q(s,a)称为价值函数近似Value Function Approximation我们用神经网络来生成这个函数Q(s,a;w)称为Q网络Deep Q-networkw是神经网络训练的参数。 Q-Learning参考https://blog.csdn.net/niulinbiao/article/details/133659036 DQN相较于传统的强化学习算法Q-learning有三大重要的改进 引入深度学习中的神经网络利用神经网络去拟合Q-learning中的Q表解决了Q-learning中当状态维数过高时产生的“维数灾难”问题 固定Q目标网络利用延后更新的目标网络计算目标Q值极大的提高了网络训练的稳定性和收敛性 引入经验回放机制使得在进行网络更新时输入的数据符合独立同分布打破了数据间的相关性。 本文还增加了动态探索概率也就是随着模型的训练我们有必要减少探索的概率 DQN的算法流程如下 首先算法开始前随机选择一个初始状态然后基于这个状态选择执行动作这里需要进行一个判断即是通过Q-Network选择一个Q值最大对应的动作还是在动作空间中随机选择一个动作。在程序编程中由于刚开始时Q-Network中的相关参数是随机的所以在经验池存满之前通常将设置的很小即初期基本都是随机选择动作。在动作选择结束后agent将会在环境Environment中执行这个动作随后环境会返回下一状态S_和奖励R这时将四元组SARS_存入经验池。接下来将下一个状态S_视为当前状态S重复以上步骤直至将经验池存满。当经验池存满之后DQN中的网络开始更新。即开始从经验池中随机采样将采样得到的奖励R和下一个状态S_送入目标网络计算下一Q值y并将y送入Q-Network计算loss值开始更新Q-Network。往后就是agent与环境交互产生经验SARS_并将经验放入经验池然后从经验池中采样更新Q-Network周而复始直到Q-Network完成收敛。 DQN中目标网络的参数更新是硬更新即主网络Q-Network参数更新一定步数后将主网络更新后的参数全部复制给目标网络Target Q-Network。在程序编程中通常将设置成随训练步数的增加而递增即agent越来越信任Q-Network来指导动作。 代码实现 1、环境准备 我们选择openAI的gym环境作为我们训练的环境 env1 gym.make(CartPole-v0)2、编写经验池函数 经验池的主要内容就是存数据和取数据 import random import collections from torch import FloatTensorclass ReplayBuffer(object):# 初始化def __init__(self, max_size, num_steps1 )::param max_size: 经验吃大小:param num_steps: 每经过训练num_steps次后,函数就学习一次self.buffer collections.deque(maxlenmax_size)self.num_steps num_stepsdef append(self, exp):想经验池添加数据:param exp: :return: self.buffer.append(exp)def sample(self, batch_size):向经验池中获取batch_size个obs_batch,action_batch,reward_batch,next_obs_batch,done_batch这样的数据:param batch_size: :return: mini_batch random.sample(self.buffer, batch_size)obs_batch, action_batch, reward_batch, next_obs_batch, done_batch zip(*mini_batch)obs_batch FloatTensor(obs_batch)action_batch FloatTensor(action_batch)reward_batch FloatTensor(reward_batch)next_obs_batch FloatTensor(next_obs_batch)done_batch FloatTensor(done_batch)return obs_batch,action_batch,reward_batch,next_obs_batch,done_batchdef __len__(self):return len(self.buffer)3、神经网络模型 我们简单地使用神经网络 import torchclass MLP(torch.nn.Module):def __init__(self, obs_size,n_act):super().__init__()self.mlp self.__mlp(obs_size,n_act)def __mlp(self,obs_size,n_act):return torch.nn.Sequential(torch.nn.Linear(obs_size, 50),torch.nn.ReLU(),torch.nn.Linear(50, 50),torch.nn.ReLU(),torch.nn.Linear(50, n_act))def forward(self, x):return self.mlp(x)4、探索率衰减函数 随着训练过程我们动态地减小探索率因为训练到后面模型会越来越收敛没必要继续探索 #!/usr/bin/env python # -*- coding:utf-8 -*- import numpy as npclass EpsilonGreedy():def __init__(self,n_act,e_greed,decay_rate):self.n_act n_actself.epsilon e_greedself.decay_rate decay_ratedef act(self,predict_func,obs):if np.random.uniform(0, 1) self.epsilon: # 探索action np.random.choice(self.n_act)else: # 利用action predict_func(obs)self.epsilon max(0.01,self.epsilon-self.decay_rate) #是探索率最低为0.01return action 5、DQN算法 import copyimport numpy as np import torch from utils import torchUtils# 添加探索值递减的策略 class DQNAgent(object):def __init__( self, q_func, optimizer, replay_buffer, batch_size, replay_start_size,update_target_steps, n_act,explorer, gamma0.9)::param q_func: Q函数:param optimizer: 优化器:param replay_buffer: 经验回放器:param batch_size: 批次数量:param replay_start_size: 开始回放的次数:param update_target_steps: 经过多少步才会同步target网络:param n_act: 动作数量:param gamma: 收益衰减率:param e_greed: 探索与利用中的探索概率self.pred_func q_funcself.target_func copy.deepcopy(q_func)self.update_target_steps update_target_stepsself.explorer explorerself.global_step 0 #全局self.rb replay_bufferself.batch_size batch_sizeself.replay_start_size replay_start_sizeself.optimizer optimizerself.criterion torch.nn.MSELoss()self.n_act n_act # 动作数量self.gamma gamma # 收益衰减率# 根据经验得到actiondef predict(self, obs):obs torch.FloatTensor(obs)Q_list self.pred_func(obs)action int(torch.argmax(Q_list).detach().numpy())return action# 根据探索与利用得到actiondef act(self, obs):return self.explorer.act(self.predict,obs)def learn_batch(self,batch_obs, batch_action, batch_reward, batch_next_obs, batch_done):# predict_Qpred_Vs self.pred_func(batch_obs)action_onehot torchUtils.one_hot(batch_action, self.n_act)predict_Q (pred_Vs * action_onehot).sum(1)# target_Qnext_pred_Vs self.target_func(batch_next_obs)best_V next_pred_Vs.max(1)[0]target_Q batch_reward (1 - batch_done) * self.gamma * best_V# 更新参数self.optimizer.zero_grad()loss self.criterion(predict_Q, target_Q)loss.backward()self.optimizer.step()def learn(self, obs, action, reward, next_obs, done):self.global_step1self.rb.append((obs, action, reward, next_obs, done))#当经验池中到的数据足够多时并且满足每训练num_steps轮就更新一次参数if len(self.rb) self.replay_start_size and self.global_step%self.rb.num_steps0:self.learn_batch(*self.rb.sample(self.batch_size))#我们每训练update_target_steps轮就同步目标网络if self.global_step%self.update_target_steps0:self.sync_target()# 同步target网络def sync_target(self):for target_param,param in zip(self.target_func.parameters(),self.pred_func.parameters()):target_param.data.copy_(param.data)6、训练代码 import dqn,modules,replay_buffers import gym import torch from explorers import EpsilonGreedyclass TrainManager():def __init__(self,env, #环境episodes1000, #轮次数量batch_size32, #每一批次的数量num_steps4, #进行学习的频次memory_size 2000, #经验回放池的容量replay_start_size 200, #开始回放的次数update_target_steps200, #经过训练update_target_steps次后将参数同步给target网络lr0.001, #学习率gamma0.9, #收益衰减率e_greed0.1, #探索与利用中的探索概率e_greed_decay1e-6, #探索率衰减值):self.env envself.episodes episodesn_act env.action_space.nn_obs env.observation_space.shape[0]q_func modules.MLP(n_obs, n_act)optimizer torch.optim.AdamW(q_func.parameters(), lrlr)rb replay_buffers.ReplayBuffer(memory_size,num_steps)explorer EpsilonGreedy(n_act,e_greed,e_greed_decay)self.agent dqn.DQNAgent(q_funcq_func,optimizeroptimizer,replay_buffer rb,batch_sizebatch_size,update_target_stepsupdate_target_steps,replay_start_size replay_start_size,n_actn_act,explorer explorer,gammagamma)# 训练一轮游戏def train_episode(self):total_reward 0obs self.env.reset()while True:action self.agent.act(obs)next_obs, reward, done, _ self.env.step(action)total_reward rewardself.agent.learn(obs, action, reward, next_obs, done)obs next_obsif done: breakprint(e_greed,self.agent.explorer.epsilon)return total_reward# 测试一轮游戏def test_episode(self):total_reward 0obs self.env.reset()while True:action self.agent.predict(obs)next_obs, reward, done, _ self.env.step(action)total_reward rewardobs next_obsself.env.render()if done: breakreturn total_rewarddef train(self):for e in range(self.episodes):ep_reward self.train_episode()print(Episode %s: reward %.1f % (e, ep_reward))#每训练100轮我们就测试一轮if e % 100 0:test_reward self.test_episode()print(test reward %.1f % (test_reward))if __name__ __main__:env1 gym.make(CartPole-v0)tm TrainManager(env1)tm.train()实现效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

铭做网站建设企业网站排名优化哪家好

立体井字棋 题目大意&#xff1a; 在一个nnn的正方体中&#xff0c;由n个格子连成一条直线的方案数&#xff08;多少种可能用n个格子连成一条直线&#xff09; 样例输入 2 样例输出 28 数据范围限制 对于30%的数据&#xff0c; n<10&#xff1b; 对于100%的数据&am…

自己开发电商网站难吗做企业网站需要的人

其实&#xff0c;在 HT for Web 中&#xff0c;有多种手段可以用来实现动画。我们这里仍然用直升机为例&#xff0c;只是更换了场景。增加了巡游过程。 使用 HT 开发的一个简单网页直升机巡逻动画&#xff08;Hightopo 使用心得&#xff08;5&#xff09;&#xff09; 这里主…

农用地转建设用地结果查询网站做dw网站图片怎么下载

如果要想知道确切的当前网站IIS连接数的话&#xff0c;最有效的方法是通过windows自带的系统监视器来查看。 一、运行-->输入“perfmon.msc”. 二、在“系统监视器”图表区域里点击右键&#xff0c;然后点“添加计数器”. 三、在“添加计数器”窗口&#xff0c;“性能对象”…

hdsyscms企业建站系统什么类型的网站流量高

A.Cover in Water 题意&#xff1a; 有一个 1 n 1 \times n 1n的水池&#xff0c;里面有些格子可以加水&#xff0c;有些格子是被堵上的&#xff0c;你可以进行以下两种操作&#xff1a; 1.往一个空的格子里加水 2.移除一个有水的格子中的水&#xff0c;并将这些水添加到另…

南京网站制作建设建设银行扬中网站

在高并发查询、查询需要涉及很多个分区的情况下&#xff0c;低版本的 glibc&#xff08;低于2.23&#xff09;会严重影响查询性能。需要升级 glibc 解决该问题优化性能。我们撰写了本文&#xff0c;通过 patchelf 工具修改可执行文件和动态库的 rpath&#xff0c;达到无需升级系…

设计网站musil怎么识别网站开发语言

引言&#xff1a; 前面贝蒂已经给大家介绍了选择&#xff0c;循环结构~&#xff0c;今天贝蒂就基于这两种结构&#xff0c;为大家讲解一种捣蛋小游戏的设计思路和方法哦。 1.游戏要求 游戏要求&#xff1a; 1. 电脑⾃动⽣成1~100的随机数 2. 玩家猜数字&#xff0c;猜数字的过…

asp.net 网站计数器广州深圳做网站

1每日温度 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 示例 1: 输入…

网站备案 工信部建设网站建设哪里好

参考资料 正点原子《领航者 ZYNQ 之嵌入式 SDK 开发指南》详细的配置资料中都有介绍&#xff0c;本文只针对个人实验需求进行简要说明 固化流程 调试阶段是通过 JTAG 接口将 FPGA 配置文件和应用程序下载到 ZYNQ 器件中。但在实际应用中需要程序在上电或者复位时让程序自动运…

纹身网站设计wordpress上传课件

经观察&#xff0c;推拉转任务在两三天时间内就失效了。 1 用脚本每天定时启动一次 wvp docker 容器, 并关闭所有推拉转任务&#xff0c;建议每天凌晨2点运行 import subprocess import time import socket import requestsdef restart_container(container_name):subprocess…

网站建设林晓东九龙坡建站公司

完整源代码项目地址&#xff0c;关注博主私信’源代码’后可获取 1.问题描述2.问题分析3.算法设计4.完整的程序 1&#xff0e;问题描述 假设银行一年整存零取的月息为0.63%。现在某人手中有一笔钱&#xff0c;他打算在今后5年中的每年年底取出1000元&#xff0c;到第5年时刚…

蛋糕网站制作答辩黄埔企业网站建设

一、宽度自适应 语法&#xff1a;width:100%; 注&#xff1a; a&#xff09;块状元素的默认宽度为100% b) 当给元素设置宽度为100%时&#xff0c;继承父元素的宽度 c) 通常使用宽度自适应实现通栏效果 二、高度自适应 语法&#xff1a;height:auto;&#xff08;等同于不给元…

枣庄网站优化自学网站建设视频

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨IT界的两大巨头交锋✨ &#x1f44b; 在IT界的广阔天地中&#xff0c;有两座…

广告图片网站罗湖做网站的公司哪家好

报错解释&#xff1a; 这个错误表明系统尝试执行的脚本文件 D:\Anaconda\Scripts\pip-script.py 不存在。这通常发生在尝试使用 pip 时&#xff0c;但 pip 没有正确安装或者路径设置不正确时。 解决方法&#xff1a; 确认 pip 是否已经安装在 Anaconda 中。可以通过 Anaconda…

平湖市住房和城乡规划建设局网站金华大企业网站建设有哪些

为什么要动态渲染&#xff1f; 比如我们现在需要以下侧边栏的数据&#xff1a; 如果一个个的去写标签会很麻烦&#xff0c;发现导航栏中的数据分为两类&#xff0c;一类是一级导航&#xff0c;另一位是二级导航&#xff08;有子页&#xff09;&#xff0c;因此直接写两个函数判…

网站建设好弄吗高新手机网站建设价格

文章目录 MapReduce 编程&#xff1a;join操作和聚合操作一、实验目标二、实验要求及注意事项三、实验内容及步骤 附&#xff1a;系列文章 MapReduce 编程&#xff1a;join操作和聚合操作 一、实验目标 理解MapReduce计算框架的分布式处理工作流程掌握用mapreduce计算框架实现…

网站模板定做吴忠网页设计

使用git submodule git submodule add https://github.com/username/subproject.git使用cmake导入 FetchContent 实际使用的话,有下面的三点总结 关于FetchContent,若并需要修改 配置以及编译的默认值的时候,推荐首要使用该方法。include(FetchContent)set(JSON_C_TAG jso…

体育类网站模板滨海做网站哪家好

SQL Select语句完整的执行顺序&#xff1a; 1、from子句组装来自不同数据源的数据&#xff1b; &#xff08;先join在on&#xff09; 2、where子句基于指定的条件对记录行进行筛选&#xff1b; 3、group by子句将数据划分为多个分组&#xff1b; 4、使用聚集函数进行计算&a…

简述如何对网站进行推广?大型网站开发企业

大家好&#xff0c;这几天试着从Github上拉取AspNetCore的源码&#xff0c;尝试着通过Visual Studio 打开&#xff0c;但是并不尽人意。我们需要去构建我们拉去的源代码&#xff0c;这样才可以通过VisualStudio可还原的项目。毕竟AspNetCore是一个巨型的项目集。先决条件在Wind…

手表网站 欧米茄羽毛球赛事重播

列表的作用&#xff1a; 整齐、整洁、有序&#xff0c;它作为布局会更加自由和方便。 根据使用情景不同&#xff0c;列表可以分为三大类&#xff1a;无序列表、有序列表和自定义列表 无序列表 <ul> 标签表示 HTML 页面中项目的无序列表&#xff0c;一般会以项目符号呈…

建站行业消失了吗网站建设与维护岗位职责

1.MySQL请求处理 1.1.查询缓存 MySQL 服务器程序处理查询请求时&#xff0c;会把刚刚处理过的查询请求和结果缓存起来&#xff0c;如果下一次有一模一样的请求过来&#xff0c;直接从缓存中查找结果就好了&#xff0c;就不用再傻呵呵的去底层的表中查找了。这个查询缓存可以在不…