自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 map嵌套map容器 迭代器和基于范围的for循环的区别

定义一个map嵌套map的容器给m容器进行初始化说明map容器中value的map也是一个容器 可以放很多数据类型为map的数据。

2024-05-21 16:03:58 115

原创 链表递归-leetcode两两交换相邻链表中的结点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例1。

2024-03-20 09:46:28 217

原创 链表详解-leetcode203.移除链表元素

链表是一个结构体。对于一个cur链表来说,cur就是这个结构体(一个val,一个next)开辟的首地址,也就是存储val的地址即(&(cur->val))的值,而存储val和next的地址是相连的 ,在结构体开辟的地址之后,即(&(cur->val)和&(cur->));示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]这里的head指的是链表起始的第一个结构体。

2024-03-16 16:01:20 241

原创 动手学深度学习-注意力机制Transformer

queries和attention_weights的形状为(查询个数,“键-值”对个数)# values的形状为(查询个数,“键-值”对个数)只需要重新定义解码器即可。为了更方便的显示学习注意力权重,以下AttentionDecoder类定义了带有注意力机制解码器的基本接口。#@save"""带有注意力机制解码器的基本接口"""@property在接下来的类中 实现带有Bahdanau注意力的循环神经网络解码器。编码器在所有时间步的最终隐状态,将作为注意力的键和值。

2024-03-11 21:53:12 354

原创 动手学深度学习-现代循环神经网络(GRU、LSTM、编码器-解码器等)

