RNN详解及BPTT详解

2023-11-18

转自:https://blog.csdn.net/zhaojc1995/article/details/80572098


本文部分参考和摘录了以下文章,在此由衷感谢以下作者的分享!

https://zhuanlan.zhihu.com/p/28054589

https://blog.csdn.net/qq_16234613/article/details/79476763

http://www.cnblogs.com/pinard/p/6509630.html

https://zhuanlan.zhihu.com/p/28687529

http://www.cnblogs.com/pinard/p/6509630.html

https://zhuanlan.zhihu.com/p/26892413

https://zhuanlan.zhihu.com/p/21462488?refer=intelligentunit


RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。首先我们要明确什么是序列数据,摘取百度百科词条:时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度。这是时间序列数据的定义,当然这里也可以不是时间,比如文字序列,但总归序列数据有一个特点——后面的数据跟前面的数据有关系。

RNN的结构及变体

我们从基础的神经网络中知道,神经网络包含输入层、隐层、输出层,通过激活函数控制输出,层与层之间通过权值连接。激活函数是事先确定好的,那么神经网络模型通过训练“学“到的东西就蕴含在“权值“中。
基础的神经网络只在层与层之间建立了权连接,RNN最大的不同之处就是在层之间的神经元之间也建立的权连接。如图。
这里写图片描述

这是一个标准的RNN结构图,图中每个箭头代表做一次变换,也就是说箭头连接带有权值。左侧是折叠起来的样子,右侧是展开的样子,左侧中h旁边的箭头代表此结构中的“循环“体现在隐层。
在展开结构中我们可以观察到,在标准的RNN结构中,隐层的神经元之间也是带有权值的。也就是说,随着序列的不断推进,前面的隐层将会影响后面的隐层。图中O代表输出,y代表样本给出的确定值,L代表损失函数,我们可以看到,“损失“也是随着序列的推荐而不断积累的。
除上述特点之外,标准RNN的还有以下特点:
1、权值共享,图中的W全是相同的,U和V也一样。
2、每一个输入值都只与它本身的那条路线建立权连接,不会和别的神经元连接。

以上是RNN的标准结构,然而在实际中这一种结构并不能解决所有问题,例如我们输入为一串文字,输出为分类类别,那么输出就不需要一个序列,只需要单个输出。如图。
这里写图片描述
同样的,我们有时候还需要单输入但是输出为序列的情况。那么就可以使用如下结构:
这里写图片描述

还有一种结构是输入虽是序列,但不随着序列变化,就可以使用如下结构:
这里写图片描述

原始的N vs N RNN要求序列等长,然而我们遇到的大部分问题序列都是不等长的,如机器翻译中,源语言和目标语言的句子往往并没有相同的长度。
下面我们来介绍RNN最重要的一个变种:N vs M。这种结构又叫Encoder-Decoder模型,也可以称之为Seq2Seq模型。
这里写图片描述
从名字就能看出,这个结构的原理是先编码后解码。左侧的RNN用来编码得到c,拿到c后再用右侧的RNN进行解码。得到c有多种方式,最简单的方法就是把Encoder的最后一个隐状态赋值给c,还可以对最后的隐状态做一个变换得到c,也可以对所有的隐状态做变换。
这里写图片描述

除了以上这些结构以外RNN还有很多种结构,用于应对不同的需求和解决不同的问题。还想继续了解可以看一下下面这个博客,里面又介绍了几种不同的结构。但相同的是循环神经网络除了拥有神经网络都有的一些共性元素之外,它总要在一个地方体现出“循环“,而根据“循环“体现方式的不同和输入输出的变化就形成了多种RNN结构。

https://blog.csdn.net/qq_16234613/article/details/79476763

标准RNN的前向输出流程

上面介绍了RNN有很多变种,但其数学推导过程其实都是大同小异。这里就介绍一下标准结构的RNN的前向传播过程。
这里写图片描述

再来介绍一下各个符号的含义:x是输入,h是隐层单元,o为输出,L为损失函数,y为训练集的标签。这些元素右上角带的t代表t时刻的状态,其中需要注意的是,因策单元h在t时刻的表现不仅由此刻的输入决定,还受t时刻之前时刻的影响。V、W、U是权值,同一类型的权连接权值相同。

