PyTorch 自动微分模块
<p>自动微分(Autograd)模块对张量做了进一步的封装,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,在神经网络的反向传播过程中,Autograd 模块基于正向计算的结果对当前的参数进行微分计算,从而实现网络权重参数的更新。</p> <ol> <li><strong>梯度基本计算</stron...
51工具盒子
<p>自动微分(Autograd)模块对张量做了进一步的封装,具有自动求导功能。自动微分模块是构成神经网络训练的必要模块,在神经网络的反向传播过程中,Autograd 模块基于正向计算的结果对当前的参数进行微分计算,从而实现网络权重参数的更新。</p> <ol> <li><strong>梯度基本计算</stron...
我们通过手动实现线性回归的假设函数、平方损失、SGD优化方法、以及训练函数来实现对 sklearn make_regression 函数产生的数据集进行拟合,最后通过拟合直线、训练损失变化进行可视化。 ``` import torch from sklearn.datasets import make_regression import matplotlib.pyplot a...
<p>在 PyTorch 中,使用 torch.utils.data.DataLoader 类可以实现批量的数据集加载,在我们训练模型中非常常用,其功能也确实比较强度大。由于其参数比较多,我们将会对其用法进行详解。</p> <ol> <li> <p>DataLoader 的基本使用</p> </li&...
当我们使用 PyTorch 构建神经网络时,经常使用到一些内置的网络层。本篇文章主要介绍下列层的使用: 1. 线性层(Linear) 2. 词嵌入层(Embedding) 3. 循环网络层(RNN、GRU、LSTM) 1. 线性层 {#title-0} ================= ``` torch.nn.Linear(in_features, out_featu...
在解决 NLP 任务之前, 首先就要构建自己的词表。词表的作用就是给定语料,将文本中的以字为单位、或者以词为单位转换为整数序号,该序号可用于在词嵌入的 lookup table 中搜索词向量。 接下来,我们介绍下词表的构建过程,当然每个人的词表构建过程中对语料的某些处理细节不同,但是大步骤基本都是相同的。我们将使用 LCSTS 数据集构建词表。 LCSTS 数据集是哈工大基...
在 NLP 任务中主要处理带有序列关系的文本数据,这就需要了解循环(递归)神经网络。下图是一个简单的循环神经网络:  网络中包含...
神经网络的训练有时需要几天、几周、甚至几个月,为了在每次使用模型时避免高代价的重复训练,我们就需要将模型序列化到磁盘中,使用的时候反序列化到内存中。 PyTorch 提供了两种保存模型的方法: 1. 直接序列化模型对象 2. 存储模型的网络参数 1. 直接序列化模型对象 {#title-0} ======================= ``` import torc...
网络参数初始化的优劣在极大程度上决定了网络的最终性能。比较推荐的初始化方式有 He 初始化是,将参数初始化为服从高斯分布或均匀分布的较小随机整数,同时对参数方差加以规范化。 **处于稳定状态下的神经网络,其参数和数据均值为 0。** PyTorch 中实现了较多的参数初始化 API, 主要如下: 1. 均匀分布初始化 2. 正态分布初始化 3. 全0初始化 4. 全1初始...
<p>池化层 (Pooling) 降低维度, 缩减模型大小,提高计算速度. 另外一个作用可以缓解卷积层对位置的敏感性.</p> <p>池化层主要有两种:</p> <ol> <li> <p>最大池化</p> </li> <li> <p>平均池化<...
<p>Ignite 是一个可以帮助我们在 PyTorch 中训练和评估神经网络的高级库。简单来讲,使用该训练库可以让我们的训练代码更加简洁,灵活。工具的安装命令如下:</p> <pre><code>pip install pytorch-ignite </code></pre> <p>Ignit...