RL— 深度强化学习简介

一、说明

        深度强化学习是关于从我们看到和听到的东西中采取最好的行动。不幸的是,强化学习强化学习在学习概念和术语方面存在很高的障碍。在本文中,我们将介绍深度强化学习,并概述一般情况。然而,我们不会回避方程式和术语。它们提供了更深入地理解概念的基础知识。我们不会呼吁您只需要 20 行代码即可解决 RL 问题。官方答案应该是一个!但我们将努力使它平易近人。

        在大多数人工智能主题中,我们创建数学框架来解决问题。对于RL,答案是马尔可夫决策过程(MDP)。这听起来很复杂,但它产生了一个简单的框架来模拟复杂的问题。代理(例如人类)观察环境并采取行动奖励会发放,但可能不经常且延迟。很多时候,长期延迟的奖励使得解开信息和追溯哪些行为序列对奖励做出了贡献变得非常困难。

        马尔可夫决策过程(MDP)包括:

来源:左、右

MDP 中的状态可以表示为原始图像。

AlphaGO & Atari Seaquest

或者对于机器人控制,我们使用传感器来测量关节角度、速度和末端执行器姿势:

  • 动作可以是国际象棋游戏中的移动,也可以是移动机械臂或操纵杆。
  • 对于围棋游戏,奖励非常稀少:如果我们赢了,奖励为 1,如果我们输了,则奖励为 -1。有时,我们会更频繁地获得奖励。在雅达利Seaquest游戏中,每当我们击中鲨鱼时,我们都会得分。
  • 如果折扣系数小于 1,则折扣系数会折扣未来的奖励。未来赚到的钱通常具有较小的当前价值,我们可能需要它纯粹是出于技术原因,以便更好地收敛解决方案。

  • 我们可以永久推出操作,也可以将体验限制在 N 个时间步长内。这称为地平线。

转换功能是系统动态。它预测采取行动后的下一个状态。它被称为模型,当我们稍后讨论基于模型的 RL 时,它起着重要作用。

公约

RL中的概念来自许多研究领域,包括控制理论。在不同的上下文中使用不同的表示法。不幸的是,在阅读 RL 材料时,这是不可避免的。因此,让我们在混淆之前先解决这个问题。状态可以写成 s 或 x,动作可以写成 a 或 u操作控制相同。我们可以最大化回报或最小化成本,这些成本只是彼此的负数。符号可以是大写或小写。

二、策略

        在RL,我们的重点是找到最佳策略。 策略告诉我们如何从特定状态采取行动。

        与深度学习方法中的权重一样,此策略可以通过 θ 进行参数化

我们希望找到一项能够做出最有价值的决策的政策:

在现实生活中,没有什么是绝对的。因此,我们的政策可以是确定性的,也可以是随机的。对于随机指标,策略输出概率分布。

最后,让我们把我们的目标放在一起。在强化学习中,我们希望找到一系列最大化预期回报或最小化成本的操作。

但是有很多方法可以解决这个问题。例如,我们可以

  • 分析达到某种状态或采取特定行动(即价值学习)有多好,
  • 使用模型查找具有最大奖励的操作(基于模型的学习),或
  • 直接派生策略以最大化奖励(策略梯度)。

我们很快将介绍所有这些方法。

三、表示法

        但是,如果您想先进一步阐述 RL 中的术语和符号,此表应该会有所帮助。

从源代码修改

四、基于模型的强化学习

        直观地说,如果我们知道游戏规则以及每一步的成本,我们可以找到最小化成本的行动。模型 p(系统动力学)预测执行操作后的下一个状态。在数学上,它被表述为概率分布。在本文中,模型可以写为 p 或 f

        让我们用推车杆的例子来演示模型的想法。p 对采取行动后极点的角度进行建模。

这是上面示例的下一个时间步中 θ 的概率分布输出。

该模型描述了物理定律。但模型可能只是国际象棋游戏的规则。基于模型的强化学习的核心思想是 使用模型和成本函数来定位动作的最佳路径(确切地说,是状态和动作的轨迹)。

让我们进入另一个例子。在围棋游戏中,模型是游戏规则。根据此规则,我们搜索可能的动作并找到赢得游戏的行动。当然,搜索空间太大,我们需要更智能地搜索。

阿尔法戈

在基于模型的强化学习中,我们使用模型和成本函数来找到状态和动作的最佳轨迹最优控制)。

