【动手学深度学习】1.数据操作 + 数据预处理

前言

这一部分笔记讲解的是数据的一些操作及其预处理,涉及torch库,numpy库,以及pandas库,有疑问可以直接搜这些库。


数据操作

1. N维数组是机器学习和神经网络的主要数据结构。
下面是N维数组样例:
【动手学深度学习】1.数据操作 + 数据预处理_第1张图片
【动手学深度学习】1.数据操作 + 数据预处理_第2张图片
2. 创建数组
【动手学深度学习】1.数据操作 + 数据预处理_第3张图片
访问元素
在jupyter中实践一下,import numpy引入numpy库
定义一个二维数组:

而后访问一些元素:
【动手学深度学习】1.数据操作 + 数据预处理_第4张图片
前四个访问都好理解,只需要注意索引是从0开始,和别的编程语言一样,且冒号左右指的是一个左闭右开的区间,然后最后一个子区域[::3,::2]中的元素,指的是每跳3行且每跳2列访问元素,具体语法可以学习numpy中的数组操作。
python中的数组其实叫列表,不过这并不重要


3. 张量 表示一个数值组成的数组,但这个数组可能有多个维度。
【动手学深度学习】1.数据操作 + 数据预处理_第5张图片
我们可以通过shape属性访问张量的 形状 和张量中元素的总数

注意numel()是直接返回int类型的元素个数

要改变一个张量的形状而不改变元素数量和元素值,使用reshape函数
【动手学深度学习】1.数据操作 + 数据预处理_第6张图片
使用全0、全1、其他常量或者从特定分布中随机采样的数字
【动手学深度学习】1.数据操作 + 数据预处理_第7张图片
通过提供包含数值的 Python 列表(或嵌套列表)来为所需张量中的每个元素赋予确定值
【动手学深度学习】1.数据操作 + 数据预处理_第8张图片
常见的标准算术运算符(+、-、*、/ 和 **)都可以被升级为按元素运算
【动手学深度学习】1.数据操作 + 数据预处理_第9张图片
还有许多其他运算,比如指数运算

把张量 连结(concatenate) 在一起
【动手学深度学习】1.数据操作 + 数据预处理_第10张图片
这里dtype是指定float32类型,dim是指定维度。

通过 逻辑运算符 构建二元张量
【动手学深度学习】1.数据操作 + 数据预处理_第11张图片
对张量中的所有元素进行求和会产生一个只有一个元素的张量

即使形状不同,我们仍然可以通过调用 广播机制 (broadcasting mechanism) 来执行按元素操作
【动手学深度学习】1.数据操作 + 数据预处理_第12张图片
广播机制
由于广播机制的存在,要十分注意代码的逻辑,防止出现意外的数组结果,这会导致代码在运行,但结果可能完全不对,而你又找不到问题出在哪儿…

可以用 [-1] 选择最后一个元素,可以用 [1:3] 选择第二个和第三个元素
【动手学深度学习】1.数据操作 + 数据预处理_第13张图片
除读取外,我们还可以通过指定索引来将元素写入矩阵
【动手学深度学习】1.数据操作 + 数据预处理_第14张图片
为多个元素赋值相同的值,我们只需要索引所有元素,然后为它们赋值
【动手学深度学习】1.数据操作 + 数据预处理_第15张图片
运行一些操作可能会导致为新结果分配内存
【动手学深度学习】1.数据操作 + 数据预处理_第16张图片
执行原地操作
【动手学深度学习】1.数据操作 + 数据预处理_第17张图片
如果在后续计算中没有重复使用 X,我们也可以使用 X[:] = X + Y 或 X += Y 来减少操作的内存开销
【动手学深度学习】1.数据操作 + 数据预处理_第18张图片
转换为 NumPy 张量
【动手学深度学习】1.数据操作 + 数据预处理_第19张图片
将大小为1的张量转换为 Python 标量


数据预处理

创建一个人工数据集,并存储在csv(逗号分隔值)文件
【动手学深度学习】1.数据操作 + 数据预处理_第20张图片
从创建的csv文件中加载原始数据集
【动手学深度学习】1.数据操作 + 数据预处理_第21张图片
为了处理缺失的数据,典型的方法包括 插值删除 , 这里,我们将考虑插值
【动手学深度学习】1.数据操作 + 数据预处理_第22张图片
对于inputs中的类别值或离散值,我们将“NaN”视为一个类别
【动手学深度学习】1.数据操作 + 数据预处理_第23张图片
这里的操作是将原来 Alley列进行特征处理,变成Alley_Pave列和Alley_nan列,其中Alley_Pave列指的是如果值原来为Pave则填充1,否则填充0,Alley_nan列则与反过来填充。

现在inputs和outputs中的所有条目都是数值类型,它们可以转换为张量格式
【动手学深度学习】1.数据操作 + 数据预处理_第24张图片


突然意识到自己都是贴的图片,应该把代码放上来
本文源代码 lesson01
链接:https://pan.baidu.com/s/1tj6qHFFuQ1GmVuWzwS1TLw
提取码:d2lc

你可能感兴趣的:(动手学深度学习笔记,深度学习)