- 张量的定义
- 激活函数
- 神经网络模型的建立与训练
- CIFAR 的识别
- 梯度的求解
- 数据预处理
- 手写字符的识别
- 迁移学习
PyTorch 是一个基于 Torch 的 Python 开源机器学习库,它主要由 Facebook 的人工智能小组开发。该框架不仅能够实现强大的 GPU 加速,还支持动态的神经网络。因此,很多互联网的大厂在进行深度学习时,都会使用该框架,比如 Facebook、Twitter 等。本课程一共 15 章,从浅入深地为同学们阐述了 PyTorch 的语法结构和应用场景。
PyTorch 是一个基于 Torch 的 Python 开源机器学习库,它主要由 Facebook 的人工智能小组开发。该框架不仅能够实现强大的 GPU 加速,还支持动态的神经网络。因此,很多互联网的大厂在进行深度学习时,都会使用该框架,比如 Facebook、Twitter、GMU 和 Salesforce 等。 本课程一共 15 章,从浅入深地为同学们阐述了 PyTorch 的语法结构和应用场景。由于本课程是 PyTorch 的基础课程,因此本课程跳过了复杂的数学计算和公式推导,以一种更容易让人理解的方式为同学们讲述了深度学习的相关知识,并利用 PyTorch 对其进行实现。
在学习完基础知识之后,为了使同学们能够熟练的掌握如何利用 PyTorch 定义神经网络模型并进行模型的训练。本课程还引入了三个实战实验。
如下所示,本实验主要的目的就是完成下列这种手写数字的识别。为此,本实验将前面章节所有的 PyTorch 知识点进行了整合,建立了一个简单的全连接神经网络模型,用于识别手写字符。
在本实验中,我们引入了卷积神经网络的概念,对卷积神经网络所包含的组件进行了简单的介绍。然后使用 VGG16 神经网络完成了对 CIFAR 数据集的识别模型。CIFAR-10 数据集由 10 个类的 60000 个 32x32 的彩色图像组成,即每个类有 6000 个图像。如下:
在训练深度学习模型时,有时候我们没有海量的训练样本,只有少数的训练样本(比如几百个图片),几百个训练样本显然对于深度学习远远不够。这时候,我们可以使用别人预训练好的网络模型权重,在此基础上进行训练,这就是迁移学习(Transfer Learning)。本实验利用迁移学习的概念,引入 resenet18 网络完成了蚂蚁和蜜蜂的分类模型。我们所用的数据集合如下:
LOU2311851672 共发布过 7 门课程
查看老师的所有课程 >
体验不错
体验不错
体验不错
体验不错
体验不错
torch.save(model.state_dict(), FILE) loaded_model.load_state_dict(torch.load(FILE))
pre-training fine-tune
nn.Conv2d(input_channel, out_channel, fileter_size)
如果在神经网络内部(隐含层)需要使用激活函数,一般会使用 ReLU 函数或者 ReLU 函数的改进来进行激活。 如果是二分类问题,那么会在神经网络的最后一层加上一个 Sigmoid 函数层。 如果是多分类问题,那么会在神经网络的最后一层加上一个 Softmax 函数层。
自定的神经网络类必须继承 nn.Module。 自定义类中需要实现 init 和 forward 函数。 init : 定义网络的结构。 forward:定义数据在模型中的传播路径。
数据预处理: torchvision.transforms
在 DataLoader 传入的参数值,我们需要注意的是 dataset 参数。该参数是一个 Dataset 类,即只有继承了 PyTorch 中的 Dataset 接口的类,才能够被传入 DataLoader 中。
一个范式: def forward: ''' loss = ... loss = forward(...) loss.backward()
利用 x.detach() 获取具有相同内容但不能进行梯度计算的新张量 训练模型循环求梯度时一般要先进行梯度的清空 x.grad.zero_() optimizer.zero_grad()
学习了张量的一些基本操作 非直观的:张量重塑时在某一位置指定-1可以自动计算
快速了解基本知识