有时,我们可能不知道模型。但这并不排除我们学习它们。事实上,我们可以使用深度学习来模拟来自样本轨迹的复杂运动,或者局部近似它们。

下面的视频很好地演示了机器人使用基于模型的RL执行任务。机器人不是直接对机器人手臂进行编程,而是训练20分钟来学习每项任务,主要是自己。完成后,机器人应该处理以前没有训练过的情况。我们可以在物体周围移动或改变锤子的抓握,机器人应该设法成功完成任务。

任务听起来很简单。但它们并不容易解决。我们经常进行近似以使其更容易。例如,我们将系统动力学近似为线性,成本函数近似为二次方程。

然后,我们找到在遵守模型的同时最小化成本的操作。

有已知的优化方法,如LQR来解决这种目标。为了转向非线性系统动力学,我们可以应用迭代使用 LQR 的 iLQR 来找到类似于牛顿优化的最佳解。所有这些方法都很复杂,计算量很大。您可以在此处找到详细信息。但对于我们的上下文,我们只需要知道给定成本函数和模型,我们可以找到相应的最优操作。

与其他RL方法相比,基于模型的RL具有很强的竞争优势,因为它具有样品效率。许多模型可以用较少的样本在本地近似,轨迹规划不需要进一步的样本。如果物理仿真需要时间,则节省的成本是巨大的。因此,它在机器人控制中很受欢迎。使用其他 RL 方法,相同的训练可能需要数周时间。

让我们更详细地介绍这个过程。以下是MPC(模型预测控制),它运行随机或受过教育的策略来探索空间以适合模型。然后,在步骤 3 中,我们使用 iLQR 来规划最佳控件。但我们只执行计划中的第一个操作。我们再次观察状态并重新规划轨迹。这使我们能够在需要时采取纠正措施。

下图总结了该流。我们观察环境并提取状态。我们拟合模型并使用轨迹优化方法来规划我们的路径,该路径由每个时间步所需的动作组成。

五、价值学习

        接下来,我们进入另一种主要的强化学习方法,称为价值学习。在玩围棋游戏时,即使游戏规则很好理解,也很难计划下一个获胜步骤。可能性的指数级增长使得它太难解决。当围棋冠军玩围棋游戏时,他们会评估一个动作有多好,以及达到某个棋盘位置有多好。假设我们有一个备忘单,对每个州进行评分:

        我们可以简单地查看备忘单,找到下一个最有价值的状态并采取相应的行动。

        价值函数 V(s) 衡量保单下某个州的预期折扣奖励。直观地说,它衡量您根据特定政策从特定州获得的总奖励。

        在我们的推车杆示例中,我们可以使用推杆熬夜时间来衡量奖励。在下面,与 s1 相比,在状态 s2 中保持杆直立的机会更大(最好在下方左侧的位置而不是右侧)。对于大多数策略,左侧的状态可能具有更高的值函数。

        那么如何找出V呢?一种方法是蒙特卡洛方法。我们运行政策并播放整集直到最后,以观察总奖励。例如,我们计算杆子保持多长时间。然后我们有多个蒙特卡罗部署,我们平均 V 的结果。

        有几种方法可以找到相应的最佳策略。在政策评估中,我们可以从一个随机的政策开始,评估每个州的好坏。经过多次迭代,我们使用 V(s) 来决定下一个最佳状态。然后,我们使用模型来确定引导我们到达那里的行动。对于围棋游戏来说,这很简单,因为游戏规则是已知的。

        或者,在每次策略评估之后,我们都会根据价值函数改进策略。我们将继续进行评估和完善。最终,我们将达到最佳策略。这称为策略迭代

从源代码修改

        但是如果我们没有模型,就会有问题。我们不知道什么行动可以把我们带到目标状态。

        值函数不是无模型方法。我们需要一个模型来做决定。但作为一个重要的脚注,即使模型未知,值函数仍然有助于补充其他不需要模型的RL方法。

使用动态规划进行价值迭代

除了蒙特卡罗方法之外,我们还可以使用动态规划来计算 V。我们采取行动,观察奖励,并用下一个状态的 V 值计算它:

确切的公式应该是:

如果模型未知,我们通过抽样计算 V。我们执行操作并观察奖励和下一个状态。

