PyTorch DAY2: 搭建神经网络

如今,我们已经了解了 PyTorch 中张量及其运算,但这远远不够。本次实验将学会如何使用 PyTorch 方便地构建神经网络模型,以及 PyTorch 训练神经网络的步骤及方法。

知识点
  • PyTorch 构建神经网络
  • Sequential 容器结构
  • 使用 GPU 加速训练
  • 模型保存与推理

PyTorch 构建神经网络 

方便定义不同类型的 Tensor 及利于反向传播的 Autograd 机制是深度学习框架的重要特点,但真正带来极大便利的,莫过于已经封装好的不同神经网络结构组件,包括不同类型的层以及各式各样的损失函数、激活函数、优化器等。 

PyTorch 搭建神经网络结构的组件在 torch.nn 中 ,这些神经网络层大多以类出现,例如全连接层:torch.nn.Linear() ,MSE 损失函数类:torch.nn.MSELoss()  等。

除此之外,torch.nn.functional  下面同样也有神经网络层,激活函数,损失函数等,但均以函数出现,例如全连接层函数:torch.nn.functional.linear() ,MSE 损失函数:torch.nn.functionalmse_loss()  等。 

总之,torch.nn 下面包含了神经网络组件类(大写字母),而 torch.nn.functional 包含了神经网络组件函数(小写字母)。 

本次实验使用的数据集为 MNIST,你可以把它看成是 DIGITS 数据集的增强版,都是手写字符任务。前面我们使用过 Fashion MNIST 数据集,MNIST 数据集和其样本特征是一致的,只是样本类别不一样。MNIST 中每个样本是 28×28 的矩阵,目标是字符 0-9。 

               

我们可以直接使用 PyTorch 提供的计算机视觉增强模块 torchvision 加载 MNIST 数据集。由于数据集托管在外网服务器上,国内的下载速度较慢,实验从国内服务器下载该数据集。

# 从国内服务器下载数据集
!wget -nc "http://labfile.oss.aliyuncs.com/courses/1081/MNIST.zip"
!unzip -o "MNIST.zip"
import torchvision

# 加载训练数据,参数 train=True,供 60000 条
train = torchvision.datasets.MNIST(
    root='.', train=True, transform=torchvision.transforms.ToTensor(), download=True)
# 加载测试数据,参数 train=False,供 10000 条
test = torchvision.datasets.MNIST(
    root='.', train=False, transform=torchvision.transforms.ToTensor(), download=True)

上面的代码中,transform=torchvision.transforms.ToTensor()  是利用了 torchvision 提供的 transforms 直接将原 NumPy 数组转换为 PyTorch 张量。现在,你可以尝试输出训练和测试数据的特征和目标查看。

train.data.shape, train.targets.shape, test.data.shape, test.targets.shape

接下来,我们还需要使用 PyTorch 提供的一个组件对数据进行封装。torch.utils.data.DataLoader  是 PyTorch 提供的及其常用的数据加载器,它可以将数据集封装成迭代器以方便我们后续进行小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值