现代循环神经网络上一章节(循环神经网络)介绍了循环神经网络的基础知识,这种网络可以更好的处理序列数据。我们在文本数据上实现了基于循环神经网络的语言模型,但是对于当今各种各样的序列学习问题,这些技术可能不够用。例如,循环神经网络在实践中一个常见的问题是数值不稳定。尽管我们已经应用了梯度裁剪等技巧来缓解这个问题,但是仍需要通过设计更复杂的序列模型来进一步处理它。具体来说,可以引用两个广泛使用的网络,即门控循环单元(gated recurrent units, GRU)和长短时记忆网络(long short-

2024-03-06 15:59:54 711

原创 动手学深度学习—循环神经网络RNN详解

循环神经网络1. 序列模型1.1 马尔可夫模型假设已知τττ个序列预测下一个或下几个数据(假设当前数据只跟前τττ个数据有关)1.2 潜变量模型假设一个潜变量h hth_tht​来表示过去信息ht=f(x1,x2,...,xt−1)h_t=f(x_1,x_2,...,x_{t-1})ht​=f(x1​,x2​,...,xt−1​)这样xt=p(xt∣ht)x_t=p(x_t|h_t)xt​=p(xt​∣ht​)2. 文本预处理解析文本的步骤:1.将文本作为字符串加载到内存中2.将字

2024-03-01 18:46:41 526

原创 动手学深度学习-卷积神经网络

在前面的章节中,我们遇到过图像数据。这种数据的每个样本都由一个二维像素网格组成,每个像素可能是一个或者多个数值,取决于是黑白还是彩色图像。到目前为止,我们处理这类结构丰富的数据方式还不够有效。我们仅仅通过将数据展平成一维向量而忽略每个图象的空间结构信息,再将数据送入一个全连接的多层感知机中。因为这些网络特征元素的顺序是不变的,因此最优的结果是利用先验知识,即利用相近像素之间的互关联性,从图像数据中学习得到有效的模型。本章介绍的。

2024-01-10 17:09:45 1255

原创 动手学深度学习—深度学习计算

要想直观地了解块是如何工作的,最简单的方法就是自己实现一个。在实现我们自定义块之前,我们简要总结一下每个块必须提供的基本功能。将输入数据作为其前向传播函数的参数。通过前向传播函数来生成输出。请注意,输出的形状可能与输入的形状不同。例如,全连接层接收一个20层的输入,但是返回一个256层的输出。计算其输出关于输入的梯度,可通过其反向传播函数进行访问。通常这是自动发生的。存储和访问前向传播计算所需的参数根据需要初始化模型参数net(X)在这个例子中,我们通过实例化。

2024-01-05 15:34:19 1171

原创 模型预测控制MPC

通过学习与实践,我们可以看出模型预测控制(MPC)方法有着其独特的优势,例如他不用构建和训练策略,可以更好地利用环境,可以进行更长步数的的规划。但是MPC也有其局限性,例如模型在多步推演之后的准确性会大大降低,简单的控制策略对于复杂系统可能不够。MPC还有一个更为严重的问题,即每次计算动作的复杂度太大,这使其在一些策略及时性要求较高的系统中应用就变得不大现实。

2023-12-15 12:12:03 988

原创 np.tile(A,res)

np.tile(A,res)函数可对输入的数组,元组或列表进行重复构造,其输出是数组。reps:重复构造的形状,可为数组,元组或列表。tile中的(2,3)是说a的排列为两行三列。A为基数组,m×n为元组res的大小。A:输入的数组,元组或列表。

2023-12-11 16:03:38 391

原创 截断正态分布stats.truncnorm()X.rvs(10000)

就是在均值和方差之外,再指定正态分布随机数群的上下限,如μ−3σμ3σ。

2023-12-11 11:22:27 565

原创 np.zeros_like()函数

函数要实现构造一个和x矩阵大小一样的全零矩阵。

2023-12-08 16:33:03 467

原创 强化学习—模仿学习 行为克隆 生成式对抗网络模型

虽然强化学习不需要有监督学习中的数据标签,但它十分依赖奖励函数的设置。有时在奖励函数上做一些微小的改动,训练出来的策略就会天差地别。在很多现实场景中,奖励函数并未给定,或者奖励信号及其稀疏,此时随机设计奖励函数将无法保证强化学习训练出来的策略满足实际需要。例如,对于无人驾驶车辆智能体的规控,其观测是当时的环境感知恢复的3D局部环境,动作是车辆接下来数秒的具体路径规划,那么奖励是什么?如果只是规定正常行驶而不发生碰撞的奖励为+1,发生碰撞为-100,那么智能体学习的结果则很可能是找个地方停滞不前。

2023-12-07 13:30:33 1151

原创 交叉熵损失函数 nn.BCELoss()和crossentropyloss()

在做分类训练的时候,如果一个样本属于第K类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出为0,即[0,0,0,1,0……**交叉熵:**它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。crossentropyloss()和BCELoss()原理是一样的,但是具体的计算结果是不一样的,首先是公式就不一样;在多分类问题中输出层的函数是Softmax函数,在二分类问题中的输出层的函数时Sigmod函数。交叉熵损失是分类中最常用的一个损失函数。

2023-12-07 12:42:00 1364

原创 动手学强化学习-模仿学习RuntimeError: gather(): Expected dtype int64 for index

当出现RuntimeError这个错误信息的时候大概率是因为索引类型不对,追根溯源找到应该的索引类型,再找到错误源进行更改即可。即actions的类型转换为int64 经过输出发现原来的actions为int32类型的。经过不断查资料,发现gather只能索引int64类型的数据,所以将原来的。:原网站上的代码有一点问题,报错一下信息。

2023-12-06 21:06:08 628

原创 强化学习SAC算法 倒立摆环境和车杆环境

之前的章节提到过在线策略算法的采样效率比较低,我们通常更倾向于使用离线策略算法。然而,虽然DDPG是离线策略算法,但是它的训练非常不稳定,收敛性较差,对超参数比较敏感,也难以适应不同的复杂环境。2018年,一个更加稳定的离线策略算法Soft Actor-Critic (SAC)被提出。SAC的前身是Soft Q-Learning,它们都属于最大熵强化学习的范畴。Soft Q-learning不存在一个显式的策略函数,而是使用一个函数Q的玻尔兹曼分布,在连续空间下求解非常麻烦。

2023-12-04 22:06:58 1249 1

原创 强化学习-DDPG算法

之前的章节介绍了基于策略梯度的算法REINFORCE、Actor-Critic以及两个改进算法–TRPO和PPO。这类算法有一个共同的特点:它们都是在线策略算法,这意味着他们的比较低。我们回忆以下DQN算法,DQN算法直接估计最优函数Q,可以做到离线策略学习,但是他只能处理动作空间有限的环境,这是因为他需要从所有动作中挑选一个Q值最大的动作。如果动作个数是无限的,虽然我们可以先将动作空间离散化,但是这样做比较粗糙,无法精准控制。

2023-12-02 20:47:04 837

原创 np.random.randn()和np.random.rand()函数

当括号里有一个参数时,输出的是一维矩阵,有参数大小列数据;当括号里是两个或者三个参数是,就是相应大小的矩阵当括号里是一个矩阵时会输出一个和矩阵大小一样的矩阵标准正态分布是以0为均值,以1为标准差的正态分布,记为N(0,1)标准正态分布曲线下面积分布规律是:在-1.96~+1.96范围内曲线下的面积等于0.9500(即取值在这个范围的概率为95%),在-2.58~+2.58范围内曲线下面积为0.9900(即取值在这个范围的概率为99%)。

2023-12-02 20:39:33 453

原创 torch.clamp()

当input在min和max之间的时候输出本身,小于min的时候输出min 大于max时,输出max。所以这个函数的作用是将输入的input夹紧在min和max之间。clamp的是夹子,夹紧。

2023-11-30 17:38:25 374

原创 PPO算法 车杆环境 倒立摆环境

上一章介绍的TRPO算法在很多场景上的应用都很成功,但是它的计算过程非常复杂,每一步更新的运算量非常大。于是,TRPO算法的改进版–PPO算法在2017年被提出,PPO基于TRPO的思想,但是其算法实现更加简单。并且大量试验结果表明,与TRPO算法相比,PPO能学习得一样好(甚至更快),这使得PPO成为非常流行的强化学习算法。如果我们想要尝试在一个新的环境中使用强化学习算法,那么PPO就属于可以首先尝试的算法。

2023-11-30 17:37:46 822

原创 TRPO算法 车杆环境 倒立摆环境

本书之前介绍的基于策略的方法包括策略梯度算法和Actor-Critic算法。这些发方法虽然简单、直观,但在实际应用过程中会遇到训练不稳定的情况。基于策略的方法:参数化智能体的策略,并设计衡量策略好坏的目标函数,通过梯度上升的方法来最大化这个目标函数,使得策略最优。具体来说,假设θ表示策略πθ​的参数,定义JθEs0​​Vπθ​s0​)]Eπθ​​Σt0∞​γtrst​at​)],基于策略的方法的目标是找到θ∗argma。

