强化学习进阶 第七讲 TRPO

2023-05-16

转载自知乎专栏 天津包子馅儿 的知乎

今天开始我们的第七讲,TRPO。先简短地介绍一下:TRPO是英文单词Trust region policy optimization的简称,翻译成中文是信赖域策略优化。提出这个算法的人是伯克利的博士生John Schulman,此人已于2016年博士毕业。Schulman的导师是强化学习领域的大神Pieter Abbeel, Abbeel是伯克利的副教授,同时也是OpenAI的研究科学家,是机器人强化学习领域最有影响力的人之一。

如果进一步追根溯源的话,Abbeel毕业于斯坦福大学,导师是Andrew Ng(吴恩达)。相信搞机器学习的人应该都听说过此大神或者听过他的课吧。有意思的是,吴恩达博士毕业于伯克利,之后在斯坦福任教,这跟Abbeel的经历正好相反。看来美国名校间人才互换的情况还是挺普遍的。Abbeel博士做的课题是逆向强化学习(学徒学习)。如果再进一步追根溯源,吴恩达的导师是伯克利的Michael I. Jordan,一个将统计学和机器学习联合起来的大师级人物……

扯的好像有点多了,其实不然。说那么多其实跟今天的主题有关系。从师承关系我们可以看到,这个学派由统计学大师Michael I. Jordan传下来,所以他们最有力的杀手锏是统计学习。从宏观意义上来讲,TRPO将统计玩到了一个新高度。在TRPO出来之前,大部分强化学习算法很难保证单调收敛,而TRPO却给出了一个单调的策略改善方法。所以,不管你从事什么行业,想用强化学习解决你的问题,TRPO是一个不错的选择。所以,这一节,很关键。好了,现在我们正式进入这一讲。

图7.1 策略搜索方法分类

策略梯度的缺点

上一节,我们已经讲了策略梯度的方法。当然策略梯度方法博大精深,上一讲只是给出一个入门的介绍,在策略梯度方法中还有很多有意思的课题,比如相容函数法,自然梯度法等等。但Shulman在博士论文中已证明,这些方法其实都是TRPO弱化的特例,说这些是再次强调TRPO的强大之处。

我们知道,根据策略梯度方法,参数更新方程式为:

\[\theta_{new}=\theta_{old}+\alpha\nabla_{\theta}J\] (7.1)

策略梯度算法的硬伤就在更新步长\alpha  ,当步长不合适时,更新的参数所对应的策略是一个更不好的策略,当利用这个更不好的策略进行采样学习时,再次更新的参数会更差,因此很容易导致越学越差,最后崩溃。所以,合适的步长对于强化学习非常关键。

什么叫合适的步长?

所谓合适的步长是指当策略更新后,回报函数的值不能更差。如何选择这个步长?或者说,如何找到新的策略使得新的回报函数的值单调增,或单调不减。这是TRPO要解决的问题。

\tau表示一组状态-行为序列\[s_0,u_0,\cdots ,s_H,u_H\],强化学习的回报函数为:

\[\eta\left(\tilde{\pi}\right)=E_{\tau |\tilde{\pi}}\left[\sum_{t=0}^{\infty}{\gamma^t\left(r\left(s_t\right)\right)}\right]\]

这里,我们用\[\tilde{\pi}\]表示策略。

刚才已经说过,TRPO是找到新的策略,使得回报函数单调不减,一个自然地想法是能不能将新的策略所对应的回报函数分解成旧的策略所对应的回报函数+其他项。只要新的策略所对应的其他项大于等于零,那么新的策略就能保证回报函数单调不减。其实是存在这样的等式,这个等式是2002年Sham Kakade提出来的。TRPO的起点便是这样一个等式:

\[\eta\left(\tilde{\pi}\right)=\eta\left(\pi\right)+E_{s_0,a_0,\cdots ~\tilde{\pi}}\left[\sum_{t=0}^{\infty}{\gamma^tA_{\pi}\left(s_t,a_t\right)}\right]\] (7.2)

