引言

个人不希望博客风格趋于严肃,因此会尝试用灵活有趣的语言和例子给大家分享知识~

熟悉深度学习的朋友们可能对PyTorch已经颇有了解了,但不熟悉刚刚起步的朋友们可能还在按照各种教程ANACONDA、CUDA、PyTorch三板斧进行深度学习环境搭建。

那么,什么是PyTorch?

简单来说,他就是Python的一个库。类似于你要import math库来实现Python中的各种数学公式的计算,PyTorch就是一个方便你进行深度学习计算的一个搭建好的库。它内置了一系列的功能,用来方便实现深度学习的网络搭建。

简单来说,假如你知道,加入一系列化学反应以后,你就可以得到一个拥有电子流动的化学电池,如图所示

这些电池组件就是你做深度学习网络学到的各种原理,但是在实际应用里,你想要给你家里的遥控器装上电池让遥控器能够正常使用,你不可能真的从头组装一个化学电池然后接到你的遥控器的正负极上。

虽然可能不是那么贴切,但这么理解也大致没差——PyTorch就是把化学电池帮你打包好了,变成市面上售卖的5号、7号等等各种型号的电池,你需要的话就把电池拿过来用就好了,就不需要你自己再去费尽脑筋搭一个化学电池了。

PyTorch的核心优势是什么?

  • 具有强大的GPU(图形处理单元,也叫显卡)加速的张量计算功能。
  • 能够进行自动微分计算,从而可以使用基于梯度的方法对模型参数进行优化。

当然,PyTorch还有很多有点,比如框架简洁、入门简单,容易上手、支持动态神经网络构建,与Python语言无缝结合、调试方便等等等等。

总之,如果你是一个刚刚入门深度学习或是尤其是高校的研究人员,PyTorch是你的不二之选。


1. PyTorch的安装

1.1安装方式一(推荐)

首选建议按照教程ANACONDA、CUDA、PyTorch三板斧进行深度学习环境搭建(这类攻略应该b站一抓一大把,埋个坑,要是之后没东西写了我就做一个攻略水一下)

1.2安装方式二(快速体验版)

如果你还没有安装PyTorch,但你又想尝试一下使用这个库,很简单,就像你使用任何一个Python库一样。

在你工作的环境(或文件夹)使用你的windows/Linux/Mac命令行工具

输入以下命令:

1
pip install torch

2.PyTorch的基本用法

2.1 预备知识

在介绍PyTorch用法之前,我们需要先了解一些预备知识,在尝试理解数据时,应注意三种数值。

2.1.1. 连续值(Continuous Values)

  • 特点: 连续值是数值数据的一种类型,可以取任意数值,通常用来表示可以测量的量,如重量、距离、时间、温度等。这些值不仅可以进行排序,而且两个值之间的差异是有严格意义的。
  • 数学运算: 对连续值可以进行各种数学运算,比如加减乘除,计算平均值等。
  • 示例: 包装的重量(如2公斤、3.5公斤),距离(如100英里、250公里),温度(如23.5摄氏度)。

2.1.2. 有序值(Ordinal Values)

  • 特点: 有序值是数值数据的另一种类型,它们有自然的顺序关系,但值之间的差异没有固定的量化意义。换句话说,你知道哪个值比另一个大,但你不知道大多少。
  • 数学运算: 你可以对有序值进行排序,但不能进行加减乘除等数学运算。比如,“大号”比“中号”大,但大多少并不确定,不能通过减法来确定差距。
  • 示例: 饮料的大小(小、中、大),教育程度(小学、中学、大学),疼痛等级(轻微、中等、剧烈)。

2.1.3. 分类值(Categorical Values)

  • 特点: 分类值表示不同的类别或类型,这些类别之间没有内在的顺序,也没有数值之间的量化关系。分类值的目的是区分不同的类别,而不是表示某种顺序或数量关系。
  • 数学运算: 对分类值进行排序或数学运算是没有意义的。你只能识别和区分它们。
  • 示例: 饮料类型(咖啡、茶、水),城市名称(纽约、巴黎、东京),动物种类(猫、狗、鸟)。

2.1.4. 总结

  • 排序: 连续值有序值都可以排序,而分类值不能排序。

  • 数学运算: 连续值可以进行各种数学运算;有序值只能排序,不适合做加减乘除;分类值既不能排序,也不能做数学运算。

  • 适用场景: 连续值适用于有明确数量关系的场景(如测量和计数);有序值适用于有明显顺序但无固定差异的场景(如等级和排名);分类值适用于仅需区分类别的场景(如类型和种类)。

2.2. 张量的基本概念

PyTorch中的数据被表示为张量(Tensor),为了方便大家更好的理解,我们后面统称为Tensor。

Tensor其实就是多维数组,类似于NumPy中的array数组。使用张量可以方便的存储各种各样的数据,如二维表格数据可以用二维张量处理,如果有多张表格,我们就可以用三维张量存储;

一副彩色图像(相当于R、G、B三个值矩阵叠加)也可以用三维张量表示;

同理,一个视频文件(图片+时间),在三维张量基础上加上每张图片对应的时间轴就构成了四维张量,因此用四维张量就可以很好的考虑了。

思考: 每个书面字符都可以由一个代码(数字)表示,代码是一系列适当长度的bits,可以唯一的标识每个字符。那么一句话应该用什么张量来表达呢?一本书又该用什么张量来表达呢?(开发思考,本文不提供答案。)

2.3. 案例分析

小时候就学过邓小平的话“实践是检验真理的唯一标准。”那时觉得大且宽泛,但是现在,我真切的认为,如果想要掌握一门知识,只是单纯的停留在理论的学习是不行的,所以本博客采用案例分析的方式逐步教学PyTorch的使用,如果有条件的话建议对照本博客复现一下。

葡萄酒质量数据集是可免费获得的表格数据,其中包含vinho verde(葡萄牙北部的葡萄酒)样品的化学特征以及感官质量得分。 您可以从 https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv 下载白葡萄酒的数据集。

该数据集文件包含一个逗号分隔的值集合,这些值组织在12列中,前面是包含列名的标题行。前11列表示化学变量的值;最后一列包含从0(最差)到10(最好)的感官质量评分。

[('fixed acidity ', ‘固定酸度’), ('volatile acidity ', ‘挥发性酸度’), ('citric acid ', ‘柠檬酸’), ('residual sugar ', ‘残留糖’), ('chlorides ', ‘氯化物’), ('free sulfur dioxide ', ‘游离二氧化硫’), ('total sulfur dioxide ', ‘总二氧化硫’), ('density ', ‘密度’), ('pH ', ‘pH值’), ('sulphates ', ‘硫酸盐’), ('alcohol ', ‘醇’), (‘qualit’, ‘质量’)]

点击链接后,右键另存为即可将csv文件保存在指定文件夹,这里建议建立一个工作目录,就叫他Wine吧。

在vscode或者pycharm中打开这个文件夹,将csv文件放入文件夹中,并创建一个PyTorch1的py文件。