2023-11-29 20:05:50 824 1

原创 强化学习Actor-Critic 算法

本书之前的章节讲解了基于值函数的方法(DQN)和基于策略的方法(REINFORCE),其中基于值函数的学习方法只学习一个价值函数,而基于策略的方法只学习一个策略函数。那么,一个很自然的问题是,有没有什么方法既学习价值函数,又学习策略函数呢?答案是Actor-Critic是囊括一系列算法的整体架构,目前很多高效的前沿算法都属于Actor-Critic算法,本章接下来将会介绍一种最简单的Actor-Critic算法。

2023-11-27 18:21:55 909

原创 torch.distributions.Categorical()和sample

权重:它也是一个可选参数, 由类似于str或ndarray的参数组成。在采样对象中找不到的权重索引值将被忽略, 而在采样对象中没有权重的索值将被分配零权重。进行归一化处理,对每个数据除以传入数据的累加和得到归一化后的数值,归一化的数据累加和为1。frac:它也是一个可选参数, 由浮点值组成, 并返回浮点值*数据帧值的长度。中的每一个数据都减去其对数指数累加和,公式的最后一部分就是代码的具体实现。axis:它也是由整数或字符串值组成的可选参数。n:这是一个可选参数, 由整数值组成, 并定义生成的随机行数。

2023-11-27 18:20:19 1557

原创 策略梯度算法

本书之前介绍的Q-learning 、DQN 及DQN改进算法都是(value-based)的方法,其中Q-learning是处理有限状态的算法,而DQN可以用来解决连续状态的问题。在强化学习中,除了基于值函数的方法,还有一支非常经典的方法,那就是(policy-based)的方法。对比两者,基于值函数的方法主要是学习值函数,然后根据值函数导出一个策略,学习过程中并不存在一个显式的策略;而基于策略的方法则是直接显示地学习一个目标策略。策略梯度是基于策略的方法的基础,本章从策略梯度算法说起。

2023-11-24 21:58:55 958 1

原创 神经网络中的激活函数sigmoid tanh ReLU softmax函数

简称,是构成神经网络的基本单元,其中主要是模拟生物神经元的结构和特性,接收一组输入信号并产生输出。一个生物神经元通常具有多个树突和一个轴突。树突用来接收信息,轴突用来发送信息。当神经元所获得的输入信号的积累超过某个阈值的时候,他就处于兴奋状态,产生电脉冲。轴突尾端有许多末梢可以给其他神经元的树突产生链接(突触),并将电脉冲信号传递给其他神经元。现代神经元中的激活函数通常要求是连续可导的函数。假设一个神经元接收D个输入x1​x2​...xD​,令向量xx1​;x2​。

2023-11-24 21:26:43 1017 1

原创 改进DQN算法 Double DQN算法 DuelingDQN算法

第 8 章 DQN 改进算法8.1 简介DQN算法敲开了深度强化学习的大门,但是作为先驱性的工作,其本身存在着一些问题以及一些可以改进的地方。于是,在DQN之后,学术界涌现了非常多的改进算法。本章将介绍其中两个非常著名的算法:Double DQN和Dueling DQN,这两个算法的实现非常简单,只需要在DQN的基础上稍加修改,它们能在一定程度上改善DQN的效果。8.2 Double DQN普通的DQN算法通常会导致对Q值的过高估计(overestimate)。传统DQN优化的TD误差目标为r+γ

