批訓練就是把你的資料分批訓練,像之前回歸的時候100個點可以分成兩批訓練,可以是50,50,也可以是80,20。分批有啥好處呢?我想到的就是可以用多執行緒平行計算。
莫煩這篇部落格就是說在torch.utils.data這個庫裡面(暫且稱這個庫為data)有乙個函式,也就是data.dataloader(),這個函式可以幫你實現批訓練。它包括下面幾個引數:dataset資料集,batch_size每批數量,shuffle是否打亂(一般是true),num_workers執行緒數。其中,dataset要先用data.tensordataset(,)變成dataset物件。然後用倆迴圈(乙個epoch乙個dataloader),就能實現分epoch再分批訓練
把教程裡的argument也就是data_tensor和target_tensor去了就好了
好像是因為有關執行緒的得寫。。if __name__ == '__main__':這個東西。。?講真的不太懂..先記住了。加上那個開頭就ok了,下面是**:
import torch
import torch.utils.data as data
if __name__ == '__main__':
x = torch.linspace(1, 10, 10)
y = torch.linspace(10, 1, 10)
batch_size = 5
torch_dataset = data.tensordataset(x, y)
loader = data.dataloader(
dataset=torch_dataset,
batch_size=batch_size,
shuffle=true,
num_workers=2
)a=1
for epoch in range(3):
for (step, (data, target)) in enumerate(loader):
print(
'epoch:', epoch, 'step:', step,
'\n\tbatch_x:', data.numpy(), 'batch_y:', target.numpy()
)
輸出也就是:
1 epoch: 0 step: 0
batch_x: [8. 4. 2. 3. 5.] batch_y: [3. 7. 9. 8. 6.]
1 epoch: 0 step: 1
batch_x: [ 7. 1. 9. 6. 10.] batch_y: [ 4. 10. 2. 5. 1.]
1 epoch: 1 step: 0
batch_x: [ 2. 1. 10. 6. 4.] batch_y: [ 9. 10. 1. 5. 7.]
1 epoch: 1 step: 1
batch_x: [5. 8. 7. 9. 3.] batch_y: [6. 3. 4. 2. 8.]
1 epoch: 2 step: 0
batch_x: [4. 9. 5. 6. 1.] batch_y: [ 7. 2. 6. 5. 10.]
1 epoch: 2 step: 1
batch_x: [ 7. 10. 2. 3. 8.] batch_y: [4. 1. 9. 8. 3.]
莫煩pytorch批訓練
import torch import torch.utils.data as data 包裝資料類 tensordataset 包裝資料和目標張量的資料集,通過沿著第乙個維度索引兩個張量來 class torch.utils.data.tensordataset data tensor,targe...
莫煩pytorch學習筆記
此處x,y為資料集的tensor torch dataset data.tensordataset data tensor x,target tensor y loader data.dataloader dataset torch dataset,batch size batch size,shu...
莫煩機器學習筆記 二
一 建立乙個簡單的神經網路 import tensorflow as tf import numpy as np 定義乙個新增層的函式 def add layer inputs,in size,out size,activation function none 要新增的功能 none時為線性函式 w...