1 数据操作
N维数组
N维数组是机器学习和神经网络的主要数据结构。
0维的数组叫做标量,
1维的数组叫做向量,
2维的是一个特征矩阵,每一行表示一个样本,每一列代表一个特征,
3维最典型的是一个RGB图片,宽*高*通道。
4维就是n个3维数组放在一起,例如n个RGB图片的批量,批量大小*宽*高*通道。
5维例如一个视频的批量,批量大小*时间*宽*高*通道
创建数组
创建数组我们需要三个东西:形状、每个元素的数据类型、每个元素的值。
访问元素
此处列出错,应该是:1
2数据操作实现
张量表示一个数值组成的数组,这个数组可能会有多个维度。
可以通过张量的shape来访问张量的形状和张量中元素的总数。
要改变一个张量的形状而不改变元素数量和元素值,我们可以调用reshape函数 。
还可以使用全0、全1、其他常量或者从特定分布中随机采样的数字。
通过提供包函数值的python列表(或者嵌套列表)来为所需要的张量中的每个元素赋予确定值。
常见的算术运算符都可以升级为按元素运算
我们也可以把多个张量链接在一起
还可以通过逻辑运算符构建二元张量
对张量中的所有的元素求和会产生一个只有一个元素的张量
即使形状不同,我们也可以调用广播机制(broadcasting mechanism)来执行按元素操作
两个张量形状不一样,维度一样,把1维度的地方复制,例如把c复制为3*2的矩阵,把d复制为3*2的矩阵。
还可以简单地实现元素的读写
对于内存上,类似于改写的方式不会分配新内存,也就是原地操作,如果后续操作不重复使用的,可以采用原地操作减小内存消耗
NumPy是python最基础的多元数组运算框架,所有框架都可以方便的从numpy转换
3数据预处理实现
用
用pandas读取csv
数据分为事物特征和输出,对于一个data,由iloc拿出部分数据放在inputs和outputs里面
再有fillna填一个值,也就是上图的mean(),也就是对于原本确实的NumRooms的值填成了非空的均值也就是3。
对于字符串类的,把所有出现的数值都编成一个特征
现在全都是数据,就可以编为一个tensor,现在变成了一个张量
把一个csv文件做一定处理变成一个pytorch的tensor