2023-11-22 22:21:19 104

原创 DQN算法详解 代码解释 算法详解

torch.nn.Linear(in_features, # 输入的神经元个数out_features, # 输出神经元个数bias=True # 是否包含偏置从名称就可以看出来,nn.Linear表示的是线性变换y=kx+b在矩阵中的线性变换就是yxATby=xA^T+byxATb不过在深度学习中,变量都是多维张量,乘法就是矩阵乘法,加法就是矩阵加法,因此nn.Linear()运行的真正的计算就是:ATA^TAT。

2023-11-22 10:56:24 159

原创 torch.argmax()函数详解

这个函数是用来选择最大值的索引序号的,并不是选择最大值的 那它是怎么选取最大值序号呢。

2023-11-22 10:14:58 169

原创 torch.gather()详解

的,可乱序的。

2023-11-21 11:35:40 977

原创 强化学习AttributeError: XX object has no attribute seed ValueError: expected sequence of length at dim

时,运行还是报错 我觉得应该是环境的问题,我一观察terminal所在的环境 确实不是我想要进的环境 甚至也不是base环境 是在c盘的什么 环境,之前我也经常进错环境,但是我也不清楚是为什么 ,但是我可以改正呀。标黄的地方和右下角应该是一致的 如果不一致就要更改环境 或者重新进如terminal。时显示我没有gym环境,并且我执行完。在terminal进行库的卸载安装时。一定要观察是否在你选择的环境中。更改了环境,代码才执行成功。之后在重新安装gym库。

2023-11-18 18:55:29 567 1

原创 Dyna-Q算法过程详解

在强化学习中,“模型”通常指与智能体交互的环境模型,即对环境的状态转移概率和奖励函数进行建模。。无模型强化学习根据智能体与环境交互采样到的数据直接进行策略提升或者价值估计,上一章节讨论的时序差分算法,即Sarsa和Q-learning算法,便是两种无模型的强化学习算法,本书在后续章节中将要介绍的方法也大都是无模型的强化学习算法。在基于模型的强化学习中,模型可以是事先知道的,也可以是根据智能体与环境交互采样到的数据学习得到的,然后用这个模型帮助策略提升或者价值估计。

2023-11-16 21:50:02 247 1

原创 时序差分算法 tqmd time.sleep() with ...as reversed 无偏估计

设置进度条左边显示的信息# 设置进度条右边显示的信息。

2023-11-15 18:29:05 248

原创 ImportError: cannot import name XXX from partially initialized module XXX (most likely

遇到这个问题的时候,首先看一下当前.py文件所在的文件夹下是否有和XXX重名的.py文件,如果有,将XXX的文件名改掉就可以了。就是因为在目录中有和库重名的.py文件。但是安装库的时候又提示已经安装好了。将tqdm文件名改掉就好了。运行程序时是这个问题。

2023-11-14 16:06:44 886 1

原创 动手学强化学习——动态规划算法 强化学习公式 空矩阵的构建 deepcopy gym中env的unwrapped

是程序设计算法中非常重要的内容,能够高效解决一些经典问题。动态规划的基本思想是将待求解的问题分解成若干个子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。本章介绍如何用动态规划思想来求解在马尔可夫决策过程中的最优策略。基于动态规划的强化学习算法主要是有两种:一种是策略迭代,二是价值迭代。其中,策略迭代由两部分组成:策略评估和策略提升。

2023-11-11 21:04:03 43

原创 动手学强化学习—第三章马尔可夫决策过程 reshape np.dot np.eye np.linalg.inv join get append

(Markov decision process,MDP)是强化学习的重要概念。要学好强化学习,我们首先要掌握马尔可夫决策过程的基础知识。前两章所说的强化学习中的环境一般就是一个马尔可夫决策过程。与多臂老虎机问题不同,马尔可夫决策过程包含状态信息以及状态之间的转移机制。如果要用强化学习去解决一个实际问题,第一步要做的事情就是把这个实际问题抽象为一个马尔可夫决策过程,也就是明确马尔可夫决策过程的各个组成要素。本章将从马尔可夫过程出发,一步一步地进行介绍,最后引出马尔可夫决策过程。

2023-11-07 21:32:02 107

原创 动手学强化学习-第二章 多臂老虎机 算法和python一起学

强化学习和python一起学,适用于有c++基础的同学哦!前半部分是代码和理论部分,后半部分是python函数

2023-11-03 21:46:36 531

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除