- N维数组
是机器学习和神经网络的主要数据结构
![](https://i-blog.csdnimg.cn/blog_migrate/f4ee5961ebbb28915de63854aeb33846.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c5cc50c051b3529ad1ec4167f53d3386.png)
- 创建数组需要
形状:如3*4的矩阵
每个元素的类型:例如32位浮点数
每个元素的值:例如全是0.或者随机数
![](https://i-blog.csdnimg.cn/blog_migrate/9f6ffe5284692f56ebade0177f74ea46.png)
- 数据操作
首先,导入torch
![](https://i-blog.csdnimg.cn/blog_migrate/dfa072a342aa26506da3da579af18b57.png)
张量表示一个数值组成的数组,这个数组可能有多个维度
![](https://i-blog.csdnimg.cn/blog_migrate/ab848baf5acb5bcfb88f4cddc9d91b7d.png)
可以通过张量的shape属性来访问张量的形状和张量中元素的总数
![](https://i-blog.csdnimg.cn/blog_migrate/7c8ddc2a46fff3debf0b00c25f56e8bf.png)
如果想要改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数
![](https://i-blog.csdnimg.cn/blog_migrate/77f87689c91c546b9bff4b1cee79cf06.png)
使用全0、全1、其他常量或者从特定分布中随机采样的数字
![](https://i-blog.csdnimg.cn/blog_migrate/17685c7767fe2d3b03ec7c2975e93146.png)
二层、三行、四列
通过提供包含数值的Python列表(或嵌套列表)来为所需张量中的每个元素赋予确定值
![](https://i-blog.csdnimg.cn/blog_migrate/3815b4e8c4881f4e85409f62f7a6800b.png)
常见的标准算术运算符(+、-、*、/、**)都可以被升级为按元素运算
![](https://i-blog.csdnimg.cn/blog_migrate/bfa45ec5440f30c232d813f72c060ea3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/269cc19887488fbd3f7b312171c47850.png)
可以把多个张量连接在一起
![](https://i-blog.csdnimg.cn/blog_migrate/4e080b33e1e7efe54eb2595aa6046e9b.png)
0 表示y方向的拼接,1表示x方向的拼接
通过逻辑运算符构建二元向量
![](https://i-blog.csdnimg.cn/blog_migrate/346b8e8518f7cbec71e7aad55ec6588f.png)
对张量中的所有元素进行求和,会产生一个只有一个元素的张量5
![](https://i-blog.csdnimg.cn/blog_migrate/e72d4df12caf23bbde8b962cdf0ad836.png)
即使形状不同,我们仍然可以通过调用广播机制来执行按元素操作
![](https://i-blog.csdnimg.cn/blog_migrate/659eb3f37eabb3962d6db9a7ef20418d.png)
先进行复制,在相加
![](https://i-blog.csdnimg.cn/blog_migrate/cbf5196c60f88e373b5bb0a3c9e6b843.png)
元素访问
![](https://i-blog.csdnimg.cn/blog_migrate/28bcff30bf1678fb98b54a5cfb31c45b.png)
可以用[-1]选择最后一个元素,可以用[1:3]选择第二个和第三个元素
![](https://i-blog.csdnimg.cn/blog_migrate/6973bfc04d2332362fefa19db271274a.png)
还可以通过指定索引来将元素写入矩阵
![](https://i-blog.csdnimg.cn/blog_migrate/62698b064e8a66e59bc190a9d60d88f8.png)
为多个元素赋值相同的值,我们只需要索引所有元素,然后为他们赋值
![](https://i-blog.csdnimg.cn/blog_migrate/f901cb6cf60a2158f01b6fa9c3729df0.png)
运行一些操作可能会导致为新结果分配内存
![](https://i-blog.csdnimg.cn/blog_migrate/4a2ad82ce0e552a771efeedd4b12e953.png)
执行原地操作
![](https://i-blog.csdnimg.cn/blog_migrate/eb0d9c1a903f4f1618a7784549d93b1f.png)
后续计算中没有重复使用x,我们也可以使用x[:]=x+y或x+=y来减少操作的内存开销
![](https://i-blog.csdnimg.cn/blog_migrate/437ff52886a7a365a357a46b7304d05f.png)
转换为NumPy张量
![](https://i-blog.csdnimg.cn/blog_migrate/6c43eda184d2686f96511e30c596224d.png)
将大小为1的张量转换为Python标量
![](https://i-blog.csdnimg.cn/blog_migrate/ef690654574a16f9997fc8dd5c4e5c0c.png)
- 数据预处理
创建一个人工数据集,并储存在csv(逗号分隔值)文件
![](https://i-blog.csdnimg.cn/blog_migrate/2a95e0f161d0efcb280548444bed973d.png)
从创建的csv文件中加载原始数据集
![](https://i-blog.csdnimg.cn/blog_migrate/57e2f94741dfc9fb4c1f264d2c15ded9.png)
为了处理缺失的数据,典型的方法包括插值和删除
![](https://i-blog.csdnimg.cn/blog_migrate/b5d2449c0e228b59f6063a50b68d586f.png)
对于inputs中的类别值或者离散值,我们将‘NAN’视为一个类别
![](https://i-blog.csdnimg.cn/blog_migrate/50e88da1d26bdecc6f9c873c61bb5c24.png)