六、功能拟合

        但是,对于许多问题,为每个状态维护 V 是不可行的。为了解决这个问题,我们使用监督学习来训练一个近似V的深度网络。

        上面的y是目标值,我们可以使用蒙特卡罗方法来计算它。

        否则,我们可以应用动态规划概念并使用一步式前瞻。这称为时间差TD。

        我们采取单个操作,并使用观察到的奖励和下一个状态的 V 值来计算 V(s)。

        蒙特卡洛方法是准确的。但对于随机策略或随机模型,每次运行可能会有不同的结果。所以方差很大。TD考虑的更新其价值的行动要少得多。所以方差很低。但至少在早期训练中,偏见非常高。高偏差给出错误的结果,但高方差使模型很难收敛。在实践中,我们可以将蒙特卡洛和TD与不同的k步展望结合起来,形成目标。这平衡了偏差和方差,可以稳定训练。

七、操作值函数

        那么,我们可以在没有模型的情况下使用价值学习概念吗?是的,我们可以通过对操作而不是状态进行评分来避免模型。行动-价值函数 Q(s, a) 衡量采取行动的预期折扣奖励。权衡是我们有更多的数据需要跟踪。对于每个状态,如果我们可以采取 k 个操作,就会有 k 个 Q 值。

        为了获得最佳结果,我们采取具有最高Q值的操作。

        如图所示,我们不需要模型来找到最佳操作。 因此,行动价值学习是无模型的。下面哪个动作子的Q值更高?直观地说,在下面的状态下向左移动应该比向右移动具有更高的值。

        在深度学习中,当特征以零为中心时,梯度下降效果更好。直观地说,在强化学习中,绝对奖励可能不如行动与平均行动相比有多好那么重要。这就是优势函数A的概念。在许多RL方法中,我们使用A而不是Q

        其中 A 是平均操作的预期奖励。回顾一下,以下是所有定义:

八、Q 学习

        那么我们如何学习Q值呢?最流行的方法之一是通过以下步骤进行 Q 学习:

  1. 我们对一个动作进行采样。
  2. 我们观察了奖励和下一个状态。
  3. 我们采取最高 Q 的行动。

然后我们再次应用动态规划来迭代计算 Q 值函数:

这是使用函数拟合进行 Q 学习的算法。下面的步骤 2 通过使用时间差值来减少方差。与蒙特卡洛方法相比,这也提高了采样效率,后者在发作结束前采集样品。

从源代码修改

探索在RL中非常重要。没有探索,你永远不会知道未来有什么更好。但如果做得过头,我们就是在浪费时间。在Q-learning中,我们有一个探索策略,如epsilon-greedy,用于选择在步骤1中采取的行动。我们选择具有最高Q值的动作,但我们允许选择其他随机动作的机会很小。Q 初始化为零。因此,在早期训练中没有突出的具体行动。随着训练的进行,选择更有希望的行动,训练从探索转向开发。

九、深度 Q 网络 DQN

        不幸的是,Q-learning在深度学习中不是很稳定。在本节中,我们最终将所有内容放在一起,并介绍DQN,该DQN仅通过访问图像帧即可在玩某些Atari游戏时击败人类。

        DQN是Q学习的典型代表,使用深度网络来近似Q.我们使用监督学习来拟合Q值函数。我们想复制监督学习的成功,但RL是不同的。在深度学习中,我们对输入样本进行随机化,因此输入类在训练批次中非常平衡且非常稳定。在 RL 中,随着我们的探索,我们的搜索效果越好。因此,我们搜索的输入空间和操作在不断变化。此外,正如我们所知道的,我们更新了Q的目标值。这是个坏消息。输入和输出都经常更改。

        这使得学习Q值近似器变得非常困难。DQN引入了体验回放和目标网络来减缓变化,这样我们就可以逐渐学习Q。体验回放将最后一百万的状态操作奖励存储在重播缓冲区中。我们用来自这个缓冲区的批次随机样本训练 Q。因此,训练样本是随机的,其行为更接近深度学习中的监督学习。

        此外,我们有两个网络来存储 Q 的值。一个不断更新,而第二个,目标网络,每隔一段时间从第一个网络同步一次。我们使用目标网络来检索 Q 值,以便目标值的更改波动性较小。这是感兴趣的人的目标。D 是重放缓冲区,θ- 是目标网络。

        DQN允许我们使用价值学习在更稳定的训练环境中解决RL方法。