有了上面的理解,前向传播算法其实非常简单,对于t时刻:

h(t)=ϕ(Ux(t)+Wh(t1)+b)h(t)=ϕ(Ux(t)+Wh(t−1)+b)
为激活函数,一般来说会选择tanh函数,b为偏置。

t时刻的输出就更为简单:

o(t)=Vh(t)+co(t)=Vh(t)+c

最终模型的预测输出为:

yˆ(t)=σ(o(t))y^(t)=σ(o(t))

其中σσ为激活函数,通常RNN用于分类,故这里一般用softmax函数。

RNN的训练方法——BPTT

BPTT(back-propagation through time)算法是常用的训练RNN的方法,其实本质还是BP算法,只不过RNN处理时间序列数据,所以要基于时间反向传播,故叫随时间反向传播。BPTT的中心思想和BP算法相同,沿着需要优化的参数的负梯度方向不断寻找更优的点直至收敛。综上所述,BPTT算法本质还是BP算法,BP算法本质还是梯度下降法,那么求各个参数的梯度便成了此算法的核心。
这里写图片描述

再次拿出这个结构图观察,需要寻优的参数有三个,分别是U、V、W。与BP算法不同的是,其中W和U两个参数的寻优过程需要追溯之前的历史数据,参数V相对简单只需关注目前,那么我们就来先求解参数V的偏导数。

L(t)V=L(t)o(t)o(t)V∂L(t)∂V=∂L(t)∂o(t)⋅∂o(t)∂V

这个式子看起来简单但是求解起来很容易出错,因为其中嵌套着激活函数函数,是复合函数的求道过程。

RNN的损失也是会随着时间累加的,所以不能只求t时刻的偏导。

L=t=1nL(t)L=∑t=1nL(t)

W和U的偏导的求解由于需要涉及到历史数据,其偏导求起来相对复杂,我们先假设只有三个时刻,那么在第三个时刻 L对W的偏导数为:

L(3)W=L(3)o(3)o(3)h(3)h(3)W+L(3)o(3)o(3)h(3)h(3)h(2)h(2)W+L(3)o(3)o(3)h(3)h(3)h(2)h(2)h(1)h(1)W∂L(3)∂W=∂L(3)∂o(3)∂o(3)∂h(3)∂h(3)∂W+∂L(3)∂o(3)∂o(3)∂h(3)∂h(3)∂h(2)∂h(2)∂W+∂L(3)∂o(3)∂o(3)∂h(3)∂h(3)∂h(2)∂h(2)∂h(1)∂h(1)∂W

可以观察到,在某个时刻的对W或是U的偏导数,需要追溯这个时刻之前所有时刻的信息,这还仅仅是一个时刻的偏导数,上面说过损失也是会累加的,那么整个损失函数对W和U的偏导数将会非常繁琐。虽然如此但好在规律还是有迹可循,我们根据上面两个式子可以写出L在t时刻对W和U偏导数的通式:

L(t)W=k=0tL(t)o(t)o(t)h(t)(j=k+1th(j)h(j1))h(k)W∂L(t)∂W=∑k=0t∂L(t)∂o(t)∂o(t)∂h(t)(∏j=k+1t∂h(j)∂h(j−1))∂h(k)∂W

整体的偏导公式就是将其按时刻再一一加起来。

前面说过激活函数是嵌套在里面的,如果我们把激活函数放进去,拿出中间累乘的那部分:

j=k+1thjhj1=j=k+1ttanhWs∏j=k+1t∂hj∂hj−1=∏j=k+1ttanh′⋅Ws

我们会发现累乘会导致激活函数导数的累乘,进而会导致“梯度消失“和“梯度爆炸“现象的发生。

至于为什么,我们先来看看这两个激活函数的图像。
这是sigmoid函数的函数图和导数图。
这里写图片描述
这是tanh函数的函数图和导数图。
这里写图片描述
它们二者是何其的相似,都把输出压缩在了一个范围之内。他们的导数图像也非常相近,我们可以从中观察到,sigmoid函数的导数范围是(0,0.25],tach函数的导数范围是(0,1],他们的导数最大都不大于1。

