2021 02 24 載入資料集 多分類問題

2022-05-02 22:45:11 字數 2375 閱讀 8710

本期的學習**是:

全部的資料都使用被稱為batch,最大化利用向量計算的優勢,以提公升計算的速度

隨機梯度下降只使用乙個樣本,可以幫我們克服鞍點,但訓練時間較長

因此中和一下,綜合兩者的概念便被稱為mini-batch

巢狀迴圈

外層表示訓練次數,內層表示batch迭代

epoch:將樣本進行一次正向傳播和反向傳播

batch-size:每次訓練時候的樣本數量

iteration:batch被分為多少個(內層迴圈次數

樣本數量=batch-size * iteration

shuffle:作用是打亂順序

圖中的batch-size=2,因此在最後打包的時候,兩個分為一組

dataset是抽象類, 無法被例項化,只能被子類去繼承

dataloader可以被例項化

dataset的功能

在我們輸入影象時,輸出的結果如果也是影象,就很消耗記憶體

dataset可以幫助我們節省記憶體

一、直接載入全部資料(適合小型,結構化的資料表

二、分步載入資料(適合無結構資料、影象、語音

dataloader的功能

載入資料

傳入引數有例項、batch-size、是否打亂、多執行緒引數

(在使用多執行緒的時候,windows上使用spawn替代掉fork函式

例子

以上圖為例

其中在__init__中的134條是載入資料相關,資料集是n行9列的資料,其中9列裡8列是特徵值。1列是標籤

而第二行的.shape[0]的作用是提取出n來

因此我們在__len__中只需要返回len就可以得到樣本數量了

__getitem__則是返回記憶體中的元組

結果只判斷為「是/否」的為二分類問題

而多輸出可以實現多分類問題,

將每個分類作為二分類,每個分類的概率是多少

(例如:y_hat1=0.9,y_hat2=0.8

這樣的輸出是不好的

最好的輸出為所有分類的概率大於等於0,且所有的分類概率和為1

因此我們要加個softmax layer層

softmax layer層公式為

\[p(y=i)=\frac}}^e^}},i\epsilon\left \

\]其中的

\[e^}

\]是為了保證概率大於等於0,當計算出來的z<0時候,帶入上式子可》0

而在計算損失函式的時候,將結果匯入

如果多分類問題有唯一解,則匯入的結果中只有乙個1(被稱為one-hot

通過softmax layer的運算得到的結果與one-hot的值可以算出損失函式

相對吻合的結果,得到的交叉熵損失會較小,如下圖

minist資料集

在做的時候可以將影象對映到[0,1]上

from torchvision import transforms

transform主要是進行影象的轉換與對映

minist資料集這種單色圖,我們稱作為單通道圖,而對rgb影象我們稱為多通道圖

讀取時要使用w*h*c,寬x高x通道,或者如下圖c*h*c

轉換成[0,1]分布,最適合神經網路的學習

minist處理過程

資料集載入

使用標準python包將資料載入成numpy陣列格式,然後轉換成torch.tensor 自定義資料集製作與使用 可以載入資料並歸一化 torchvision資料集的輸出是範圍在 0,1 之間的pilimage,我們將其轉化成歸一化範圍為 1,1 之間的張量tensors.import torch ...

hive 自動載入資料多分割槽目錄

在使用hive建表載入資料時,如果是乙個分割槽,那麼用alter table mytable add if not exists partition p1 p1 location hdfs 或者直接用msck repair table mytable都可以將指定目錄的資料載入到分割槽 但是對於多級目...

pytorch 載入資料集

2 tensor 的 構造方式 import torch import numpy as np data np.array 1,2,3 print torch.tensor data 副本 print torch.tensor data 副本 print torch.as tensor data 檢...