十、策略梯度

        到目前为止,我们已经介绍了两种主要的强化学习方法:基于模型和价值学习。基于模型的强化学习使用模型和成本函数来查找最佳路径。价值学习使用 V 或 Q 值来推导出最佳策略。接下来,我们将介绍第三种主要的 RL 方法,也是 RL 中流行的方法之一。策略梯度方法侧重于策略。

        我们的许多动作,特别是人类运动控制,都非常直观。我们观察并采取行动,而不是彻底计划或取样以获得最大回报。

        在推车杆的例子中,我们可能不知道物理原理,但是当杆子向左下降时,我们的经验告诉我们向左移动。根据观察值确定操作比理解模型要容易得多。

        这种类型的RL方法是基于策略的,我们直接对由θ参数化的策略进行建模。

        策略梯度的概念非常简单。对于奖励更好的行动,我们使其更有可能发生(反之亦然)。策略梯度的计算公式为:

        我们使用此梯度通过梯度上升来更新策略。即,我们向奖励增加幅度最大的方向改变政策。

        让我们仔细看看政策梯度。上面红色下划线是最大可能性。它衡量在特定策略下采取行动的可能性。当我们将其与优势函数相乘时,我们会更改策略以支持奖励大于平均操作的操作。反之亦然,如果情况没有好转,我们会减少机会。

        但是,在做出这样的政策改变时,我们需要非常小心。梯度法是一阶导数法。如果奖励函数具有陡峭的曲率,则不太准确。如果我们的政策变化过于激进,估计的政策改善可能太远,以至于该决定可能是一场灾难。

图片来源

        为了解决这个问题,我们强加了一个信任区域。我们只选择此区域内的最佳控制。通过建立潜在误差的上限,我们知道在我们过于乐观之前我们可以走多远,潜在的错误会杀死我们。在信任区域内,我们有合理的保证,新政策会更好。在信任区域之外,赌注就落空了。如果我们强迫它,我们可能会降落在更糟糕的状态并破坏训练进度。TRPO和PPO是使用信任区域概念来改善策略模型收敛的方法。

十一、演员-评论家法

        策略梯度方法使用大量样本来达到最佳解决方案。每次更新策略时,我们都需要重新采样。与其他深度学习方法类似,计算模型需要多次迭代。它的趋同往往是一个主要问题。我们可以使用更少的样本来计算策略梯度吗?我们能否进一步减小 的方差以使梯度的波动性更小?

        RL 方法很少相互排斥。我们混合不同的方法以相互补充。演员-批评家将策略梯度与函数拟合相结合。在参与者-批评者方法中,我们使用参与者对策略进行建模,使用批评者对 V 进行建模。通过引入批评者,我们减少了每次策略更新要收集的样本数量。我们不会在剧集结束之前收集所有样本。这种时间差分技术还可以减少方差。

        参与者-批评家的算法与策略梯度法非常相似。在下面的步骤 2 中,我们将拟合 V 值函数,即注释器。在第 3 步中,我们使用 TD 计算 A。在第 5 步中,我们将更新我们的策略,即参与者。

十二、指南策略搜索

演员兼评论家将价值学习与政策梯度相结合。同样,我们可以将基于模型和基于策略的方法混合在一起。我们使用基于模型的RL来改进控制器,并在机器人上运行控制器以进行移动。控制器根据轨迹优化的结果确定最佳操作。

我们观察轨迹,同时,我们使用生成的轨迹使用监督学习来训练策略(下图右图)。

从源代码修改

        当我们有一个控制器时,为什么要训练策略?无论如何,它们在预测状态的行为方面是否有相同的目的?这就涉及到模型还是政策更简单的问题。

        基于模型的学习可以产生相当准确的轨迹,但对于模型复杂且训练不足的区域,可能会产生不一致的结果。它累积的错误也会造成伤害。如果策略更简单,则应该更容易学习和概括。我们可以使用监督学习来消除基于模型的轨迹中的噪声,并发现它们背后的基本规则。

        但是,策略梯度类似于具有更智能和有根据的搜索的试错法。在看到任何有意义的动作之前,训练通常有一个很长的热身期。

        因此,我们在引导式政策搜索中结合了它们的优势。我们使用基于模型的强化学习来更好地指导搜索。然后,我们使用轨迹来训练一个可以更好地泛化的策略(如果策略对于任务来说更简单)。

        我们在交替的步骤中培训控制器和策略。为了避免激进的更改,我们再次在控制器和策略之间应用信任区域。因此,策略和控制器是紧密学习的。这有助于训练更好地收敛。

