Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
汀丶人工智能 3c2f6a421c | 1 year ago | |
---|---|---|
data/cifar-10-batches-py | 1 year ago | |
1.jpg | 1 year ago | |
CIFAR10.png | 1 year ago | |
DAG.png | 1 year ago | |
Deep Learning with PyTorch.ipynb | 1 year ago | |
README.md | 1 year ago | |
cifar_net.pth | 1 year ago |
本教程的目标:
理解在 PyTorch 中如何使用张量和构建神经网络。
训练一个小型神经网络对图像进行分类
更详细的内容进入云脑调试“DeepLearningwithPyTorch.ipynb”文件
云脑调试镜像版本:
dockerhub.pcl.ac.cn:5000/user-images/openi:cuda111_python37_pytorch191
张量是一种特殊的数据结构,与数组和矩阵非常相似。在 PyTorch 中,我们使用张量对模型的输入和输出以及模型的参数进行编码。
张量类似于 NumPy 的 ndarray 对象,只是张量可以在 GPU 或其他专用硬件上运行以加速计算。
torch.autograd 是 PyTorch 的自动微分技术,用于帮助神经网络训练。接下来,我们将从概念上介绍 torch.autograd 是如何帮助神经网络训练的。
背景
神经网络(Neural Networks,NNs)是对输入数据操作的嵌套函数的集合。这些函数由参数(包括权重和偏差)确定,这些参数在 PyTorch 中都存储为张量形式。
神经网络的训练分两步进行:
前向传播:神经网络对正确的输出进行最佳预测。它通过将输入数据输入神经网络并正向运行来预测输出。
反向传播:神经网络根据预测中的错误调整参数。它通过从输出向后遍历,收集关于函数参数(梯度)的误差导数,并使用梯度下降法优化参数。
从概念上讲,torch.autograd 在由 Function 对象组成的有向无环图(DAG)中记录数据(张量)和所有执行的操作(以及生成的新张量)。在这个 DAG 中,叶子结点是输入张量,根结点是输出张量。通过从根结点到叶子结点跟踪 DAG,就可以使用链式法则自动计算梯度。
在前向传播中,torch.autograd 同时做两件事:
运行请求的操作,计算结果张量
在 DAG 中维护操作的梯度函数
当对 DAG 的根结点调用 .backward() 时,反向传播开始。torch.autograd:
从每个 .grad_fn 中计算梯度
将它们累加到各自张量的 .grad 属性中
使用链式法则,传播到叶子结点的张量
下面是我们示例中 DAG 的视觉表示。在图中,箭头指向前向传播的方向,节点表示前向传播中每个操作的后向函数。蓝色的叶子结点表示叶张量 a 和 b。
注:PyTorch 中,DAG 是动态的。需要注意的是,DAG 是从头开始重新创建的;在每次 .backward() 调用之后,torch.autograd 开始填充新的 DAG。这正是 PyTorch 允许在模型中使用控制流语句的原因: 如果需要,我们可以在每次迭代中更改形状、大小和操作。
torch.nn 可以构建神经网络。
现在我们已经了解了 torch.autograd,torch.nn 依靠 torch.autograd 来定义模型并区分它们。一个 nn.Module 包含层和一个返回 output 的方法 forward(input)。
神经网络的典型训练流程如下:
定义具有可学习参数(或权重)的神经网络
迭代输入数据集
通过网络处理输入
计算损失函数(输出与正确值的距离)
将梯度反向传播回网络参数中
更新网络参数,通常使用的更新规则为:参数 = 参数 - 学习率 * 梯度
我们现在已经了解了如何定义神经网络、计算损失和更新权重。
现在我们需要的只剩下数据了
通常,当我们必须处理图像、文本、音频或视频数据时,可以使用标准 python 包将数据加载到 numpy 数组中。然后再将数组转换为 torch.* Tensor。
对于图像,可以使用 Pillow, OpenCV 等软件包
对于音频,可以使用 scipy, librosa 等软件包
对于文本,可以使用原始 Python 或 Cython ,也可以使用 NLTK, SpaCy 等软件包
对于视觉类数据,Python 创建了名为 torchvision 的包,其中包含用于常见数据集(如 Imagenet、CIFAR10、MNIST 等)的数据加载程序和用于图像的数据转换器,即 torchvision.datasets 和 torch.utils.data.DataLoader,这提供了极大的便利。
在本教程中,我们将使用 CIFAR10 数据集。它的类别有:“飞机”、“汽车”、“鸟”、“猫”、“鹿”、“狗”、“青蛙”、“马”、“船”、“卡车”。CIFAR-10中的图像大小为 3x32x32,即大小为 32x32 像素的 3 通道彩色图像。
我们将按顺序执行以下步骤:
使用 torchvision 加载并归一化 CIFAR10 训练和测试数据集
构建卷积神经网络
构建损失函数
使用训练数据训练网络
使用测试数据测试网络
No Description
Jupyter Notebook Unity3D Asset
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》