首页 > 其他 > 详细

Pytorch基础-表格数据问题

时间:2020-12-16 18:48:19      阅读:40      评论:0      收藏:0      [点我收藏+]

本章节主要讲述如何利用python和pytorch来读取csv文件;

 

主要重点在于以下几个:

1.如何读取csv文件;

2.关于切片问题;

3.如何从单值target来构建one-hot target;

4.关于高级索引的问题;

5.各种均值和方差函数的使用;

 

一、CSV文件读取:

关于csv文件读取,可以直接采用numpy或者python中的csv文件包进行读取;

技术分享图片

 

 值得注意的是loadtxt函数中的四个参数:

1.指定文件路径;

2.指定文件读取的值类型;

3.指定数据分隔符(也就是每一行每一项的分隔符);

4.指定从第几行开始读取;

 

二、关于切片问题:

切片问题还是老生常谈,对于本例子中给出的数据,最后一列是标签,所以必须要对data和target进行分开提取;

技术分享图片

 

 其中使用.long()函数来进行转换,把标签从浮点转化为整形数据;

 

三、one-hot标签的问题:

对于不少集合中,多以连续数值标签作为类别,例如0-9代表不同的十类,但是对于类别标签,也往往需要转换为one-hot编码;

技术分享图片

 

 对于target,是tensor(4898,1)形式的张量,由于是十类,所以one-hot标签应该为(4898,10)形式;

而后使用scatter_在target_onehot上直接进行更改;

其中值得注意的是其三个参数:

1.指出修改的是哪一个维度(由于本例子是二维数组,修改的是列,所以应该是1而非0);

2.注意一下unsqueeze()函数;


unsqueeze函数:

旨在进行维度扩充,如下所示:

技术分享图片

 

 相当于新增维度,直接总1维向量变为2维向量,尽管二维中只有一个元素;


3.指出填充的数字,one-hot直接填充1即可;

 

所以总而言之,是scatter_目的就是在某一维度,根据对应维度的索引,填入对应的值;

当时有疑惑为什么要用unsqueeze来填充维度,本质是因为one-hot是填充列元素,也是第二维,所以需要坐标指示,而利用unsqueeze可以直接选取第二维中的值作为填充的索引,直接填入即可;

所以,要填充几维,就要扩充到几维,对应的维度内的值即为填充索引;

 

四、高级索引问题:

技术分享图片

 

 从来没见过的操作;

torch.le返回一个bool列表,对target内指定的值进行判断,符合为true,不符合为false;

 

高级索引可以直接根据想同维度的bool值来进行选取,如果是true选取对应维度数据,false则跳过,这也是自己没见过的骚操作;

 

五、各种方差均值函数的运用:

主要采用torch.mean()或者torch.var()来进行,注意使用dim的时候:

dim=0,按照列求均值;

dim=1,按照行求均值;

返回的维度和行或者列维度相同;

 

Pytorch基础-表格数据问题

原文:https://www.cnblogs.com/songlinxuan/p/14144490.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!