<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[oceancoco的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/oceancoco</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; oceancoco]]></copyright><item><title><![CDATA[map嵌套map容器 迭代器和基于范围的for循环的区别]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/139094195</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/139094195</guid><author>oceancoco</author><pubDate>Tue, 21 May 2024 16:03:58 +0800</pubDate><description><![CDATA[定义一个map嵌套map的容器给m容器进行初始化说明map容器中value的map也是一个容器  可以放很多数据类型为map的数据。]]></description><category></category></item><item><title><![CDATA[链表递归-leetcode两两交换相邻链表中的结点]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/136865551</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/136865551</guid><author>oceancoco</author><pubDate>Wed, 20 Mar 2024 09:46:28 +0800</pubDate><description><![CDATA[给定一个链表，两两交换其中相邻的节点，并返回交换后的链表。你不能只是单纯的改变节点内部的值，而是需要实际的进行节点交换。示例1。]]></description><category></category></item><item><title><![CDATA[链表详解-leetcode203.移除链表元素]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/136764337</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/136764337</guid><author>oceancoco</author><pubDate>Sat, 16 Mar 2024 16:01:20 +0800</pubDate><description><![CDATA[链表是一个结构体。对于一个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指的是链表起始的第一个结构体。]]></description><category></category></item><item><title><![CDATA[动手学深度学习-注意力机制Transformer]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/136636261</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/136636261</guid><author>oceancoco</author><pubDate>Mon, 11 Mar 2024 21:53:12 +0800</pubDate><description><![CDATA[queries和attention_weights的形状为(查询个数，“键－值”对个数)# values的形状为(查询个数，“键－值”对个数)只需要重新定义解码器即可。为了更方便的显示学习注意力权重，以下AttentionDecoder类定义了带有注意力机制解码器的基本接口。#@save"""带有注意力机制解码器的基本接口"""@property在接下来的类中 实现带有Bahdanau注意力的循环神经网络解码器。编码器在所有时间步的最终隐状态，将作为注意力的键和值。]]></description><category></category></item><item><title><![CDATA[动手学深度学习-现代循环神经网络（GRU、LSTM、编码器-解码器等）]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/136508527</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/136508527</guid><author>oceancoco</author><pubDate>Wed, 06 Mar 2024 15:59:54 +0800</pubDate><description><![CDATA[现代循环神经网络
上一章节（循环神经网络）介绍了循环神经网络的基础知识，这种网络可以更好的处理序列数据。我们在文本数据上实现了基于循环神经网络的语言模型，但是对于当今各种各样的序列学习问题，这些技术可能不够用。
例如，循环神经网络在实践中一个常见的问题是数值不稳定。尽管我们已经应用了梯度裁剪等技巧来缓解这个问题，但是仍需要通过设计更复杂的序列模型来进一步处理它。具体来说，可以引用两个广泛使用的网络，即门控循环单元（gated recurrent units， GRU）和长短时记忆网络（long short-]]></description><category></category></item><item><title><![CDATA[动手学深度学习—循环神经网络RNN详解]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/136403602</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/136403602</guid><author>oceancoco</author><pubDate>Fri, 01 Mar 2024 18:46:41 +0800</pubDate><description><![CDATA[循环神经网络
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.将字]]></description><category></category></item><item><title><![CDATA[动手学深度学习-卷积神经网络]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/135508346</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/135508346</guid><author>oceancoco</author><pubDate>Wed, 10 Jan 2024 17:09:45 +0800</pubDate><description><![CDATA[在前面的章节中，我们遇到过图像数据。这种数据的每个样本都由一个二维像素网格组成，每个像素可能是一个或者多个数值，取决于是黑白还是彩色图像。到目前为止，我们处理这类结构丰富的数据方式还不够有效。我们仅仅通过将数据展平成一维向量而忽略每个图象的空间结构信息，再将数据送入一个全连接的多层感知机中。因为这些网络特征元素的顺序是不变的，因此最优的结果是利用先验知识，即利用相近像素之间的互关联性，从图像数据中学习得到有效的模型。本章介绍的。]]></description><category></category></item><item><title><![CDATA[动手学深度学习—深度学习计算]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/135411009</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/135411009</guid><author>oceancoco</author><pubDate>Fri, 05 Jan 2024 15:34:19 +0800</pubDate><description><![CDATA[要想直观地了解块是如何工作的，最简单的方法就是自己实现一个。在实现我们自定义块之前，我们简要总结一下每个块必须提供的基本功能。将输入数据作为其前向传播函数的参数。通过前向传播函数来生成输出。请注意，输出的形状可能与输入的形状不同。例如，全连接层接收一个20层的输入，但是返回一个256层的输出。计算其输出关于输入的梯度，可通过其反向传播函数进行访问。通常这是自动发生的。存储和访问前向传播计算所需的参数根据需要初始化模型参数net(X)在这个例子中，我们通过实例化。]]></description><category></category></item><item><title><![CDATA[模型预测控制MPC]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/135014137</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/135014137</guid><author>oceancoco</author><pubDate>Fri, 15 Dec 2023 12:12:03 +0800</pubDate><description><![CDATA[通过学习与实践，我们可以看出模型预测控制（MPC）方法有着其独特的优势，例如他不用构建和训练策略，可以更好地利用环境，可以进行更长步数的的规划。但是MPC也有其局限性，例如模型在多步推演之后的准确性会大大降低，简单的控制策略对于复杂系统可能不够。MPC还有一个更为严重的问题，即每次计算动作的复杂度太大，这使其在一些策略及时性要求较高的系统中应用就变得不大现实。]]></description><category></category></item><item><title><![CDATA[np.tile(A,res)]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134929547</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134929547</guid><author>oceancoco</author><pubDate>Mon, 11 Dec 2023 16:03:38 +0800</pubDate><description><![CDATA[np.tile(A,res)函数可对输入的数组，元组或列表进行重复构造，其输出是数组。reps:重复构造的形状，可为数组，元组或列表。tile中的（2，3）是说a的排列为两行三列。A为基数组，m×n为元组res的大小。A:输入的数组，元组或列表。]]></description><category></category></item><item><title><![CDATA[截断正态分布stats.truncnorm（）X.rvs(10000)]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134922657</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134922657</guid><author>oceancoco</author><pubDate>Mon, 11 Dec 2023 11:22:27 +0800</pubDate><description><![CDATA[就是在均值和方差之外，再指定正态分布随机数群的上下限，如μ−3σμ3σ。]]></description><category></category></item><item><title><![CDATA[np.zeros_like()函数]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134882169</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134882169</guid><author>oceancoco</author><pubDate>Fri, 08 Dec 2023 16:33:03 +0800</pubDate><description><![CDATA[函数要实现构造一个和x矩阵大小一样的全零矩阵。]]></description><category></category></item><item><title><![CDATA[强化学习—模仿学习 行为克隆 生成式对抗网络模型]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134853257</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134853257</guid><author>oceancoco</author><pubDate>Thu, 07 Dec 2023 13:30:33 +0800</pubDate><description><![CDATA[虽然强化学习不需要有监督学习中的数据标签，但它十分依赖奖励函数的设置。有时在奖励函数上做一些微小的改动，训练出来的策略就会天差地别。在很多现实场景中，奖励函数并未给定，或者奖励信号及其稀疏，此时随机设计奖励函数将无法保证强化学习训练出来的策略满足实际需要。例如，对于无人驾驶车辆智能体的规控，其观测是当时的环境感知恢复的3D局部环境，动作是车辆接下来数秒的具体路径规划，那么奖励是什么？如果只是规定正常行驶而不发生碰撞的奖励为+1，发生碰撞为-100，那么智能体学习的结果则很可能是找个地方停滞不前。]]></description><category></category></item><item><title><![CDATA[交叉熵损失函数 nn.BCELoss()和crossentropyloss（）]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134852586</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134852586</guid><author>oceancoco</author><pubDate>Thu, 07 Dec 2023 12:42:00 +0800</pubDate><description><![CDATA[在做分类训练的时候，如果一个样本属于第K类，那么这个类别所对应的输出节点的输出值应该为1，而其他节点的输出为0，即[0,0,0,1,0……**交叉熵：**它主要刻画的是实际输出（概率）与期望输出（概率）的距离，也就是交叉熵的值越小，两个概率分布就越接近。crossentropyloss()和BCELoss()原理是一样的，但是具体的计算结果是不一样的，首先是公式就不一样；在多分类问题中输出层的函数是Softmax函数，在二分类问题中的输出层的函数时Sigmod函数。交叉熵损失是分类中最常用的一个损失函数。]]></description><category></category></item><item><title><![CDATA[动手学强化学习-模仿学习RuntimeError: gather(): Expected dtype int64 for index]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134841184</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134841184</guid><author>oceancoco</author><pubDate>Wed, 06 Dec 2023 21:06:08 +0800</pubDate><description><![CDATA[当出现RuntimeError这个错误信息的时候大概率是因为索引类型不对，追根溯源找到应该的索引类型，再找到错误源进行更改即可。即actions的类型转换为int64   经过输出发现原来的actions为int32类型的。经过不断查资料，发现gather只能索引int64类型的数据，所以将原来的。：原网站上的代码有一点问题，报错一下信息。]]></description><category></category></item><item><title><![CDATA[强化学习SAC算法 倒立摆环境和车杆环境]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134795159</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134795159</guid><author>oceancoco</author><pubDate>Mon, 04 Dec 2023 22:06:58 +0800</pubDate><description><![CDATA[之前的章节提到过在线策略算法的采样效率比较低，我们通常更倾向于使用离线策略算法。然而，虽然DDPG是离线策略算法，但是它的训练非常不稳定，收敛性较差，对超参数比较敏感，也难以适应不同的复杂环境。2018年，一个更加稳定的离线策略算法Soft Actor-Critic （SAC）被提出。SAC的前身是Soft Q-Learning，它们都属于最大熵强化学习的范畴。Soft Q-learning不存在一个显式的策略函数，而是使用一个函数Q的玻尔兹曼分布，在连续空间下求解非常麻烦。]]></description><category></category></item><item><title><![CDATA[强化学习-DDPG算法]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134757400</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134757400</guid><author>oceancoco</author><pubDate>Sat, 02 Dec 2023 20:47:04 +0800</pubDate><description><![CDATA[之前的章节介绍了基于策略梯度的算法REINFORCE、Actor-Critic以及两个改进算法–TRPO和PPO。这类算法有一个共同的特点：它们都是在线策略算法，这意味着他们的比较低。我们回忆以下DQN算法，DQN算法直接估计最优函数Q，可以做到离线策略学习，但是他只能处理动作空间有限的环境，这是因为他需要从所有动作中挑选一个Q值最大的动作。如果动作个数是无限的，虽然我们可以先将动作空间离散化，但是这样做比较粗糙，无法精准控制。]]></description><category></category></item><item><title><![CDATA[np.random.randn（）和np.random.rand()函数]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134757318</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134757318</guid><author>oceancoco</author><pubDate>Sat, 02 Dec 2023 20:39:33 +0800</pubDate><description><![CDATA[当括号里有一个参数时，输出的是一维矩阵，有参数大小列数据；当括号里是两个或者三个参数是，就是相应大小的矩阵当括号里是一个矩阵时会输出一个和矩阵大小一样的矩阵标准正态分布是以0为均值，以1为标准差的正态分布，记为N（0，1）标准正态分布曲线下面积分布规律是：在-1.96～+1.96范围内曲线下的面积等于0.9500(即取值在这个范围的概率为95%)，在-2.58～+2.58范围内曲线下面积为0.9900(即取值在这个范围的概率为99%)。]]></description><category></category></item><item><title><![CDATA[torch.clamp()]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134717993</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134717993</guid><author>oceancoco</author><pubDate>Thu, 30 Nov 2023 17:38:25 +0800</pubDate><description><![CDATA[当input在min和max之间的时候输出本身，小于min的时候输出min  大于max时，输出max。所以这个函数的作用是将输入的input夹紧在min和max之间。clamp的是夹子，夹紧。]]></description><category></category></item><item><title><![CDATA[PPO算法 车杆环境 倒立摆环境]]></title><link>https://blog.youkuaiyun.com/oceancoco/article/details/134717929</link><guid>https://blog.youkuaiyun.com/oceancoco/article/details/134717929</guid><author>oceancoco</author><pubDate>Thu, 30 Nov 2023 17:37:46 +0800</pubDate><description><![CDATA[上一章介绍的TRPO算法在很多场景上的应用都很成功，但是它的计算过程非常复杂，每一步更新的运算量非常大。于是，TRPO算法的改进版–PPO算法在2017年被提出，PPO基于TRPO的思想，但是其算法实现更加简单。并且大量试验结果表明，与TRPO算法相比，PPO能学习得一样好（甚至更快），这使得PPO成为非常流行的强化学习算法。如果我们想要尝试在一个新的环境中使用强化学习算法，那么PPO就属于可以首先尝试的算法。]]></description><category></category></item></channel></rss>