Pytorch基础-表格数据问题
本章节主要讲述如何利⽤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_⽬的就是在某⼀维度,根据对应维度的索引,填⼊对应的值;trunc函数ex
当时有疑惑为什么要⽤unsqueeze来填充维度,本质是因为one-hot是填充列元素,也是第⼆维,所以需要坐标指⽰,⽽利⽤unsqueeze可以直接选取第⼆维中的值作为填充的索引,直接填⼊即可;
所以,要填充⼏维,就要扩充到⼏维,对应的维度内的值即为填充索引;
四、⾼级索引问题:
从来没见过的操作;
torch.le返回⼀个bool列表,对target内指定的值进⾏判断,符合为true,不符合为false;
⾼级索引可以直接根据想同维度的bool值来进⾏选取,如果是true选取对应维度数据,false则跳过,这也是⾃⼰没见过的骚操作;
五、各种⽅差均值函数的运⽤:
主要采⽤an()或者torch.var()来进⾏,注意使⽤dim的时候:
dim=0,按照列求均值;
dim=1,按照⾏求均值;
返回的维度和⾏或者列维度相同;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论