这就会导致一个问题,在上面式子累乘的过程中,如果取sigmoid函数作为激活函数的话,那么必然是一堆小数在做乘法,结果就是越乘越小。随着时间序列的不断深入,小数的累乘就会导致梯度越来越小直到接近于0,这就是“梯度消失“现象。其实RNN的时间序列与深层神经网络很像,在较为深层的神经网络中使用sigmoid函数做激活函数也会导致反向传播时梯度消失,梯度消失就意味消失那一层的参数再也不更新,那么那一层隐层就变成了单纯的映射层,毫无意义了,所以在深层神经网络中,有时候多加神经元数量可能会比多家深度好。

你可能会提出异议,RNN明明与深层神经网络不同,RNN的参数都是共享的,而且某时刻的梯度是此时刻和之前时刻的累加,即使传不到最深处那浅层也是有梯度的。这当然是对的,但如果我们根据有限层的梯度来更新更多层的共享的参数一定会出现问题的,因为将有限的信息来作为寻优根据必定不会找到所有信息的最优解。

之前说过我们多用tanh函数作为激活函数,那tanh函数的导数最大也才1啊,而且又不可能所有值都取到1,那相当于还是一堆小数在累乘,还是会出现“梯度消失“,那为什么还要用它做激活函数呢?原因是tanh函数相对于sigmoid函数来说梯度较大,收敛速度更快且引起梯度消失更慢。

还有一个原因是sigmoid函数还有一个缺点,Sigmoid函数输出不是零中心对称。sigmoid的输出均大于0,这就使得输出不是0均值,称为偏移现象,这将导致后一层的神经元将上一层输出的非0均值的信号作为输入。关于原点对称的输入和中心对称的输出,网络会收敛地更好。

RNN的特点本来就是能“追根溯源“利用历史数据,现在告诉我可利用的历史数据竟然是有限的,这就令人非常难受,解决“梯度消失“是非常必要的。解决“梯度消失“的方法主要有:
1、选取更好的激活函数
2、改变传播结构

关于第一点,一般选用ReLU函数作为激活函数,ReLU函数的图像为:
这里写图片描述
ReLU函数的左侧导数为0,右侧导数恒为1,这就避免了“梯度消失“的发生。但恒为1的导数容易导致“梯度爆炸“,但设定合适的阈值可以解决这个问题。还有一点就是如果左侧横为0的导数有可能导致把神经元学死,不过设置合适的步长(学习旅)也可以有效避免这个问题的发生。

关于第二点,LSTM结构可以解决这个问题。

总结一下,sigmoid函数的缺点:
1、导数值范围为(0,0.25],反向传播时会导致“梯度消失“。tanh函数导数值范围更大,相对好一点。
2、sigmoid函数不是0中心对称,tanh函数是,可以使网络收敛的更好。


LSTM

下面来了解一下LSTM(long short-term memory)。长短期记忆网络是RNN的一种变体,RNN由于梯度消失的原因只能有短期记忆,LSTM网络通过精妙的门控制将短期记忆与长期记忆结合起来,并且一定程度上解决了梯度消失的问题。
由于已经存在了一篇写得非常好的博客,我在这里就直接转载过来,再在其中夹杂点自己的理解。原文连接如下。

作者:朱小虎Neil 链接:https://www.jianshu.com/p/9dc9f41f0b29 來源:简书

在此感谢原作者!

长期依赖(Long-Term Dependencies)问题

RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。如果 RNN 可以做到这个,他们就变得非常有用。但是真的可以么?答案是,还有很多依赖因素。

有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测 “the clouds are in the sky” 最后的词,我们并不需要任何其他的上下文 —— 因此下一个词很显然就应该是 sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN 可以学会使用先前的信息。

这里写图片描述

不太长的相关信息和位置间隔

但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France… I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 France 的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。

不幸的是,在这个间隔不断增大时,RNN 会丧失学习到连接如此远的信息的能力。
这里写图片描述

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