十三、深度学习

        深度学习在强化学习中的作用是什么?如前所述,深度学习是眼睛和耳朵。我们应用CNN从图像中提取特征,并应用RNN来提取语音。

        深度网络也是一个很好的函数逼近器。我们可以使用它来近似我们在 RL 中需要的任何函数。这包括 V 值、Q 值、策略和模型。

        部分可观察的 MDP

        对于许多问题,物体可能会被其他人暂时阻碍。要构建环境的状态,我们需要的不仅仅是当前图像。对于部分可观察的MDP,我们从图像的最近历史中构建状态。这可以通过将RNN应用于图像序列来完成。

十四、使用哪些方法?

        我们介绍了三大类RL方法。我们可以混合和匹配方法以相互补充,并且每种方法都进行了许多改进。哪些方法是最好的?

        这不可能在单个部分中解释。每种方法都有其优点和缺点。到目前为止,基于模型的RL具有最佳的采样效率,但在当前技术状态下,无模型RL可能具有更好的最佳解决方案。有时,我们可以更像时尚来看待它。什么是最好的将取决于你问的年份?研究取得进展,失宠的方法经过一些改进后可能会有新的生命线。实际上,我们混合搭配RL问题。所需的方法受到约束、任务上下文和研究进度的强烈限制。例如,机器人控制强烈支持具有高样品效率的方法。物理模拟不能轻易被计算机模拟所取代。但是,在某些问题领域,我们现在可以弥合差距或更好地引入自学。简而言之,我们仍然处于一个高度发展的领域,因此还没有黄金指南。我们只能说在当前状态下,在任务的约束和上下文下,什么方法可能更好。请继续关注,我们将对此进行更详细的讨论。

十五、思潮

        深度强化学习是关于我们如何做出决定。在本文中,我们介绍了三个基本算法组,即基于模型的RL,价值学习和策略梯度。这仅仅是一个开始。如何像人类一样有效地学习仍然具有挑战性。坏消息是,商业应用还有很大的改进空间。好消息是这个问题太难了,但很重要,不要指望这个主题很无聊。在本文中,我们将探讨其挑战的基本但几乎没有涉及以及已提出的许多创新解决方案。它是人工智能中最困难的领域之一,但也可能是日常生活中最困难的部分之一。对于那些想要探索更多内容的人,以下是详细介绍不同 RL 领域的文章。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ES-5-进阶

单机 & 集群 单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器 性能就会大大降低甚至不可用,所以生产环境中,一般都是运行在指定服务器集群中 配置服务器集群时,集…

idea中创建请求基本操作

文章目录 说明效果创建GET请求没有参数带有参数带有环境变量带有token信息创建post请求之上传文件 说明 首先通过###三个井号键来分开每个请求体,然后请求url和header参数是紧紧挨着的,请求参数不管是POST的body传参还是GET的parameter传参,都…

数据结构:线索二叉树

线索二叉树 通过前面对二叉树的学习,了解到二叉树本身是一种非线性结构,采用任何一种遍历二叉树的方法,都可以得到树中所有结点的一个线性序列。在这个序列中,除第一个结点外,每个结点都有自己的直接前趋;…

使用Python创建快速创建剪映草稿轨道,自动生成视频

使用Python创建快速创建剪映草稿轨道,自动生成视频 一、实现原理 实现原理 : JianYingPro 项目文件是 json 的形式存储的,只需要创建draft_content.json,draft_mate_info.json 打开软件后会自动补全。 作用:快速生成草稿,可以完…

formatter的用法,深拷贝, Object.assign 方法实战。

1. :formatter的用法 :formatter 接受一个函数作为参数&#xff0c;这个函数有三个参数&#xff1a;row&#xff0c;column 和 cellValue。row 是当前行的数据&#xff0c;column 是当前列的数据&#xff0c;cellValue 是当前单元格的值。 <el-table-column prop"SYS…

2021年全国硕士研究生入学统一考试管理类专业学位联考写作试题——解析版

四、写作&#xff1a;第56~57小题&#xff0c;共65分。其中论证有效性分析30分&#xff0c;论说文35分。请答在答题纸相应的位置上。 56.论证有效性分析&#xff1a;分析下述论证中存在的缺陷与漏洞&#xff0c;选择若干要点&#xff0c;写一篇600字左右的文章&#xff0c;对该…

STM32 CAN通讯实验程序

目录 STM32 CAN通讯实验 CAN硬件原理图 CAN外设原理图 TJA1050T硬件描述 实验线路图 回环实验 CAN头文件配置 CAN_GPIO_Config初始化 CAN初始化结构体 CAN筛选器结构体 接收中断优先级配置 接收中断函数 main文件 实验现象 补充 STM32 CAN通讯实验 CAN硬件原理图…

