概述
Linux系统上pytorch环境的配置
- 需要GPU的时候,在具备GPU硬件的前提下,首先需要下载GPU相应版本的驱动程序(diver)以及CUDA。CUDA可以理解为GPU相关的API,pytorch能够自动调用这些接口来应用GPU。
cat /usr/local/cuda/version.txt
可以查看已安装CUDA的版本。- 安装torch、torchvision、torchaudio库。这一步在pytorch的官网会提供不同版本相应的命令,主页默认为最新的版本,如果需要旧版本,可以再旧版本的链接里边找到相关的命令。
- attention:
在实际配置环境的过程中,我遇到一个问题,服务器在重启后显卡并没有被自动的驱动起来。
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
nvidia命令不存在,说明显卡并没有被正常的驱动起来,故需要手动的去驱动显卡。
step1: sudo apt-get install dkms
step2:sudo dkms install -m nvidia -v 410.79(这里-v后边跟的是diver程序的版本,必须是已经下载在服务器上的,驱动程序的源码下载在路径/usr/src/nvidia-***.**
下,可以查看版本号)
RNN的梯度消失以及梯度爆炸
- 首先要明确一个问题,梯度消失以及梯度爆炸不仅仅在RNN框架中出现,在很多的网络框架下都会出现。
- 对于出现梯度消失以及梯度爆炸的原因,根据链式求导法则,在求相应参数的偏导数时,中间会出现很多偏导的连乘,而这些由于L2范数有关,牵扯到一个不等式,它会呈指数增长也会呈指数缩减。
- 梯度消失会导致,参数更新时更新值非常的小,越远的输入梯度越小,对输出的影响力也就越小。这就是长依赖问题,我们可能会丢失对结果影响力较大的输入,应有可能学习的梯度不准确。
- 梯度爆炸会导致,在参数更新的时候,每一步都迈的非常大,很有可能直接更新到了损失最大的位置,也很可能离最优解非常的远。可以通过梯度切片来解决梯度爆炸的问题,就是在梯度超过某一阈值的时候,适当的将其缩小。
- 为了解决梯度消失的问题,两种新型的RNN出现了:LSTM & GRU。相比之下,LSTM参数规模更大,比较适合训练数据量较大的任务;GRU相对简单,训练速度相对更快。
多种多样的RNN
- LSTM & GRU
- Bi-RNN,双向的循环神经网络,既可以考虑到前向传播的信息,又可以考虑到后向传播的信息。
- 多层循环神经网络,这是一个非常powerful的神经网路框架,参数规模很大。
Neural Machine Translation
- seq2seq模型
- Encoder - Decoder模型,其中Encoder负责将输入的源语言编码,是一个Bi-LSTM。Encoder最后时刻的输出是Decoder的输入,两个方向最后时刻的隐状态的结合,以及同样细胞状态的结合。
- Decoder引入Attention机制。
- 损失函数为交叉熵 Cross Entropy。
遗留问题
- 学习seq2seq + attention的NMT模型并实现。
- 图神经网络源码的熟悉。
最后
以上就是俭朴往事为你收集整理的RNN 梯度消失梯度爆炸 变体的全部内容,希望文章能够帮你解决RNN 梯度消失梯度爆炸 变体所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复