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_目的就是在某一維度,根據對應維度的索引,填入對應的值;

當時有疑惑為什么要用unsqueeze來填充維度,本質是因為one-hot是填充列元素,也是第二維,所以需要坐標指示,而利用unsqueeze可以直接選取第二維中的值作為填充的索引,直接填入即可;

所以,要填充幾維,就要擴充到幾維,對應的維度內的值即為填充索引;

 

四、高級索引問題:

 

 從來沒見過的操作;

torch.le返回一個bool列表,對target內指定的值進行判斷,符合為true,不符合為false;

 

高級索引可以直接根據想同維度的bool值來進行選取,如果是true選取對應維度數據,false則跳過,這也是自己沒見過的騷操作;

 

五、各種方差均值函數的運用:

主要采用torch.mean()或者torch.var()來進行,注意使用dim的時候:

dim=0,按照列求均值;

dim=1,按照行求均值;

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM