pytorch(二)資料準備工作ETL

2022-06-10 20:15:11 字數 2824 閱讀 4232

抽象類:具有必須待實現(重寫)的方法的python類. 因此我們可以通過擴充套件這個抽象類的功能,建立子類來構造自定義資料集。

需要重寫-override的函式:

#這裡直接繼承了mnist類,mnist類也是繼承dataset類實現。

class fashionmnist(mnist):(

urls = [

'','',

'','',

])train_set = torchvision.datasets.fashionmnist(

root='./data'

,train=true

,download=true

,transform=transforms.compose([

transforms.totensor()

]))"""

#設定儲存路徑

#選擇訓練集,預設測試集

#通過torchvison.transforms對資料做變換

#開**會很快

"""

train_loader = torch.utils.data.dataloader(train_set, batch_size = 1000,shuffle = true,num_workers = 0)

#num_workers預設為0表示用主程序來裝載資料

# 注意:pytorch multiprocessing does not work on windows!!!因此在windows系統上此處必須設定為0,即只有乙個程序存在。

#資料成可訓練的pipeline最後只需要給三個入參:資料集,批次,是否打亂。

#batch_size: data size of per batch

"""batch_size小對訓練的影響:

1.很小比如為1,訓練**嚴重,不易收斂

2.增大,下山路線,開始變正確

3.繼續增大,已經足夠準確,不再變化

4.但是隨著batch_size增大,相同的epoch次數下,迭代次數變小,因此需要注意在增大batch_size的同時,增加epoch。不能增大了batch導致迭代次數明顯減少,會導致最優化效果變差。

"""

train_set.targets#每個的標籤

train_set.targets.bincount()

#統計每個標籤類別的數目

#用途:檢查是否有嚴重的類別不平衡問題,class imbalanace

sample = next(iter(train_set))

#iter和next都是python內建函式(既可以用在train_set,也可以用在封裝好的dataloader)

# iter返回迭代器物件, next獲取乙個迭代器元素

len(sample)

print(type(sample))

#從torchvision獲取的資料集每個sample樣式:(tentor(img),tensor(label))

image.shape

# torch.size([1, 28, 28])

plt.imshow(image.squeeze(), cmap="gray") # 因為plt.imshow對於單通道顯示格式是 h w

display_loader = torch.utils.data.dataloader(train_set, batch_size=10)

images, labels = next(iter(display_loader) # len(next(iter(...))) = 2

print('types:', type(images), type(labels))

# types: print('shapes:', images.shape, labels.shape)

# shapes: torch.size([10, 1, 28, 28]) torch.size([10])

#兩種視覺化資料集的方式

#1.torchvision.utils.make_grid()

grid = torchvision.utils.make_grid(images, nrow=10)

plt.figure(figsize=(15,15))

plt.imshow(np.transpose(grid, (1,2,0))) #plt.imshow(grid.permute(1,2,0))

#2.利用dataloader顯示

how_many_to_plot = 20

train_loader = torch.utils.data.dataloader(train_set, batch_size=1, shuffle=true)

plt.figure(figsize=(50,50))

for i, img_batch in enumerate(train_loader, start=1):

#enumerate(sequence,start=1):列舉出的就是(i,img_batch)形狀,如(1,a),(2,b), (3,c)

image, label = img_batch

plt.subplot(10,10,i)

plt.imshow(image.reshape(28,28), cmap='gray')

plt.axis('off')

plt.title(train_set.classes[label.item()], fontsize=28)

if (i >= how_many_to_plot): break

plt.show()

C lua準備工作

ubuntu源裡的lua是5.0的.而最新的是5.2.如果只是學習lua語法什麼的直接apt get就好了.不過如果想做c lua的嵌入工作.就只能自己下原始碼編譯了 步驟 1.依賴的庫 readline,ncurses 這兩個庫可以從網上下原始碼然後編譯安裝.這樣其實最好了 如果不嫌源裡的舊.其實...

單據準備工作

虛擬機器 uap studio nc home 單據開發 基於studio的 單開發。擴充套件開發 對 單進行夥伴級拓展。報表平台 基於 單的分組統計和交叉統計。輕量化 交通費報銷開發。報表平台 語義模型 自由報表 基於模型的開發 實體 列舉及他們之間的關係。實體屬性 資料型別 約束 與業務介面的對...

python flask 準備工作

1 1搭建虛擬環境 安裝虛擬環境 sudo pip install virtualenv 1 建立目錄存放虛擬環境 mkdir home virtualenvs 2 開啟 bashrc檔案,並新增如下 vim bashrc 開啟後新增 export workon home home virtuale...