RNN详解及BPTT详解 的相关文章

  • Pytorch 实战RNN

    一 简单实例 span class token comment coding utf8 span span class token keyword import span torch span class token keyword as
  • 【机器学习】Radius Neighbors Classifier(rNN,radius nearest neighbors)

    文章目录 一 半径近邻分类器 简介二 半径近邻分类器算法三 Radius Neighbors Classifier With Scikit Learn参考链接 一 半径近邻分类器 简介 Radius Neighbors Classifier
  • 基于RNN-LSTM模型的诗词生成/TensorFlow

    1 研究任务一介绍 1 1 研究任务 给定诗词数据集poems xff0c 采用基于循环神经网络 xff08 RNN xff09 的LSTM模型实现古诗词自动生成 xff0c 调整参数实现五言诗 七言诗 五言藏头诗 七言藏头诗和词的自动生成
  • 通俗理解RNN

    全连接神经网络和卷积神经网络他们都只能单独的取处理一个个的输入 xff0c 前一个输入和后一个输入是完全没有关系的 但是 xff0c 某些任务需要能够更好的处理序列的信息 xff0c 即前面的输入和后面的输入是有关系的 比如 xff0c 当
  • 李宏毅2021年机器学习作业5(Seq2seq)实验记录

    李宏毅2021年机器学习作业5学习笔记 前言 一 问题描述 二 实验过程 2 1 基于RNN 2 2 基于Transformer 三 总结 前言 声明 本文参考了李宏毅机器学习2021年作业例程 开发平台是colab 一 问题描述 机器翻译
  • 【Python深度学习】RNN循环神经网络结构讲解及序列回归问题实战(图文解释 附源码)

    需要全部代码请点赞关注收藏后评论区留言私信 循环神经网络 循环神经网络 Recurrent Neural Network RNN 是用于对序列的非线性特征进行学习的深度神经网络 循环神经网络的输入是有前后关联关系的序列 循环神经网络可以用来
  • [Python人工智能] 十二.循环神经网络RNN和LSTM原理详解及TensorFlow编写RNN分类案例

    从本专栏开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇讲解了TensorFlow如何保存变量和神经网络参数 通过Saver保存神经网络 再通过Restore调用训练好的神经网络 本文将详细讲解循环神经网络RN
  • 【CNN时序预测】基于混合卷积神经网络和循环神经网络 CNN - RNN 实现时间序列预测附Matlab代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 更多Matlab仿真内容点击 智能优化算法 神经网络预测 雷达通信 无线传感器 电力系统 信号
  • 循环神经网络--01 序列模型

    生成数据 import torch from torch import nn from d2l import torch as d2l T 1000 time torch arange 1 T 1 dtype torch float32 x
  • 基于循环神经网络股票预测系统

    循环神经网络 Simple RNN RNN神经网络模型是一种常用的深度神经网络模型 已成功应用于语言识别 文本分类等多个研究领域 相比其他网络模型 RNN最大的优势在于引入了时序与定向循环的概念 能够很好地解决输入数据前后之间相互关联的问题
  • [Python人工智能] 十四.循环神经网络LSTM RNN回归案例之sin曲线预测

    从本专栏开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前一篇文章详细讲解了如何评价神经网络 绘制训练过程中的loss曲线 并结合图像分类案例讲解精确率 召回率和F值的计算过程 本篇文章将分享循环神经网络LSTM R
  • [4G+5G专题-132]: 传输层 - 以太网电缆的类型(Cat5,Cat5e,Cat6,Cat6a)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121552941 目录 1 主要的技术
  • 【深度学习】——循环神经网络RNN及实例气温预测、单层lstm股票预测

    引言 密集连接网络和卷积神经网络都有主要的特点 那就是它们没有记忆 它们单独处理每个输入 在输入和输入之间没有保存任何状态 举个例子 当你在阅读一个句子的时候 你需要记住之前的内容 我们才能动态的了解这个句子想表达的含义 生物智能已渐进的方
  • 序列模型——自然语言处理与词嵌入(理论部分)

    1 词汇表征 深度学习已经给自然语言处理 Natural Language Process NLP 带来革命性的变革 其中一个很关键的概念是词嵌入 word embedding 这是语言表示的一种方式 可以让算法自动的了解一些类似的词 例如
  • LSTM理解与应用

    首先感谢https www jianshu com p 9dc9f41f0b29作者的文章 让我对LSTM有了初步的认识 还有我要推荐李宏毅老师讲的LSTM课程 讲的实在是太容易理解了 https www youtube com watch
  • 循环神经网络RNN论文解读

    版权声明 本文为CSDN博主 了不起的赵队 的原创文章 遵循CC 4 0 by sa版权协议 转载请附上原文出处链接及本声明 原文链接 https blog csdn net zhaojc1995 article details 80572
  • 【机器学习】GRU 讲解

    有任何的书写错误 排版错误 概念错误等 希望大家包含指正 在阅读本篇之前建议先学习 RNN 讲解 LSTM 讲解 3 GRU 3 1 网络结构 GRU 是循环神经网络的一种 和 LSTM 一样 是为了解决长期依赖问题 GRU 单元结构如下
  • 时序数据和语音处理

    时序数据 时序数据概述 即时间序列数据 用于时序预测 作用 用来连续观察同一对象在不同时间点上获得的数据样本集 处理目标 对给定的时间序列样本 找出统计特性和发展规律性 推测未来值 语音是一类特殊的时序数据 识别语音对应的文本信息是当前人工
  • Pytorch之经典神经网络RNN(三) —— LSTM(simple data)(手写LSTM&反向传播)

    1997年提出的 LSTM是一种特殊的RNN 表现突出 很好地解决了训练RNN过程中的各种问题 在几乎各类问题中都展现出远好于Vanilla RNN的表现 LSTM 和基本的 RNN 是一样的 他的参数也是相同的 长期依赖 Long Ter
  • 在NLP上,CNN、RNN、MLP三者相比各有何优劣

    本文为知乎温颖就如下问题的回答 已授权CSDN转载 若想要实现某个具体的任务 如做关系抽取 实体识别 情感分类等 在不考虑实现的难度的情况下 如何从理论 经验 直觉上去选择最有希望的模型 前段时间做过用不同的神经网络模型做文本分类 情感分析

