PyTorch 中的 torch.utils.data 解析(推薦)
PyTorch 中的 torch.utils.data 解析
PyTorch 中的 torch.utils.data
解析
在 PyTorch 中,提供了一個處理數(shù)據集的工具包 torch.utils.data
。這里來簡單介紹這個包的結構。以下內容翻譯和整理自 PyTorch 官方文檔。
概述
PyTorch 數(shù)據集處理包 torch.utils.data
的核心是 DataLoader
類。該類的構造函數(shù)簽名為
DataLoader(dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, *, prefetch_factor=2, persistent_workers=False)
它構造一個 可迭代對象 loader
,代表經過 “加工” 后的數(shù)據集。所謂的 “加工” 過程,是由構造函數(shù)參數(shù)表指定的,它包括:
- 設置數(shù)據的加載順序(通過修改
shuffle
或sampler
參數(shù)) - 對數(shù)據進行 batching 處理(通過修改
batch_size
,batch_sampler
,collate_fn
及drop_last
參數(shù)) - 實現(xiàn) multi-process loading,memory pinning 等(此處不涉及)
一旦構造了 DataLoader
對象 loader
,就可以用
for data in loader: # data 是數(shù)據集中的一組數(shù)據,且已轉換成 Tensor
來加載數(shù)據。缺省情況下,PyTorch 會對數(shù)據進行 auto-batching,此時 data
對應一個 batch 的數(shù)據。
可以將 loader
理解成一個 生成器,其定義按情況可分為:(出現(xiàn)一些概念之后都會解釋)
## 啟用 auto-batching # 對 map-style 數(shù)據集 for indices in batch_sampler: yield collate_fn([dataset[i] for i in indices]) # 對 iterable-style 數(shù)據集 dataset_iter = iter(dataset) for indices in batch_sampler: yield collate_fn([next(dataset_iter) for _ in indices]) ## 不啟用 auto-batching (設置 batch_size=None 和 batch_sampler=None) # 對 map-style 數(shù)據集 for index in sampler: yield collate_fn(dataset[index]) # 對 iterable-style 數(shù)據集 for data in iter(dataset): yield collate_fn(data)
數(shù)據集
DataLoader
構造函數(shù)中的必需參數(shù) dataset
代表一個數(shù)據集。數(shù)據集主要分為兩種:
- map-style 數(shù)據集:它是
torch.utils.data.Dataset
的子類,重載了__getitem__
和__len__
運算符,可以隨機訪問數(shù)據集中的數(shù)據 - iterable-style 數(shù)據集:它是
torch.utils.data.IterableDataset
的子類,是可迭代對象
數(shù)據加載順序
手動定義 sampler
可以通過指定 sampler
參數(shù)來手動設置加載順序。一個 sampler
是可迭代對象,其迭代的每一個值表示下一個待加載數(shù)據的 key/index。它應當實例化泛型類 torch.utils.data.Sampler[int]
的一個子類,并且重載 __iter__
和 __len__
函數(shù),具體地講:
構造函數(shù) __init__(self, data_source, *args)
必須提供一個重載了 __len__
的數(shù)據集 data_source
作為參數(shù)__iter__
返回一個整型迭代器,其每迭代一次的返回值為下一個待加載數(shù)據的 key/index__len__
返回要加載的數(shù)據總數(shù)
但是要注意,只有 map-style 數(shù)據集才可定義 sampler,因為 iterable-style 不一定支持隨機訪問。
使用內置 sampler
在模塊 torch.utils.data.sampler
中定義了一些內置的 sampler,通常來說已經夠用了。在缺省 sampler
參數(shù)的情況下,如果指定參數(shù) shuffle=False
將使用 SequentialSampler
,即按順序加載整個數(shù)據集;如果指定 shuffle=True
則使用 RandomSampler
,即隨機打亂數(shù)據后加載整個數(shù)據集。但是注意,不允許同時指定 sampler
參數(shù)和 shuffle
參數(shù)。
另外一些 sampler 可以參見模塊源代碼。
數(shù)據的 batching
在訓練神經網絡的時候經常需要將數(shù)據分成 mini-batch。PyTorch 本身提供了 auto-batching 的功能,也可以通過修改參數(shù) batch_size
,batch_sampler
,drop_last
及 collate_fn
進行自定義 batching。
使用 batch sampler
在定義了 batching 后,PyTorch 會一次性輸入多個(數(shù)量為 batch_size
)數(shù)據。這時候需使用 batch sampler 來取代普通的 sampler。
通過指定 batch_sampler
參數(shù),可以手動實現(xiàn)想要的 batch sampler。一個 batch_sampler
是 torch.utils.data.BatchSampler
的實例。在 PyTorch 源代碼中,該類繼承了 Sampler[List[int]]
,并且封裝了一個 sampler
。
- 構造函數(shù)簽名為
__init__(self, sampler, batch_size: int, drop_last: bool)
,其中sampler
是一個可迭代對象,代表被封裝的 samplerbatch_size
代表每個 batch 的數(shù)據量drop_last
表示要不要把最后一個不足batch_size
的 batch 丟掉
__iter__
返回一個迭代器,它每迭代一次,返回一個List[int]
,表示下一個 batch 的 key/index 列表__len__
返回 batch 總數(shù)
請注意,
- 如果自定義了
batch_sampler
,那么不能再指定sampler
,shuffle
,batch_size
和drop_last
參數(shù) - 如果沒有指定
batch_sampler
參數(shù),但batch_size
不為None
,則DataLoader
構造函數(shù)自動使用自定義的sampler
或由shuffle
指定的內置 sampler,以及batch_size
和drop_last
參數(shù)封裝 batch sampler - 如果既沒有指定
batch_sampler
參數(shù),又設置batch_size
為None
,則禁用 auto-batching,每加載一次輸出的是單個數(shù)據。
修改 collate_fn
參數(shù) collate_fn
指定如何對每一 batch 的數(shù)據做預處理。在模塊 torch.utils.data._utils
中,定義了兩個默認的 collate_fn
:
default_convert
:如果禁用 auto-batching,則用該函數(shù)將每個數(shù)據預處理為torch.Tensor
default_collate
:如果啟用 auto-batching,則用該函數(shù)將每個 batch 預處理為torch.Tensor
擴展:PyTorch torch.utils.data.Dataset 介紹與實戰(zhàn)案例
一、前言
訓練模型一般都是先處理 數(shù)據的輸入問題 和 預處理問題 。Pytorch提供了幾個有用的工具:torch.utils.data.Dataset 類和 torch.utils.data.DataLoader 類 。
流程是先把原始數(shù)據轉變成 torch.utils.data.Dataset 類,隨后再把得到的 torch.utils.data.Dataset 類當作一個參數(shù)傳遞給 torch.utils.data.DataLoader 類,得到一個數(shù)據加載器,這個數(shù)據加載器每次可以返回一個 Batch 的數(shù)據供模型訓練使用。
在 pytorch 中,提供了一種十分方便的數(shù)據讀取機制,即使用 torch.utils.data.Dataset
與 Dataloader
組合得到數(shù)據迭代器。在每次訓練時,利用這個迭代器輸出每一個 batch 數(shù)據,并能在輸出時對數(shù)據進行相應的預處理或數(shù)據增廣操作。
本文我們主要介紹對 torch.utils.data.Dataset 的理解,對 Dataloader 的介紹請參考我的另一篇文章:【PyTorch】torch.utils.data.DataLoader 簡單介紹與使用
在本文的最后將給出 torch.utils.data.Dataset
與 Dataloader
結合使用處理數(shù)據的實戰(zhàn)代碼。
二、torch.utils.data.Dataset 是什么
1. 干什么用的?
- pytorch 提供了一個數(shù)據讀取的方法,其由兩個類構成:torch.utils.data.Dataset 和 DataLoader。
- 如果我們要自定義自己讀取數(shù)據的方法,就需要繼承類 torch.utils.data.Dataset ,并將其封裝到DataLoader 中。
- torch.utils.data.Dataset 是一個 類 Dataset 。通過重寫定義在該類上的方法,我們可以實現(xiàn)多種數(shù)據讀取及數(shù)據預處理方式。
2. 長什么樣子?
torch.utils.data.Dataset 的源碼:
class Dataset(object): """An abstract class representing a Dataset. All other datasets should subclass it. All subclasses should override ``__len__``, that provides the size of the dataset, and ``__getitem__``, supporting integer indexing in range from 0 to len(self) exclusive. """ def __getitem__(self, index): raise NotImplementedError def __len__(self): raise NotImplementedError def __add__(self, other): return ConcatDataset([self, other])
注釋翻譯:
表示一個數(shù)據集的抽象類。
所有其他數(shù)據集都應該對其進行子類化。 所有子類都應該重寫提供數(shù)據集大小的 __len__
和 __getitem__
,支持從 0 到 len(self) 獨占的整數(shù)索引。
理解:
就是說,Dataset 是一個 數(shù)據集 抽象類,它是其他所有數(shù)據集類的父類(所有其他數(shù)據集類都應該繼承它),繼承時需要重寫方法 __len__
和 __getitem__
, __len__
是提供數(shù)據集大小的方法, __getitem__
是可以通過索引號找到數(shù)據的方法。
三、通過繼承 torch.utils.data.Dataset 定義自己的數(shù)據集類
torch.utils.data.Dataset 是代表自定義數(shù)據集的抽象類,我們可以定義自己的數(shù)據類抽象這個類,只需要重寫__len__和__getitem__這兩個方法就可以。
要自定義自己的 Dataset 類,至少要重載兩個方法:__len__
, __getitem__
- __len__返回的是數(shù)據集的大小
- __getitem__實現(xiàn)索引數(shù)據集中的某一個數(shù)據
下面將簡單實現(xiàn)一個返回 torch.Tensor 類型的數(shù)據集:
from torch.utils.data import Dataset import torch class TensorDataset(Dataset): # TensorDataset繼承Dataset, 重載了__init__, __getitem__, __len__ # 實現(xiàn)將一組Tensor數(shù)據對封裝成Tensor數(shù)據集 # 能夠通過index得到數(shù)據集的數(shù)據,能夠通過len,得到數(shù)據集大小 def __init__(self, data_tensor, target_tensor): self.data_tensor = data_tensor self.target_tensor = target_tensor def __getitem__(self, index): return self.data_tensor[index], self.target_tensor[index] def __len__(self): return self.data_tensor.size(0) # size(0) 返回當前張量維數(shù)的第一維 # 生成數(shù)據 data_tensor = torch.randn(4, 3) # 4 行 3 列,服從正態(tài)分布的張量 print(data_tensor) target_tensor = torch.rand(4) # 4 個元素,服從均勻分布的張量 print(target_tensor) # 將數(shù)據封裝成 Dataset (用 TensorDataset 類) tensor_dataset = TensorDataset(data_tensor, target_tensor) # 可使用索引調用數(shù)據 print('tensor_data[0]: ', tensor_dataset[0]) # 可返回數(shù)據len print('len os tensor_dataset: ', len(tensor_dataset))
輸出結果:
tensor([[ 0.8618, 0.4644, -0.5929],
[ 0.9566, -0.9067, 1.5781],
[ 0.3943, -0.7775, 2.0366],
[-1.2570, -0.3859, -0.3542]])
tensor([0.1363, 0.6545, 0.4345, 0.9928])
tensor_data[0]: (tensor([ 0.8618, 0.4644, -0.5929]), tensor(0.1363))
len os tensor_dataset: 4
四、為什么要定義自己的數(shù)據集類?
因為我們可以通過定義自己的數(shù)據集類并重寫該類上的方法 實現(xiàn)多種多樣的(自定義的)數(shù)據讀取方式。
比如,我們重寫 __init__
實現(xiàn)用 pd.read_csv 讀取 csv 文件:
from torch.utils.data import Dataset import pandas as pd # 這個包用來讀取CSV數(shù)據 # 繼承Dataset,定義自己的數(shù)據集類 mydataset class mydataset(Dataset): def __init__(self, csv_file): # self 參數(shù)必須,其他參數(shù)及其形式隨程序需要而不同,比如(self,*inputs) self.csv_data = pd.read_csv(csv_file) def __len__(self): return len(self.csv_data) def __getitem__(self, idx): data = self.csv_data.values[idx] return data data = mydataset('spambase.csv') print(data[3]) print(len(data))
輸出結果:
[0.000e+00 0.000e+00 0.000e+00 0.000e+00 6.300e-01 0.000e+00 3.100e-01
6.300e-01 3.100e-01 6.300e-01 3.100e-01 3.100e-01 3.100e-01 0.000e+00
0.000e+00 3.100e-01 0.000e+00 0.000e+00 3.180e+00 0.000e+00 3.100e-01
0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00 0.000e+00
1.370e-01 0.000e+00 1.370e-01 0.000e+00 0.000e+00 3.537e+00 4.000e+01
1.910e+02 1.000e+00]
4601
要點:
- 自己定義的 dataset 類需要繼承 Dataset。
- 需要實現(xiàn)必要的魔法方法:
在 __init__
方法里面進行 讀取數(shù)據文件 。
在 __getitem__
方法里支持通過下標訪問數(shù)據。
在 __len__
方法里返回自定義數(shù)據集的大小,方便后期遍歷。
五、實戰(zhàn):torch.utils.data.Dataset + Dataloader 實現(xiàn)數(shù)據集讀取和迭代
實例 1
數(shù)據集 spambase.csv 用的是 UCI 機器學習存儲庫里的垃圾郵件數(shù)據集,它一條數(shù)據有57個特征和1個標簽。
import torch.utils.data as Data import pandas as pd # 這個包用來讀取CSV數(shù)據 import torch # 繼承Dataset,定義自己的數(shù)據集類 mydataset class mydataset(Data.Dataset): def __init__(self, csv_file): # self 參數(shù)必須,其他參數(shù)及其形式隨程序需要而不同,比如(self,*inputs) data_csv = pd.DataFrame(pd.read_csv(csv_file)) # 讀數(shù)據 self.csv_data = data_csv.drop(axis=1, columns='58', inplace=False) # 刪除最后一列標簽 def __len__(self): return len(self.csv_data) def __getitem__(self, idx): data = self.csv_data.values[idx] return data data = mydataset('spambase.csv') x = torch.tensor(data[:5]) # 前五個數(shù)據 y = torch.tensor([1, 1, 1, 1, 1]) # 標簽 torch_dataset = Data.TensorDataset(x, y) # 對給定的 tensor 數(shù)據,將他們包裝成 dataset loader = Data.DataLoader( # 從數(shù)據庫中每次抽出batch size個樣本 dataset = torch_dataset, # torch TensorDataset format batch_size = 2, # mini batch size shuffle=True, # 要不要打亂數(shù)據 (打亂比較好) num_workers=2, # 多線程來讀數(shù)據 ) def show_batch(): for step, (batch_x, batch_y) in enumerate(loader): print("steop:{}, batch_x:{}, batch_y:{}".format(step, batch_x, batch_y)) show_batch()
輸出結果:
steop:0, batch_x:tensor([[0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 6.3000e-01, 0.0000e+00,
3.1000e-01, 6.3000e-01, 3.1000e-01, 6.3000e-01, 3.1000e-01, 3.1000e-01,
3.1000e-01, 0.0000e+00, 0.0000e+00, 3.1000e-01, 0.0000e+00, 0.0000e+00,
3.1800e+00, 0.0000e+00, 3.1000e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 1.3500e-01, 0.0000e+00, 1.3500e-01, 0.0000e+00, 0.0000e+00,
3.5370e+00, 4.0000e+01, 1.9100e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 6.3000e-01, 0.0000e+00,
3.1000e-01, 6.3000e-01, 3.1000e-01, 6.3000e-01, 3.1000e-01, 3.1000e-01,
3.1000e-01, 0.0000e+00, 0.0000e+00, 3.1000e-01, 0.0000e+00, 0.0000e+00,
3.1800e+00, 0.0000e+00, 3.1000e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 1.3700e-01, 0.0000e+00, 1.3700e-01, 0.0000e+00, 0.0000e+00,
3.5370e+00, 4.0000e+01, 1.9100e+02]], dtype=torch.float64), batch_y:tensor([1, 1])
steop:1, batch_x:tensor([[2.1000e-01, 2.8000e-01, 5.0000e-01, 0.0000e+00, 1.4000e-01, 2.8000e-01,
2.1000e-01, 7.0000e-02, 0.0000e+00, 9.4000e-01, 2.1000e-01, 7.9000e-01,
6.5000e-01, 2.1000e-01, 1.4000e-01, 1.4000e-01, 7.0000e-02, 2.8000e-01,
3.4700e+00, 0.0000e+00, 1.5900e+00, 0.0000e+00, 4.3000e-01, 4.3000e-01,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
7.0000e-02, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 1.3200e-01, 0.0000e+00, 3.7200e-01, 1.8000e-01, 4.8000e-02,
5.1140e+00, 1.0100e+02, 1.0280e+03],
[6.0000e-02, 0.0000e+00, 7.1000e-01, 0.0000e+00, 1.2300e+00, 1.9000e-01,
1.9000e-01, 1.2000e-01, 6.4000e-01, 2.5000e-01, 3.8000e-01, 4.5000e-01,
1.2000e-01, 0.0000e+00, 1.7500e+00, 6.0000e-02, 6.0000e-02, 1.0300e+00,
1.3600e+00, 3.2000e-01, 5.1000e-01, 0.0000e+00, 1.1600e+00, 6.0000e-02,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 6.0000e-02, 0.0000e+00, 0.0000e+00,
1.2000e-01, 0.0000e+00, 6.0000e-02, 6.0000e-02, 0.0000e+00, 0.0000e+00,
1.0000e-02, 1.4300e-01, 0.0000e+00, 2.7600e-01, 1.8400e-01, 1.0000e-02,
9.8210e+00, 4.8500e+02, 2.2590e+03]], dtype=torch.float64), batch_y:tensor([1, 1])
steop:2, batch_x:tensor([[ 0.0000, 0.6400, 0.6400, 0.0000, 0.3200, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.6400, 0.0000, 0.0000,
0.0000, 0.3200, 0.0000, 1.2900, 1.9300, 0.0000, 0.9600,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
0.0000, 0.0000, 0.7780, 0.0000, 0.0000, 3.7560, 61.0000,
278.0000]], dtype=torch.float64), batch_y:tensor([1])
一共 5 條數(shù)據,batch_size 設為 2 ,則數(shù)據被分為三組,每組的數(shù)據量為:2,2,1。
實例 2:進階
import torch.utils.data as Data import pandas as pd # 這個包用來讀取CSV數(shù)據 import numpy as np # 繼承Dataset,定義自己的數(shù)據集類 mydataset class mydataset(Data.Dataset): def __init__(self, csv_file): # self 參數(shù)必須,其他參數(shù)及其形式隨程序需要而不同,比如(self,*inputs) # 讀取數(shù)據 frame = pd.DataFrame(pd.read_csv('spambase.csv')) spam = frame[frame['58'] == 1] ham = frame[frame['58'] == 0] SpamNew = spam.drop(axis=1, columns='58', inplace=False) # 刪除第58列,inplace=False不改變原數(shù)據,返回一個新dataframe HamNew = ham.drop(axis=1, columns='58', inplace=False) # 數(shù)據 self.csv_data = np.vstack([np.array(SpamNew), np.array(HamNew)]) # 將兩個N維數(shù)組進行連接,形成X # 標簽 self.Label = np.array([1] * len(spam) + [0] * len(ham)) # 形成標簽值列表y def __len__(self): return len(self.csv_data) def __getitem__(self, idx): data = self.csv_data[idx] label = self.Label[idx] return data, label data = mydataset('spambase.csv') print(len(data)) loader = Data.DataLoader( # 從數(shù)據庫中每次抽出batch size個樣本 dataset = data, # torch TensorDataset format batch_size = 460, # mini batch size shuffle=True, # 要不要打亂數(shù)據 (打亂比較好) num_workers=2, # 多線程來讀數(shù)據 ) def show_batch(): for step, (batch_x, batch_y) in enumerate(loader): print("steop:{}, batch_x:{}, batch_y:{}".format(step, batch_x, batch_y)) show_batch()
輸出結果:
4601
steop:0, batch_x:tensor([[0.0000e+00, 2.4600e+00, 0.0000e+00, ..., 2.1420e+00, 1.0000e+01,
7.5000e+01],
[0.0000e+00, 0.0000e+00, 1.6000e+00, ..., 2.0650e+00, 1.2000e+01,
9.5000e+01],
[0.0000e+00, 0.0000e+00, 3.6000e-01, ..., 3.7220e+00, 2.0000e+01,
2.6800e+02],
...,
[7.7000e-01, 3.8000e-01, 7.7000e-01, ..., 1.4619e+01, 5.2500e+02,
9.2100e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.0000e+00, 1.0000e+00,
5.0000e+00],
[4.0000e-01, 1.8000e-01, 3.2000e-01, ..., 3.3050e+00, 1.8100e+02,
1.6130e+03]], dtype=torch.float64), batch_y:tensor([0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1,
0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0,
0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0,
1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,
1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0,
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0,
1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1,
0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1,
1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0,
0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0,
0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1,
0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0,
1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0,
0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1,
1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1,
0, 1, 0, 1])
steop:1, batch_x:tensor([[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.0000e+00, 1.0000e+00,
2.0000e+00],
[4.9000e-01, 0.0000e+00, 7.4000e-01, ..., 3.9750e+00, 4.7000e+01,
4.8500e+02],
[0.0000e+00, 0.0000e+00, 7.1000e-01, ..., 4.0220e+00, 9.7000e+01,
5.4300e+02],
...,
[0.0000e+00, 1.4000e-01, 1.4000e-01, ..., 5.3310e+00, 8.0000e+01,
1.0290e+03],
[0.0000e+00, 0.0000e+00, 3.6000e-01, ..., 3.1760e+00, 5.1000e+01,
2.7000e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.1660e+00, 2.0000e+00,
7.0000e+00]], dtype=torch.float64), batch_y:tensor([0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0,
0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0,
1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0,
1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0,
0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0,
0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0,
1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1,
1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1,
0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0,
0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1,
1, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1,
1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1,
1, 0, 0, 0])
steop:2, batch_x:tensor([[0.0000e+00, 0.0000e+00, 1.4700e+00, ..., 3.0000e+00, 3.3000e+01,
1.7700e+02],
[2.6000e-01, 4.6000e-01, 9.9000e-01, ..., 1.3235e+01, 2.7200e+02,
1.5750e+03],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 2.0450e+00, 6.0000e+00,
4.5000e+01],
...,
[4.0000e-01, 0.0000e+00, 0.0000e+00, ..., 1.1940e+00, 5.0000e+00,
1.2900e+02],
[2.6000e-01, 0.0000e+00, 0.0000e+00, ..., 1.8370e+00, 1.1000e+01,
1.5800e+02],
[5.0000e-02, 0.0000e+00, 1.0000e-01, ..., 3.7150e+00, 1.0700e+02,
1.3860e+03]], dtype=torch.float64), batch_y:tensor([1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0,
1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0,
0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0,
0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0,
0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0,
1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0,
0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0,
1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0,
1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1,
0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1,
1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0,
1, 1, 0, 0])
steop:3, batch_x:tensor([[2.6000e-01, 0.0000e+00, 5.3000e-01, ..., 2.6460e+00, 7.7000e+01,
1.7200e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 2.4280e+00, 5.0000e+00,
1.7000e+01],
[3.4000e-01, 0.0000e+00, 1.7000e+00, ..., 6.6700e+02, 1.3330e+03,
1.3340e+03],
...,
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.0000e+00, 1.0000e+00,
7.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 2.7010e+00, 2.0000e+01,
1.8100e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 4.0000e+00, 1.1000e+01,
3.6000e+01]], dtype=torch.float64), batch_y:tensor([0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1,
0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0,
1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0,
0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0,
0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1,
0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0,
0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1,
0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1,
1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0,
1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0,
1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,
1, 0, 0, 1])
steop:4, batch_x:tensor([[ 0.0000, 0.0000, 0.3100, ..., 5.7080, 138.0000, 274.0000],
[ 0.0000, 0.0000, 0.3400, ..., 2.2570, 17.0000, 158.0000],
[ 1.0400, 0.0000, 0.0000, ..., 1.0000, 1.0000, 17.0000],
...,
[ 0.0000, 0.0000, 0.0000, ..., 4.0000, 12.0000, 28.0000],
[ 0.3300, 0.0000, 0.0000, ..., 1.7880, 6.0000, 93.0000],
[ 0.0000, 14.2800, 0.0000, ..., 1.8000, 5.0000, 9.0000]],
dtype=torch.float64), batch_y:tensor([1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1,
0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0,
1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1,
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0,
0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 0,
1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0,
0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0,
1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1,
1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0,
1, 1, 0, 0])
steop:5, batch_x:tensor([[7.0000e-01, 0.0000e+00, 1.0500e+00, ..., 1.1660e+00, 1.3000e+01,
1.8900e+02],
[0.0000e+00, 3.3600e+00, 1.9200e+00, ..., 6.1370e+00, 1.0700e+02,
1.7800e+02],
[5.4000e-01, 0.0000e+00, 1.0800e+00, ..., 5.4540e+00, 6.8000e+01,
1.8000e+02],
...,
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 3.8330e+00, 9.0000e+00,
2.3000e+01],
[6.0000e-02, 6.5000e-01, 7.1000e-01, ..., 4.7420e+00, 1.1700e+02,
1.3420e+03],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 2.6110e+00, 1.2000e+01,
4.7000e+01]], dtype=torch.float64), batch_y:tensor([1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0,
0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1,
0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1,
0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1,
1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1,
0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1,
1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1,
0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0,
0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1,
0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1,
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0,
0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 1, 1, 1])
steop:6, batch_x:tensor([[0.0000e+00, 1.4280e+01, 0.0000e+00, ..., 1.8000e+00, 5.0000e+00,
9.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.9280e+00, 1.5000e+01,
5.4000e+01],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.0692e+01, 6.5000e+01,
1.3900e+02],
...,
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.5000e+00, 5.0000e+00,
2.4000e+01],
[7.6000e-01, 1.9000e-01, 3.8000e-01, ..., 3.7020e+00, 4.5000e+01,
1.0700e+03],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 2.0000e+00, 1.2000e+01,
8.8000e+01]], dtype=torch.float64), batch_y:tensor([0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 1,
0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1,
0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,
1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1,
1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0,
0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1,
0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0,
0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0,
0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1,
0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1,
0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0,
0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1,
1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 0])
steop:7, batch_x:tensor([[0.0000e+00, 2.7000e-01, 0.0000e+00, ..., 5.8020e+00, 4.3000e+01,
4.1200e+02],
[0.0000e+00, 3.5000e-01, 7.0000e-01, ..., 3.6390e+00, 6.1000e+01,
3.1300e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.5920e+00, 7.0000e+00,
1.2900e+02],
...,
[8.0000e-02, 1.6000e-01, 8.0000e-02, ..., 2.7470e+00, 8.6000e+01,
1.9950e+03],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.6130e+00, 1.1000e+01,
7.1000e+01],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.9110e+00, 1.5000e+01,
6.5000e+01]], dtype=torch.float64), batch_y:tensor([0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0,
0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0,
1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1,
0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0,
1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1,
1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0,
0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0,
0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0,
0, 1, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0,
1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1,
0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1,
0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1,
1, 0, 0, 0])
steop:8, batch_x:tensor([[1.7000e-01, 0.0000e+00, 1.7000e-01, ..., 1.7960e+00, 1.2000e+01,
4.5800e+02],
[3.7000e-01, 0.0000e+00, 6.3000e-01, ..., 1.1810e+00, 4.0000e+00,
1.0400e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.0000e+00, 1.0000e+00,
7.0000e+00],
...,
[2.3000e-01, 0.0000e+00, 4.7000e-01, ..., 2.4200e+00, 1.2000e+01,
3.3400e+02],
[0.0000e+00, 0.0000e+00, 1.2900e+00, ..., 1.3500e+00, 4.0000e+00,
2.7000e+01],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.3730e+00, 1.1000e+01,
1.6900e+02]], dtype=torch.float64), batch_y:tensor([1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1,
0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0,
1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0,
0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0,
0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0,
0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0,
0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1,
0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1,
0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0,
1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,
0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0,
1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,
0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1,
1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0,
1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0,
0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1,
0, 0, 0, 0])
steop:9, batch_x:tensor([[0.0000e+00, 6.3000e-01, 0.0000e+00, ..., 2.2150e+00, 2.2000e+01,
1.1300e+02],
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 1.0000e+00, 1.0000e+00,
5.0000e+00],
[0.0000e+00, 0.0000e+00, 2.0000e-01, ..., 1.1870e+00, 1.1000e+01,
1.1400e+02],
...,
[0.0000e+00, 0.0000e+00, 0.0000e+00, ..., 2.3070e+00, 1.6000e+01,
3.0000e+01],
[5.1000e-01, 4.3000e-01, 2.9000e-01, ..., 6.5900e+00, 7.3900e+02,
2.3330e+03],
[6.8000e-01, 6.8000e-01, 6.8000e-01, ..., 2.4720e+00, 9.0000e+00,
8.9000e+01]], dtype=torch.float64), batch_y:tensor([0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0,
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,
0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1,
1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0,
0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0,
0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1,
0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1,
0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0,
1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1,
1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0,
1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0,
1, 1, 1, 1])
steop:10, batch_x:tensor([[0.0000e+00, 2.5000e-01, 7.5000e-01, 0.0000e+00, 1.0000e+00, 2.5000e-01,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 2.5000e-01, 2.5000e-01,
1.2500e+00, 0.0000e+00, 0.0000e+00, 2.5000e-01, 0.0000e+00, 1.2500e+00,
2.5100e+00, 0.0000e+00, 1.7500e+00, 0.0000e+00, 2.5000e-01, 0.0000e+00,
0.0000e+00, 0.0000e+00, 2.5000e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 4.2000e-02, 0.0000e+00, 0.0000e+00,
1.2040e+00, 7.0000e+00, 1.1800e+02]], dtype=torch.float64), batch_y:tensor([0])
一共 4601 條數(shù)據,按 batch_size = 460 來分:能劃分為 11 組,前 10 組的數(shù)據量為 460,最后一組的數(shù)據量為 1 。
參考鏈接
- torch.Tensor.size()方法的使用舉例
- Pytorch筆記05-自定義數(shù)據讀取方式orch.utils.data.Dataset與Dataloader
- pytorch 可訓練數(shù)據集創(chuàng)建(torch.utils.data)
- Pytorch的第一步:(1) Dataset類的使用
- pytorch中的torch.utils.data.Dataset和torch.utils.data.DataLoader
到此這篇關于PyTorch torch.utils.data.Dataset概述案例詳解的文章就介紹到這了,更多相關PyTorch torch.utils.data.Dataset內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python實現(xiàn)nao機器人身體軀干和腿部動作操作
這篇文章主要為大家詳細介紹了python實現(xiàn)nao機器人身體軀干和腿部動作操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04Python中列表遍歷使用range和enumerate的區(qū)別講解
這篇文章主要介紹了Python中列表遍歷使用range和enumerate的區(qū)別,在Python編程語言中,遍歷list有range和enumerate方法,本文結合示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12Python+Tkinter實現(xiàn)軟件自動更新與提醒
這篇文章主要為大家詳細介紹了Python如何利用Tkinter編寫一個軟件自動更新與提醒小程序,文中的示例代碼簡潔易懂,感興趣的小伙伴可以動手嘗試一下2023-07-07