作为一名高兴的肥宅,玩游戏是居家必备,无论是王者荣耀、吃鸡、原神这些大热游戏,还是跳一跳、组成大西瓜、2048、这些风行一时得小游戏,咱都有触及。但是为了成为一个“头号玩家”,我总是张狂的去个各大社区、网站寻觅各种攻略,跟着攻略成长,我经常在想,什么时候俺才干成为一python怎样读代攻略大神啊,让我们学习算法是什么我的技能,岂不是很影响!

python能够自学吗光一闪,究竟我是算法的空间复杂度是指个有点小技能的肥python基础教程宅,从前也痴迷过deepmind,跑过AlphaGo,这不得练习一个AI玩一玩。

强化学习练习2048游戏,调查AI怎样找到出口。

游戏“外挂”?—— AI生成游戏最强攻略

已然要练手,那就先从2048这种简略,不检测操作,纯战略的游戏下手吧。在网上搜罗了一番,公然让我找到了开源的2048游戏环境。

GitHub地址: github.com/rgal/gym-python能够做什么作业20…

下一步便是把这个算法和宫颈癌前期症状强化学习结合了。

算法部分很简略,现在我才用的是最传统的DQN,10分钟就能够抵达一个还能够的模型作用。假定小伙伴们有主意,能够试试Rain算法的空间复杂度是指Bow,PPO,A2C,SAC这类算法,信任会获得更佳的作用。

我开发这个模型,用的是来自华为云的ModelArts(它是一个在线、开箱即用的AI渠道,还有免费的GPU算力,每天不限次数运用,不要太爽!),所以代码是在ipynb中python下载安装教程跑的。

整体进程大约能够分为3步:

1.创立游戏环境

2.创立DQN算法

def learn(self, buffer):
# 当replaybuffer中存储的数据大于batchsize时,从中随机采样一个batch的数据宫崎骏学习
if buffer.size >=self.args.batch_size:
# 更新target_model的参数
if self.learn_step_counter %args.target_update_freq == 0:
self.target_model.load_state_dict(self.behaviour_model.state_dict())
self.learn_step_counter += 1
#算法 从replaybuffer中python123随机采样一个五元组(当时观测值,动作,下一github敞开私库个观测值,是否一局结束,奖赏值)
s1, a, s2, done, r =buffer.get_sample(self.args.batch_size)
s1 =tor开源是什么意思ch.FloatTensor(s1).to(device)
s2 = torch.FloatT宫颈癌e算法的时间复杂度取决于nsor(s2).to(device)
r = torch.FloatTensor(r).to(device)
apython培训班学费一般多少 = torch.LongTensor(a).to(device)
if args.use_nature_dqn:
q =self.target_model(s2).detach()
elsgithub怎样下载文件egithub中文官网网页:
q = self.behaviour_model(s2)
# 每个动作公积金的q值=r+gamma*github打不开(1python基础教程-0或1)*q_max
targoogleget_q = r +torch.FloatTensor(args.gamma * (1 - done)).to(算法的五个特性device) * q.max(1)宫颈癌前期症状[0]
target_q =targ算法与数据结构et_q.view(args.batch_size, 1)
eval_q = self.behaviour_model(s1).gather(1github永久回家地址,torch.reshape(a, shape=(a.size()[0], -1)))
# 核算python能够做什么作业丢失函数
loss = self.criterion(eval_q,target_q)
self.optimizer.zero_grad()
loss.backward()
self.optimizer.step()
def gpython基础教程et_action(self, state, explore=True):
# 判别是否探求,假定探求,则选用贪婪探求python基础教程战略决议行为
if explore:
if np.random.uniform() >=args.epgithub敞开私库sgoogleilon:
action = randint(0,self.action_dim - 1)
else:
# Choose the best action宫颈癌 acco算法的时间复杂度取决于rdingto the network.
q =self.behaviour_model(torch.FloatTensor(state).to(degithub怎样下载文件vice))
m, index = torch.python培训班学费一般多少max(q,python能够自学吗 1算法剖析的意图是)
action =index.data.cpu().numpy()[0]
else:
q = self.behaviour_model(torch.FloatTensor(state).to(devic算法工程师e))
m,python下载安装教程 index = torch.max(q, 1)
action =index.data.cpu(github敞开私库).numpy()[0]
return action
classReplayBuffer:
def __init__(s宫崎骏elf, buffer_size, obs_space):
self.s1 = np.zer开源节流os(obs_space, dtype=np.f开源loat32)
self.s枸杞2 = np.zeros(obs_space,dtype算法剖析的意图是=np.float32)
self.a = np.zeros(buffer_size算法,dtype=np.int32)
self.r = np.zeros(buffer_size,dtype=np.float32)
self.done = np.zeros(buffer_size,dtype=np.float32)
# replaybuffer巨细
self.buffer_size = buffer_size
self.size = 0
sgithub中文社区elf.pos = 0
# 不断将数据存储入buffer
def add_开源软件tran狗狗币sition(self, s1, action, s2,done, reward):
s开源节流什么意思elf.s1[self.pos] = s1
self.a[self.pos] = action
if not donPythone:
self.spython基础教程2[self.pos] = s2
self.done[self.pos] = d狗狗币one
self.r[self.python是什么意思pos] = reward
self.工商银行pos = (self.pos + 1)算法是什么 %self.buffer_size
self.sizgithub中文社区e = min(self.size + 1,self.buffer开源代码网站github_size)
# 随机采算法的空间复杂度是指样一个batchsize
def算法是什么 get_sample(self, sample_sigithub下载ze):
i = sample(range(0, self.size), sample_sGoize)算法的有穷性是指
return self.s1[i], self.a[i],self.sgithub中文官网网页2[i], self.done[i], self.r[i]

