如何从头开始制作 PyTorch DataLoader?
How to make PyTorch DataLoader from scratch?
是否可以从头开始重新创建一个简单版本的 PyTorch DataLoader?
class 应该能够 return 基于批次大小的当前批次。
比如下面的代码一次只能return一个例子
X = np.array([[1,2],[3,4],[5,6],[6,7]])
class DataLoader:
def __init__(self, X, b_size):
self.X = X
self.b_size = b_size
def __len__(self):
return len(self.X)
def __getitem__(self, index):
return self.X[index]
但我想要实现的是,如果我指定 b_size=2,它会 return:
Iteration 0: [[1,2],[3,4]]
Iteration 1: [[5,6],[7,8]]
是否可以在 Python 中做类似的事情?我无法使用 DataLoader class.
X = np.array([[1,2],[3,4],[5,6],[6,7]])
class DataLoader:
def __init__(self, X, b_size):
self.X = X
self.b_size = b_size
def __len__(self):
return len(self.X)//self.b_size
def __getitem__(self, index):
return self.X[index*self.b_size:index*self.b_size+self.b_size]
d = DataLoader(X, 2)
for i in range(len(d)):
print (f"Iteration {i}: {d[i]}")
输出:
Iteration 0: [[1 2]
[3 4]]
Iteration 1: [[5 6]
[6 7]]
是否可以从头开始重新创建一个简单版本的 PyTorch DataLoader? class 应该能够 return 基于批次大小的当前批次。
比如下面的代码一次只能return一个例子
X = np.array([[1,2],[3,4],[5,6],[6,7]])
class DataLoader:
def __init__(self, X, b_size):
self.X = X
self.b_size = b_size
def __len__(self):
return len(self.X)
def __getitem__(self, index):
return self.X[index]
但我想要实现的是,如果我指定 b_size=2,它会 return:
Iteration 0: [[1,2],[3,4]]
Iteration 1: [[5,6],[7,8]]
是否可以在 Python 中做类似的事情?我无法使用 DataLoader class.
X = np.array([[1,2],[3,4],[5,6],[6,7]])
class DataLoader:
def __init__(self, X, b_size):
self.X = X
self.b_size = b_size
def __len__(self):
return len(self.X)//self.b_size
def __getitem__(self, index):
return self.X[index*self.b_size:index*self.b_size+self.b_size]
d = DataLoader(X, 2)
for i in range(len(d)):
print (f"Iteration {i}: {d[i]}")
输出:
Iteration 0: [[1 2]
[3 4]]
Iteration 1: [[5 6]
[6 7]]