随机推荐

  • LDAP未授权漏洞验证

    因为工作需要 这里验证了下LDAP未授权 以下是收集到的资料 最后是具体使用 更新 2 连接ad域有两个地址 ldap http XXXXX com 389 和 ldap http XXXXX com 636 SSL 3 端口389用于一般
  • 根据接口数据返回的不同字段显示不同背景颜色

    结构 div span item hldj substr 0 2 span substr 0 2 要抽取的子串的起始下标 从0开始截取2位 如南一公园只会显示南一 div 交互 methods toHldj item if item hld
  • 制作镜像并上传到阿里云

    run一个ubuntu容器 然后自动进入容器 ucsmy QKTEST21191 docker run it name node daocloud io ubuntu root 3ac09729dadb 安装geth sudo apt ge
  • 使用Bootstrap样式的死的简单Vue分页组件

    网页 vue pages A Dead Simple Vue Pagination Component Using Bootstrap Style 使用Bootstrap样式的死的简单Vue分页组件 support vue 2 0 支持vu
  • Unity的C#编程教程_52_类 Class 详解及应用练习(一)

    文章目录 C Classes for Behaviours Custom Classes 1 Custom Classes 2 Serialized Custom Class RPG Item Database Example 3 When
  • C++的tuple

    一 介绍 tuple是一个固定大小的不同类型值的集合 是泛化的std pair 我们也可以把它当做一个通用的结构体来用 不需要创建结构体又获取结构体的特征 在某些情况下可以取代结构体使程序更简洁 直观 std tuple理论上可以有无数个任
  • react项目配置@指向src文件夹

    react项目配置 指向src文件夹 react项目没有和vue一样有 指向src文件夹 需要手动配置 配置了之后 就代表 src 目录 就不用自己 暴露项目配置项 任选一种 npm方式 npm run eject cnpm方式 cnpm
  • C++获取电脑主板唯一标识

    获取电脑的唯一标识有很多好处 比如注册 授权等 而且电脑中有很多是唯一标识的硬件 比如网卡 CPU 硬盘 主板等 但是如果电脑中有两个网卡的话 就不知道使用哪个网卡作为唯一的了 可以通过获取主板的ID 作为唯一的标识 通常情况下 可以通过命
  • 无限法则服务器错误登录期间发生错误,无限法则错误126的解决方案分享 Error126错误提示...

    无限法则错误126的解决方案分享 Error126错误提示 许多玩家在玩游戏时遇到了Error126的情况 那么出现这个问题该怎么解决呢 无限法则Error126报错解决方法希望对大家有所帮助 问题描述 出现Error 126错误提示 12
  • win10 win11 远程连接 凭据不工作 无法建立连接

    Windows 远程连接 远程连接个人或者学校电脑 Windows系统 时经常遇到无法连接的情况 本文结合两种情况给出相应解决方法 No 1 问题描述 无法建立连接 未知连接错误 解决方法 查看目标ipv4地址是否正确 在windows W
  • 【JavaWeb学习】CSS(文本和图片)

    字体 color 前景色 用来设置字体的颜色 font size 字体大小 font family 字体族 指定字体的类别 浏览器自动使用该类别下的字体 可以同时指定多个字体 多个字体间用逗号隔开 前一个无法使用就用后一个 字体能否使用由用
  • (邱维声)高等代数课程笔记:极大线性无关组,向量组的秩

    极大线性无关组 向量组的秩 quad 一般地 设 V V V 是数域 K K K 上的一个线性空间
  • 好用的网络请求库Retrofit2(入门及讲解)

    前言 首先 先给出官网 GitHub Retrofit 官网 Retrofit 其次 要吐槽一下官网首页给出的例子 如果你照着例子改 会发现根本没法运行 不是少包就是少关键语句 相关内容可以参看我的另一篇文章 Retrofit 2 0 入门
  • 【论文翻译】边缘应用中加速卷积神经网络的剪枝算法综述

    摘要 随着卷积神经网络 CNN 模型大小的增加 模型压缩和加速技术对于在边缘设备上部署这些模型变得至关重要 在本文中 我们对修剪进行了全面的调查 这是一种主要的压缩策略 可以从CNN模型中删除非关键或冗余的神经元 调查涵盖了修剪的总体动机
  • VC++设置与取得系统音量

    MMRESULT rc 多媒体函数返回结果变量 HMIXER hMixer 混合器设备句柄 MIXERLINE mxl 音频线路标准状态信息结构体 MIXERLINECONTROLS mxlc 音频线路控制器集合信息结构体 MIXERCON
  • 启动arbiter失败Oplog entry at { ts: Timestamp 1651735515000

    mongodb版本是 mongodb linux x86 64 3 4 2 tgz 操作系统 中标麒麟服务器版 问题 查看日志 日志里面提示 2022 05 06T14 27 50 862 0800 I REPL initandlisten
  • SUSAN边缘检测算法,及其Matlab和OpenCV实现

    1 SUSAN边缘检测计算步骤 1 在图像上放置一个37个像素的圆形模板 模板在图像上滑动 依次比较模板内各个像素点的灰度与模板核的灰度 判断是否属于USAN区域 判别函数如下 其中 r 0 vec r 0 r
  • 解决移动端shader找不到问题

    在Unity里面 编辑器特效正常 移动端特效无效 adb输出是找不到shader 打开Graphics面板 把找不到的shader添加进去
  • [python] 下载天地图切片地图

    下载xyz地图 资源 下列为常用xyz路由地址 为了避免图片中出现文字标注 道路名称 建筑物名称等 本文选择天地图tian vec 作为获取资源对象 var mapUrl 高德地图 lang可以通过zh cn设置中文 en设置英文 size
  • RNN详解及BPTT详解

    转自 https blog csdn net zhaojc1995 article details 80572098 本文部分参考和摘录了以下文章 在此由衷感谢以下作者的分享 https zhuanlan zhihu com p 28054