月度归档: 2025 年 2 月

23 篇文章

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的文件里。…
4.4 自定义层
不含模型参数的自定义层 先介绍如何定义一个不含模型参数的自定义层。事实上,这和4.1节(模型构造)中介绍的使用Module类构造模型类似。下面的CenteredLayer类通过继承Module类自定义了一个将输入减掉均值后输出的层,并将层的计算定义在了forward函数里。这个层里不含模型参数。 import torch from torch import nn class CenteredLay…
4.2 模型参数的访问、初始化和共享
导入需要的库,init模块包含了多种模型初始化方法。定义一个含单隐藏层的多层感知机。 import torch from torch import nn from torch.nn import init net = nn.Sequential(nn.Linear(4, 3), nn.ReLU(), nn.Linear(3, 1)) # pytorch已进行默认初始化 print(net) X =…