## 循环神经网络
### 内容来源
笔记和代码来源于B站跟李沐学AI。
### 潜变量自回归模型
$p(x_t|h_t,x_{t-1})$
$p(h_t|{h_t-1},x_{t-1})$
### 循环神经网络
更新隐藏状态:$h_t=\phi(W_{hh}\mathbf{h}_{t-1}+W_{hx}\mathbf{x}_{t-1}+\mathbf{b}_h)$
输出:$o_t=\phi(W_{oh}\mathbf{h}_t+\mathbf b_o)$
### 困惑度
衡量一个语言模型的好坏可以用平均交叉熵:$\pi=\frac{1}{n}\sum_{i=1}^n-\log p(x_t|x_{t-1},...)$,其中$x_t$是真实词。
历史原因NLP使用困惑度$\exp(\pi)$来衡量。1表示完美,无穷大最差。
### 梯度裁剪
迭代中计算$T$个时间步上的梯度,反向传播时产生长度为$O(T)$的矩阵乘法链,导致数值不稳定。
梯度裁剪能有效预防梯度爆炸,如果梯度长度超过$\theta$,则拖影回长度$\theta$。
$\mathbf{g}\leftarrow \min(1,\frac{\theta}{\mathbf{||g||}})\mathbf{g}$
### PyTorch中的RNN
```python
from torch import nn
import torch
input_size = 200
hidden = 100
seq = 10
batch = 8
layer = 1
rnn = nn.RNN(input_size, hidden, num_layers=layer, batch_first=False) # batch_first=True,则x需要为(batch, seq, input_size)
x = torch.randn((seq, batch, input_size))
h_0 = torch.randn((layer, batch, hidden))
out, h = rnn.forward(x) # out:(seq, batch, hidden), h:(layer, batch, hidden)
cell = nn.RNNCell(input_size, hidden)
for xt in x:
h_0 = cell(xt, h_0)
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
使用循环神经网络实现人名分类器 from io import open import glob import os import string import unicodedata import random import time import math import torch import torch.nn as nn from torch.optim import Adam from tqdm import tqdm all_letters = string.ascii_letters + ".,;'" data_path = '../../data/names/' n_letters = len(all_letters) # device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') device = torch.device('cpu')
资源推荐
资源详情
资源评论
收起资源包目录
NLP:使用循环神经网络实现人名分类器.zip (39个子文件)
knowledge
bert
MyBertModel.py 5KB
rnn
readme.md 1KB
Main.py 3KB
data
names
Russian.txt 84KB
Spanish.txt 2KB
Greek.txt 2KB
French.txt 2KB
Irish.txt 2KB
Italian.txt 6KB
Japanese.txt 7KB
Vietnamese.txt 339B
Dutch.txt 2KB
Arabic.txt 13KB
Scottish.txt 752B
Portuguese.txt 554B
English.txt 26KB
Korean.txt 423B
Chinese.txt 1KB
Polish.txt 1KB
German.txt 5KB
Czech.txt 4KB
translation
eng-fra.txt 9.1MB
reproduction
SimCSE
model
SimCSE.py 0B
train.py 0B
project
naturalLanguageInference
Main.py 4KB
snli-dev.json 1.48MB
snli-test.json 1.46MB
nameClassifier
readme.md 100B
Main.py 4KB
quadraticFunction
decisionTreeByMachine.png 405KB
readme.md 1KB
decisionTreeByHand.png 120KB
tree 3KB
tree.pdf 67KB
Main.py 5KB
translation
readme.md 51B
attention.png 7KB
Main.py 10KB
loss.png 24KB
共 39 条
- 1
资源评论
方案互联
- 粉丝: 18
- 资源: 968
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功