标签: 动手学深度学习

28 篇文章

6.6 通过时间反向传播
定义模型 简单起见,考虑一个无偏差项的循环神经网络,且激活函数为恒等映射($\phi(x)=x$)。设时间步 $t$ 的输入为单样本 $\boldsymbol{x}_t \in \mathbb{R}^d$,标签为 $y_t$,那么隐藏状态 $\boldsymbol{h}_t \in \mathbb{R}^h$的计算表达式为 $$\boldsymbol{h}_t = \boldsymbol{W}_{…
6.2 循环神经网络
不含隐藏状态的神经网络 考虑一个含单隐藏层的多层感知机。给定样本数为$n$、输入个数(特征数或特征向量维度)为$d$的小批量数据样本$\boldsymbol{X} \in \mathbb{R}^{n \times d}$。设隐藏层的激活函数为$\phi$,那么隐藏层的输出$\boldsymbol{H} \in \mathbb{R}^{n \times h}$计算为 $$\boldsymbol{H}…
6.1 语言模型
把一段自然语言文本看作一段离散的时间序列。假设一段长度为$T$的文本中的词依次为$w_1, w_2, \ldots, w_T$,那么在离散的时间序列中,$w_t$($1 \leq t \leq T$)可看作在时间步(time step)$t$的输出或标签。给定一个长度为$T$的词的序列$w_1, w_2, \ldots, w_T$,语言模型将计算该序列的概率: $$P(w_1, w_2, \ldo…
5.2 填充和步幅
假设输入形状是$n_h\times n_w$,卷积核窗口形状是$k_h\times k_w$,那么输出形状将会是 $$(n_h-k_h+1) \times (n_w-k_w+1).$$ 所以卷积层的输出形状由输入形状和卷积核窗口形状决定。卷积层有两个超参数,即填充和步幅。它们可以对给定形状的输入和卷积核改变输出形状。 填充 填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素)。下图…
5.1 二维卷积层
卷积神经网络(convolutional neural network)是含有卷积层(convolutional layer)的神经网络,最常见的为二维卷积层。它有高和宽两个空间维度,常用来处理图像数据。 二维互相关运算 虽然卷积层得名于卷积(convolution)运算,但通常在卷积层中使用更加直观的互相关(cross-correlation)运算。在二维卷积层中,一个二维输入数组和一个二维核(…
4.6 GPU计算
计算设备 PyTorch可以指定用来存储和计算的设备,如使用内存的CPU或者使用显存的GPU。默认情况下,PyTorch会将数据创建在内存,然后利用CPU来计算。 用torch.cuda.is_available()查看GPU是否可用: import torch from torch import nn torch.cuda.is_available() # 输出 True 查看GPU数量: to…
4.5 读取和存储
读写Tensor 可以直接使用save函数和load函数分别存储和读取Tensor。save使用Python的pickle实用程序将对象进行序列化,然后将序列化的对象保存到disk,使用save可以保存各种对象,包括模型、张量和字典等。而load使用pickle unpickle工具将pickle的对象文件反序列化为内存。 下面的例子创建了Tensor变量x,并将其存在文件名同为x.pt的文件里。…