Pytorch搭建簡易神經網路(四) 批處理

2021-10-05 17:59:44 字數 2469 閱讀 6615

這裡和大家簡單介紹一下批處理以及優化器optimizer

批處理

在處理資料的過程中,為了使得整個網路有著更好的學習效果並且不會有過多的資源的浪費,所以有批處理的概念,具體的原理不多說,直接上**

import torch

import torch.utils.data as data

我們設定batch_size = 5,在不同的訓練任務中可以根據自己的需求或者硬體的需求進行設定,較為常見的為8,16等

batch_size = 5
隨機生成兩組資料,為了直觀給畫出來

classtorch.utils.data.dataset表示dataset的抽象類。[1]

所有其他資料集都應該進行子類化。所有子類應該override__len__和__getitem__,前者提供了資料集的大小,後者支援整數索引,範圍從0到len(self)。

class torch.utils.data.tensordataset(data_tensor, target_tensor)
包裝資料和目標張量的資料集。

通過沿著第乙個維度索引兩個張量來恢復每個樣本。

引數:

引數:

torch_dataset = data.tensordataset(x , y )

loader = data.dataloader(

dataset=torch_dataset,

batch_size=batch_size,

shuffle=true

)

該版本不需要輸入data_tensor,target_tensor,否則會報錯;同時對於windows平台下不要使用多個子程序載入資料,否則會報錯,windows平台下多執行緒有點問題,具體原因不好說。如果此時輸出loader會對應的為loader載入的資料在物理硬體上的儲存位址

通過批處理,來輸出每一批的資料,來達到直觀的效果

附完整**

import torch

import torch.utils.data as data

import matplotlib.pyplot as plt

batch_size = 5

x = torch.linspace(1,10,10)

y = torch.linspace(10,1,10)

# plt.scatter(x,y)

# plt.show()

# torch_dataset = data.tensordataset(data_tensor=x , target_tensor = y )

torch_dataset = data.tensordataset(x , y )

loader = data.dataloader(

dataset=torch_dataset,

batch_size=batch_size,

shuffle=true

)# print(loader)

for epoch in range(3):

for step ,(batch_x,batch_y) in enumerate(loader):

print('epoch:',epoch,'| step:',step,'|batch_x:',batch_x.numpy(),'|batch_y:',batch_y.numpy())

pytorch搭建神經網路入門

autograd自動求導 pytorch 是乙個基於python的科學計算包,用於代替numpy,可以利用gpu的效能進行計算 作為乙個深度學習平台。張量 tensor 類似於numpy中的ndarray,但還可以在gpu上使用,實現加速計算的效果。建立張量的幾種方式 建立乙個沒有初始化的矩陣張量 ...

pytorch 快速搭建神經網路

另一種搭建神經網路的方法,並不定義類 快速搭建乙個神經網路模組 net2 torch.nn.sequential 在這個括號裡面一層一層的壘神經元就好了 torch.nn.linear 2,10 如果中間有激勵函式,也加進來 torch.nn.relu torch.nn.linear 10,2 等同...

pytorch搭建簡單的神經網路

主要是熟悉pytorch這個開源框架。這個網路主要是用來擬合y x 2這個函式用的 所以說很簡單啦 自己生成的訓練資料,全部用來做訓練集了。網路結構 乙個輸入的向量,一層隱藏層,一層輸出層。隱藏層用的relu啟用函式,輸出層什麼都沒加,直接線性輸出。from torch.autograd impor...