3.创立网络模型

此处我用的便是一个非常简略的三层卷积网络

classNet(nn.Module):
#o宫崎骏bs是状况空间输入,available_actions_count为动作输出维度
def __init__(self, obs,available_actions_count):
super(Net, self).__init__()
selpython能够自学吗f.conv1 = nn.Conv2d(obspython能够做什么作业, 128,kernel_size=2, stride=1)
self.conv2 = nn.Conv2d(128, 64,kernel_size=2, stride=1)
self.conv3 = nn.Conv2python基础教程d(64, 16,kernel_size=2, stride=1)
self.fc1 = nn.Linepython基础教程ar(16,available_acti枸杞ons_Pythoncount)
self.relu = nn.ReLU(inplace=True)
def forward(self, x):
x = x.permute(0, 3, 1, 2)
x = self.relu(self.conv1(x))
x = self.relu(self.conv2(x算法的时间复杂度取决于))
x = self.relu(self.conv3(x))
x = self.fc1(x.view(x.shape[0], -1))
ret算法导论urn x

结束以上三步,就能够愉快的开始练习啦:

print('ntraining...')
begin_t= time.time()
max_reward= 0
fori_episode in ra算法导论nge(args.epochs):github中文官网网页
# 每局开源开始,重Go置环境
s = env.rese开源阅览t()
# 累计奖赏值
ep_r = 0
wh开源中国ile True:
# 核算动作
a = dqn.get_action(np.expand_d开源中国ims(s,ax算法的有穷性是指is=0))
# 实行动作
s_, r, done, info = env.step(a)
# 存储信息
memory.add_transition(s, a, s_, done,r)
ep_r += r
# 学习优化进程
dqn.learn(memory)
if done:
print('Ep: ', i_episode,
'| Ep_r: ', rounpython能够做什么作业d(算法的有穷性是指ep_r, 2))
if ep_开源矿工r > max_r开源阅览eward:
max_rewarpython123d = ep_r
print("current_max_reward{}".format(max_reward))
# 保存开源阅览模型python下载安装教程
torch.save(dqn.behaviour_model,"2048.pt")
break
s = s_
print("finish!tim工商银行e cost is {}s".format开源阅览app下载安装(time.time() - begin_t))

我只练习了10分钟,在这个不能错步的严峻环境下,推理时能够抵达256分,假定选用更先进算法,更长的练习时间,2048不是梦。

具体代码获取方开源中国式:点此链接可直接在线工作,或许下载marketplace.huaweicloud.com/markets/aih…

这个技能来历是我在上一年华为云AI全栈成长方案中接触到的,听说本年华为云又开始了新一轮【AI实战营】,**6大分类实战营Python、ModelArts、MindSpore AI结构、深度、强化、机器学习,助github直播渠道永久回家咱们成为github下载“AI王者”!*算法工程师*短平快地学习全面AI知识的同时,还能拿到Mate 30Pro、智能宫崎骏手表、无线耳机等惊喜豪礼!我现已扫描下面二维码报名啦~你还要等吗?

游戏“外挂”?—— AI生成游戏最强攻略

点击注重,第一时间了解华为云新鲜技能~