这里我们用\pi表示旧的策略,用\[\tilde{\pi}\]表示新的策略。其中,\[A_{\pi}\left(s,a\right)=Q_{\pi}\left(s,a\right)-V_{\pi}\left(s\right)\]\[=E_{s'~P\left(s'|s,a\right)}\left[r\left(s\right)+\gamma V^{\pi}\left(s'\right)-V^{\pi}\left(s\right)\right]\]

称为优势函数。

此处我们再花点笔墨介绍下\[Q_{\pi}\left(s,a\right)-V_{\pi}\left(s\right)\]为什么称为优势函数,这个优势到底跟谁比。还是以大家熟悉的树状图来讲解:

图7.2 优势函数示意图

如图7.2,值函数V(s)可以理解为在该状态S下所有可能动作所对应的动作值函数乘以采取该动作的概率的和。更通俗的讲,值函数V(S)是该状态下所有动作值函数关于动作概率的平均值。而动作值函数Q(s,a)是单个动作所对应的值函数,\[Q_{\pi}\left(s,a\right)-V_{\pi}\left(s\right)\]能评价当前动作值函数相对于平均值的大小。所以,这里的优势指的是动作值函数相比于当前状态的值函数的优势。如果优势函数大于零,则说明该动作比平均动作好,如果优势函数小于零,则说明当前动作还不如平均动作好。

回到正题上来,我们给出公式(7.2)的证明:

证明:

\[E_{\tau |\tilde{\pi}}\left[\sum_{t=0}^{\infty}{\gamma^tA_{\pi}\left(s_t,a_t\right)}\right]\]\[=E_{\tau |\tilde{\pi}}\left[\sum_{t=0}^{\infty}{\gamma^t\left(r\left(s\right)+\gamma V^{\pi}\left(s_{t+1}\right)-V^{\pi}\left(s_t\right)\right)}\right]\]\[=E_{\tau |\tilde{\pi}}\left[\sum_{t=0}^{\infty}{\gamma^t\left(r\left(s_t\right)\right)+\sum_{t=0}^{\infty}{\gamma^t\left(\gamma V^{\pi}\left(s_{t+1}\right)-V^{\pi}\left(s_t\right)\right)}}\right]\]\[=E_{\tau |\tilde{\pi}}\left[\sum_{t=0}^{\infty}{\gamma^t\left(r\left(s_t\right)\right)}\right]+E_{s_0}\left[-V^{\pi}\left(s_0\right)\right]\]\[=\eta\left(\tilde{\pi}\right)-\eta\left(\pi\right)\]

我们详细讲解一下:

第一个等号是将优势函数的定义带入。

第二个等号是把第一项和后两项分开来写。

第三个等号是将第二项写开来,相消,只剩\[-V^{\pi}\left(s_0\right)\],而\[s_0 \sim  \tilde{\pi}\]
等价于\[s_0 \sim \pi \],因为两个策略都从同一个初始状态开始。而\[V^{\pi}\left(s_0\right)=\eta\left(\pi\right)\]

图7.3 TRPO最重要的等式

为了在等式(7.2)中出现策略项,我们需要对公式(7.2)进一步加工转化。如图7.3,我们对新旧策略回报差进行转化。优势函数的期望可以写成如下式:

\[\eta\left(\tilde{\pi}\right)=\eta\left(\pi\right)+\sum_{t=0}^{\infty}{\sum_s{P\left(s_t=s|\tilde{\pi}\right)}}\sum_a{\tilde{\pi}\left(a|s\right)\gamma^tA_{\pi}\left(s,a\right)}\] (7.3)

其中\[P\left(s_t=s|\tilde{\pi}\right)\tilde{\pi}\left(a|s\right)\](s,a)的联合概率,\[\sum_a{\tilde{\pi}\left(a|s\right)\gamma^tA_{\pi}\left(s,a\right)}\]为求对动作a的边际分布,也就是说在状态s对整个动作空间求和;\[\sum_s{P\left(s_t=s|\tilde{\pi}\right)}\]为求对状态s的边际分布,即对整个状态空间求和;\[\sum_{t=0}^{\infty}{\sum_s{P\left(s_t=s|\tilde{\pi}\right)}}\]求整个时间序列的和。

我们定义\[\rho_{\pi}\left(s\right)=P\left(s_0=s\right)+\gamma P\left(s_1=s\right)+\gamma^2P\left(s_2=s\right)+\cdots \]

则:

\[\eta\left(\tilde{\pi}\right)=\eta\left(\pi\right)+\sum_s{\rho_{\tilde{\pi}}\left(s\right)\sum_a{\tilde{\pi}\left(a|s\right)A^{\pi}\left(s,a\right)}}\] (7.4)

如图所示:

图7.4 代价函数推导

注意,这时状态s的分布由新的策略产生,对新的策略严重依赖。

TRPO第一个技巧

这时,我们引入TRPO的第一个技巧对状态分布进行处理。我们忽略状态分布的变化,依然采用旧的策略所对应的状态分布。这个技巧是对原代价函数的第一次近似。其实,当新旧参数很接近时,我们将用旧的状态分布代替新的状态分布也是合理的。这时,原来的代价函数变成了:

\[L_{\pi}\left(\tilde{\pi}\right)=\eta\left(\pi\right)+\sum_s{\rho_{\pi}\left(s\right)\sum_a{\tilde{\pi}\left(a|s\right)A^{\pi}\left(s,a\right)}}\] (7.5)

我们再看(7.5)式的第二项策略部分,这时的动作a是由新的策略\tilde{\pi}产生。可是新的策略\tilde{\pi}是带参数\theta 的,这个参数是未知的,因此无法用来产生动作。这时,我们引入TRPO的第二个技巧。

TRPO第二个技巧

TRPO的第二个技巧是利用重要性采样对动作分布进行的处理。

\[\sum_a{\tilde{\pi}_{\theta}\left(a|s_n\right)A_{\theta_{old}}\left(s_n,a\right)=E_{a~q}\left[\frac{\tilde{\pi}_{\theta}\left(a|s_n\right)}{q\left(a|s_n\right)}A_{\theta_{old}}\left(s_n,a\right)\right]}\]

通过利用两个技巧,我们再利用\[\frac{1}{1-\gamma}E_{s~\rho_{\theta_{old}}}\left[\cdots\right]\]代替\[\sum_s{\rho_{\theta_{old}}\left(s\right)}\left[\cdots\right]\];取\[q\left(a|s_n\right)=\pi_{\theta_{old}}\left(a|s_n\right)\]

替代回报函数变为:

\[L_{\pi}\left(\tilde{\pi}\right)=\eta\left(\pi\right)+E_{s~\rho_{\theta_{old}},a~\pi_{\theta_{old}}}\left[\frac{\tilde{\pi}_{\theta}\left(a|s\right)}{\pi_{\theta_{old}}\left(a|s\right)}A_{\theta_{old}}\left(s,a\right)\right]\] (7.6)

接下来,我们看一下替代回报函数(7.6)和原回报函数(7.4)有什么关系

通过比较我们发现,(7.4)和(7.6)唯一的区别是状态分布的不同。将\[L_{\pi}\left(\tilde{\pi}\right)\textrm{,}\eta\left(\tilde{\pi}\right)\]都看成是策略\tilde{\pi}的函数,则\[L_{\pi}\left(\tilde{\pi}\right)\textrm{,}\eta\left(\tilde{\pi}\right)\]在策略\pi_{\theta_{old}}处一阶近似,即:

\[L_{\pi_{\theta_{old}}}\left(\pi_{\theta_{old}}\right)=\eta\left(\pi_{\theta_{old}}\right)\]\[\nabla_{\theta}L_{\pi_{\theta_{old}}}\left(\pi_{\theta}\right)|_{\theta =\theta_{old}}=\nabla_{\theta}\eta\left(\pi_{\theta}\right)|_{\theta =\theta_{old}}\] (7.7)

用图来表示为:


图7.5 回报函数与替代回报函数示意图

\theta_{old} 附近,能改善L的策略也能改善原回报函数。问题是步长多大呢?

再次引入第二个重量级的不等式

\[\eta\left(\tilde{\pi}\right)\geqslant L_{\pi}\left(\tilde{\pi}\right)-CD_{KL}^{\max}\left(\pi ,\tilde{\pi}\right)\textrm{,}\]\[where\ C=\frac{2\varepsilon\gamma}{\left(1-\gamma\right)^2}\] (7.8)

为了保持连贯性,该不等式的证明略,以后再专门开篇帖子补上。其中\[D_{KL}\left(\pi ,\tilde{\pi}\right)\]是两个分布的KL散度。我们在这里看一看,该不等式给了我们什么启示。

首先,该不等式给了\[\eta\left(\tilde{\pi}\right)\]的下界,我们定义这个下界为\[M_i\left(\pi\right)=L_{\pi_i}\left(\pi\right)-CD_{KL}^{\max}\left(\pi_i,\pi\right)\]

下面利用这个下界,我们证明策略的单调性:\[\eta\left(\pi_{i+1}\right)\geqslant M_i\left(\pi_{i+1}\right)\]

\[\eta\left(\pi_i\right)=M_i\left(\pi_i\right)\]

则:\[\eta\left(\pi_{i+1}\right)-\eta\left(\pi_i\right)\geqslant M_i\left(\pi_{i+1}\right)-M\left(\pi_i\right)\]

如果新的策略\[\pi_{i+1}\]能使得\[M_i\]最大,那么有不等式\[M_i\left(\pi_{i+1}\right)-M\left(\pi_i\right)\geqslant 0\],则\[\eta\left(\pi_{i+1}\right)-\eta\left(\pi_i\right)\geqslant 0\],这个使得\[M_i\]最大的新的策略就是我们一直在苦苦找的要更新的策略。那么这个策略如何得到呢?

该问题可形式化为:

\[maximize _{\theta}\left[L_{\theta_{old}}\left(\theta\right)-CD_{KL}^{\max}\left(\theta_{old},\theta\right)\right]\]

如果利用惩罚因子C则每次迭代步长很小,因此问题可转化为:

\[maximize_{\theta}E_{s\sim\rho_{\theta_{old}},a\sim\pi_{\theta_{old}}}\left[\frac{\pi_{\theta}\left(a|s\right)}{\pi_{\theta_{old}}\left(a|s\right)}A_{\theta_{old}}\left(s,a\right)\right]\]\[subject\ to\\ D_{KL}^{\max}\left(\theta_{old},\theta\right)\le\delta \] (7.9)

需要注意的是,因为有无穷多的状态,因此约束条件\[D_{KL}^{\max}\left(\theta_{old},\theta\right)\]有无穷多个。问题不可解。

TRPO第三个技巧

在约束条件中,利用平均KL散度代替最大KL散度,即:\[subject\ to \bar{D}_{KL}^{\rho_{\theta_{old}}}\left(\theta_{old},\theta\right)\le\delta \]

TRPO第四个技巧:

\[s \sim \rho_{\theta_{old}}\rightarrow s \sim \pi_{\theta_{old}}\]

最终TRPO问题化简为:

\[maximize_{\theta}E_{s\sim\pi_{\theta_{old}},a\sim\pi_{\theta_{old}}}\left[\frac{\pi_{\theta}\left(a|s\right)}{\pi_{\theta_{old}}\left(a|s\right)}A_{\theta_{old}}\left(s,a\right)\right]\]\[subject\ to\ E_{s \sim\pi_{\theta_{old}}}\left[D_{KL}\left(\pi_{\theta_{old}}\left(\cdot |s\right)||\pi_{\theta}\left(\cdot |s\right)\right)\right]\le\delta \] (7.10)

接下来就是利用采样得到数据,然后求样本均值,解决优化问题即可。至此,TRPO理论算法完成。关于如何求解,以及如何减小方差,我们之后的课程会再讲。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强化学习进阶 第七讲 TRPO 的相关文章

  • FreeRTOS数据类型和编程规范

    目录 数据类型 变量名 函数名 宏的名 数据类型 每个移植的版本都含有自己的portmacro h头文件 xff0c 里面定义了2个数据类型 TickType t FreeRTOS配置了一个周期性的时钟中断 xff1a Tick Inter
  • 软件工程考研复试速成 - 知识点精炼 - 背诵版

    针对于考研复试 软件工程 的面试问答 xff0c 一般都是抽查重点的概念问题 xff0c 所以本文对软件工程知识点进行重点的精炼 xff0c 力求节省准研究生们的复习时间 写这篇博客也是因为小编也在准备复试 xff0c 对学习的网课进行笔记
  • 如何将模型alembic与动画alembic相关联?

    在三维动画制作时 xff0c 许多制作部门需要同时进行 xff0c 当模型部门制作好模型之后会把publish好的模型分给材质 xff0c 动画 xff0c layout等部门同时进行制作 xff0c 有时候项目要求角色有不同的材质和UV
  • Cesium标注实体【Entity】增、删、改、查

    实体实例将多种形式的可视化聚合到一个高级对象中 它们可以手动创建并添加到 Viewer entities 或由数据源生成 xff0c 例如 CzmlDataSource 和 GeoJsonDataSource 一 Entity 增加 方法一
  • hdu1085(生成函数)

    题目 我终于会用对拍器了 xff0c 我总是不敢去尝试新事物 xff0c 去年就像学 xff0c 上网搜过几次资料 xff0c 感觉烦就放弃了 xff0c 但事实证明其实非常简单 xff0c 对于我未来的coding生活来说实在是大有裨益
  • sumo osmWebWizard.py不生成OSM.sumocfg

    osmWebWizard在确定地图范围和车辆数 xff0c 点击Generate Scenario选项后 生成文件只含有osm netccfg和osm polycfg xff0c 如图 xff1a 主要原因是 当前版本默认仅勾选Add Po
  • vue封装Axios

    Axios的封装 安装axios npm install axios span class token punctuation span span class token comment 安装axios span 引入 一般在项目的src目
  • docker学习笔记(一)—— ubuntu16.04下安装docker

    本文开发环境为Ubuntu 16 04 LTS 64位系统 xff0c 通过apt的docker官方源安装最新的Docker CE Community Edition xff0c 即Docker社区版 xff0c 是开发人员和小型团队的理想
  • Centos7 安装teamviewer

    需求 需要在centos7服务器上安装最新的centos7 一 前期准备 下载teamviewer安装包 xff1a teamviewer官网 使用xftp把下载的文件传到服务器对应的文件夹中 二 安装步骤 启动前准备环境 1 关闭防火墙
  • 字典序最大的子序列(维护单调栈)

    题意 xff1a 找到给出序列的字典序最大的子序列 思路 xff1a 维护单调栈即可 代码 xff1a span class token macro property span class token directive keyword i
  • C++(7-8章)笔记

    第七章 函数 C 43 43 的编程模块 7 xff0e 1函数 1 xff0c 函数如何返回值的 xff1f 答 xff1a 函数通过将返回值复制到指定的cpu寄存器或内存单元中来将其返回 随后 xff0c 调用程序将查看该内存单元 返回
  • 2020/2/20

    区域赛复现 xff1a 1小时 C 43 43 两章 xff1a 3小时 https www cnblogs com yrz001030 p 12340003 html 补了区域赛一题 xff1a 1小时 几何基础 43 2题 xff1a
  • 图论总结

    https www cnblogs com nervendnig p 9151437 html https www cnblogs com zhsl p 3271754 html
  • 使用栈实现进制转换

    使用栈实现进制转换 题目描述 使用栈将一个很长 xff08 gt 30 xff09 的十进制数转换为二进制数 分析 xff1a 此处虽然讲了用栈操作 xff0c 但是很明显我们可以不用 xff0c 直接用数组保存 当然用栈也一样 通过分析
  • 奇怪的棋盘

    题目描述 CC喜欢下棋 xff0c 她有一天去商店发现有很多很奇怪的棋盘 xff0c 那些棋盘的长宽不一样 xff0c 宽永远是2 xff0c 然后长有从1 n等等 然后那个商店还卖很奇怪的棋子 xff0c 都是1 2的大小 xff0c C
  • 萝卜的冒泡排序

    题目描述 萝卜上次已经说过要给各位同学出一道冒泡排序 xff0c 那么此题就以冒泡排序为主吧 xff0c 可是实验室的学长学姐觉得学弟学妹们都很厉害 xff0c 所以就加了各种各样的条件 xff0c 最 终萝卜还是选择加一些条件 xff0c
  • 直接插入排序

    直接插入排序 题目描述 利用直接插入排序算法实现线性表的排序 要求输出第k趟排序的结果 例如原来线性表为 xff1a 26 12 25 4 36 15 21 第一趟直接排序排序结果为 xff1a 12 26 25 4 36 15 21 xf
  • 习武之人

    题目描述 Edmondsiu用沙袋练习武术 Edmondsiu希望把沙袋摆在他家豪宅里面 Edmondsiu的豪宅有一个由11的地砖铺成的1n的院子里 Edmondsiu是处女座的 xff0c 所以他要把一个沙袋正好摆在一个地砖上 xff0
  • centos6下安装与配置squid代理

    1 安装squid yum span class hljs keyword install span squid y 2 编辑配置文件 vim etc squid squid conf span class hljs preprocesso
  • 我卢本伟没有开挂!

    题目描述 众所周知 xff0c 卢本伟没有开挂 xff0c 如何验证他没有开挂呢 xff1f 这里我们发现一个算法通过输出d能够证明他有没有开挂 1 xff1a 如果 n 61 0 xff0c 结束算法 2 xff1a find the s

随机推荐

  • 邻接矩阵

    题目描叙 xff1a 无向图的表示方法邻接矩阵 xff0c 需打印到屏幕 有权 分析 xff1a 邻接矩阵的核心思想便是顶点表和边表 我们可以定义一个结构体 xff0c 里面包含一个顶点表 xff08 即一个vexs一维数组 xff09 x
  • 7-15 完全二叉搜索树 (30 分)

    题目描述 xff1a 一个无重复的非负整数序列 xff0c 必定对应唯一的一棵形状为完全二叉树的二叉搜索树 本题就要求你输出这棵树的层序遍历序列 输入格式 xff1a 首先第一行给出一个正整数 N xff08 1000 xff09 xff0
  • 7-14 最短工期 (25 分)

    题目描述 xff1a 一个项目由若干个任务组成 xff0c 任务之间有先后依赖顺序 项目经理需要设置一系列里程碑 xff0c 在每个里程碑节点处检查任务的完成情况 xff0c 并启动后续的任务 现给定一个项目中各个任务之间的关系 xff0c
  • 176. 装满的油箱(bfs)

    题目链接 xff1a https www acwing com problem content description 178 有N个城市 xff08 编号0 1 N 1 xff09 和M条道路 xff0c 构成一张无向图 在每个城市里边都
  • ArrayList中remove(int index)方法中为什么不使用fastRemove方法?

    今天在看 ArrayList 源码时 xff0c 我发现了一个疑问 ArrayList 有两个删除的方法分别是 remove int index 和 remove Object o 方法 span class token keyword p
  • #Linux杂记--Docker pull下载镜像时无法使用proxychains4的解决方案

    Linux杂记 Docker pull下载镜像时无法使用proxychains4的解决方案 1 引言2 解决方案 1 引言 大部分命令都可以使用 proxychains4 访问国外资源 xff0c 但 docker 下载镜像的时候不行 于是
  • Python中将numpy Int16类型的音频阵列转换为Float32类型

    目前语音处理中 xff0c 我们存储较多的音频格式为numpy Int16类型的 xff0c 但在对音频文件进一步做处理时 xff0c 有时候会需要转换为float32类型的数据使用 这里转换方式如下 xff1a xff08 1 xff09
  • Java调用python代码的五种方式

    你还在纠结怎么样在Java中调用python吗 xff1f 我们在实际工程项目问题中 xff0c 经常会碰到不同语言代码之间互调的问题 xff0c 比如此处的Java调用python xff08 常见Java调用python写的处理模型来完
  • Android从零开始——之Android简介以及开发环境的搭建

    镇楼图 android xff08 Google公司开发的操作系统 xff09 以下省略一万字 请自行百度 34 android 34 或通过链接 xff1a http baike baidu com subview 1241829 932
  • 指针数组和数组指针的区别及其详解

    引言 对于指针数组和数组指针的概念 xff0c 相信很多人经常会感到迷惑 xff0c 见到二者一时不能分辨究竟对应哪一个才是对的 接下来我们来分析一下二者区别 我们来看一下这个示例代码 xff1a span class token keyw
  • 解决pip安装报错 “error: microsoft visual c++ 14.0 or greater is required”

    今天在Windows的anaconda中使用pip安装工具包的时候出现报错信息 xff0c 如下图所示 xff1a 经排查发现主要错误是由 error microsoft visual c 43 43 14 0 or greater is
  • Linux离线状态下的Anaconda安装与Python环境创建

    1 下载与安装说明 下载 下载地址 xff1a https repo anaconda com archive 版本 xff1a 此处以版本为2020 11的anaconda作示例 xff0c 其携带的python版本为3 8 5 下载 x
  • Linux离线状态下在anaconda中安装pytorch

    1 下载与安装说明 下载地址 xff08 按安装方法选取 xff09 bz2压缩包下载地址 xff1a https mirrors tuna tsinghua edu cn anaconda cloud pytorch win 64 C 6
  • Linux离线状态下安装cuda、cudnn、cudatoolkit

    目录 1 下载与安装说明2 CUDA安装3 cuDNN安装4 cudatoolkit安装5 测试安装成功 1 下载与安装说明 工具包下载地址 CUDA历史版本下载地址 xff1a https developer nvidia com cud
  • 利用BP神经网络进行函数拟合

    利用BP神经网络进行函数拟合 摘要关键词问题描述算法设计结果分析与讨论结论Python源代码 摘要 数据拟合是在假设模型结构已知的条件下最优确定模型中未知参数使预测值与数据吻合度最高 xff0c 本文选取线性项加激活函数组成一个非线性模型
  • curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused的几种解决方式

    curl 7 Failed to connect to raw githubusercontent com port 443 Connection refused的几种解决方式 xff1f 前言 xff1a 最近随着flutter的发布 x
  • js事件-笔记

    这里写目录标题 js事件常见事件事件的注册方式事件处理分级1 DOM0级事件处理程序 xff1a 2 DOM2级事件处理程序 xff1a 3 DOM3级事件 事件流三个阶段 js事件 常见事件 onload 加载完成事件 页面加载之后 xf
  • 工程伦理2021年春季学期线上课程习题全部解答

    工程伦理2021年春季学期线上课程习题全部解答 提示 xff1a 在搜索题目时也可以关注 学小易 公众号进行查找题目及解答 xff0c 此处是个人总结的答案 注意 xff1a 有一些题号是重复的 xff0c 按照题号一一对应即可 第一章 B
  • vue中v-model详解

    vue中v model详解 v model 本质上是一个语法糖 xff0c 是v bind和事件监听 xff08 64 input xff09 的合并操作 vue使用v model实现这些标签数据的双向绑定 xff0c 它会根据控件类型自动
  • 强化学习进阶 第七讲 TRPO

    转载自知乎专栏 天津包子馅儿 的知乎 今天开始我们的第七讲 xff0c TRPO 先简短地介绍一下 xff1a TRPO是英文单词Trust region policy optimization的简称 xff0c 翻译成中文是信赖域策略优化