MyBatis查询数据库

1.MyBatis 是什么&#xff1f; MyBatis 是⼀款优秀的持久层框架&#xff0c;它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置 和映射原始类型、接⼝和 Java POJO&#…

CMake:为Eigen库使能向量化

CMake:为Eigen库使能向量化 导言构建Eigen项目结构CMakeLists.txt相关源码 导言 本篇开始将涉及检测外部库相关的内容&#xff0c;期间会穿插着一些其他的内容。为了能够使得系统在系统中运行Eigen库&#xff0c;我们首先需要在系统中配置好Eigen库。然后介绍与Eigen库相关的C…

【C++】STL——vector的模拟实现、常用构造函数、迭代器、运算符重载、扩容函数、增删查改

文章目录 1.模拟实现vector1.1构造函数1.2迭代器1.3运算符重载1.4扩容函数1.5增删查改 1.模拟实现vector vector使用文章 1.1构造函数 析构函数 在C中&#xff0c;vector是一个动态数组容器&#xff0c;可以根据需要自动调整大小。vector类提供了几个不同的构造函数来创建和初…

java 版本企业招标投标管理系统源码,多个行业+及时准确+全程电子化

&#xfeff; 项目说明 随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大&#xff0c;公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境&#xff0c;最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范&am…

Electron 系统通知 Notification 实践指南

系统通知是桌面应用的常见功能&#xff0c;用于给用户发送提醒&#xff08;刷下存在感 &#x1f642;&#xff09;&#xff0c;还能帮定点击事件以便后续的操作。 Electron 自带通知模块&#xff0c;下方代码是一个简单的示例 const { Notification } require(electron)cons…

【C#教程】零基础从入门到精通

今天给大家分享一套零基础从入门到精通&#xff1a;.NetCore/C#视频教程&#xff1b;这是2022年最新整理的、590G的开发教程资料。课程涵盖了.Net各方面的知识&#xff0c;跟着这个教程学习&#xff0c;就足够了。 课程分类 1、C#从基础到精通教程&#xff1b; 2、Winform从…

Framework开发的热度从未下降~

近几日&#xff0c;统计局也发布了就业相关数据&#xff0c;全国失业青年达600多万&#xff0c;面对此数据&#xff0c;我们能想到的是实际的失业人数肯定会比公布的数据要多很多&#xff0c;尤其是表示 “一周工作一小时以上” 也纳入了就业范围。 反观有一批Android开发在如此…

【数据挖掘torch】 基于LSTM电力系统负荷预测分析(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

解决 MyBatis-Plus + PostgreSQL 中的 org.postgresql.util.PSQLException 异常

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

用C语言构建一个手写数字识别神经网络

(原理和程序基本框架请参见前一篇 "用C语言构建了一个简单的神经网路") &#xff11;&#xff0e;准备训练和测试数据集 从http://yann.lecun.com/exdb/mnist/下载手写数字训练数据集, 包括图像数据train-images-idx3-ubyte.gz 和标签数据 train-labels-idx1-ubyte.…

Mac 安装配置adb命令环境(详细步骤)

一、注意&#xff1a;前提要安装java环境。 因为android sdk里边开发的一些包都是依赖java语言的&#xff0c;所以&#xff0c;首先要确保已经配置了java环境。 二、在Mac下配置android adb命令环境&#xff0c;配置方式如下&#xff1a; 1、下载并安装IDE &#xff08;andr…

Django的生命周期流程图(补充)、路由层urls.py文件、无名分组和有名分组、反向解析(无名反向解析、有名反向解析)、路由分发、伪静态

一、orm的增删改查方法&#xff08;补充&#xff09; 1. 查询resmodels.表名(类名).objects.all()[0]resmodels.表名(类名).objects.filter(usernameusername, passwordpassword).all()res models.表名(类名).objects.first() # 判断&#xff0c;判断数据是否有# res如果查询…

UE4 unlua学习笔记

将这三个插件放入Plugins内并重新编译 创建一个BlueprintLibrary&#xff0c;声明一个全局函数 在这里声明路径 点击Create Lua Template 在Content的Script即可生成对应的lua文件打开它&#xff01; 显示以上lua代码 打印Hello Unlua 创建该UI&#xff0c;就会在创建UI的Con…
最新文章