我一直在努力为3D张量管理和创建批次。我以前使用过它来为1D tensor创建批处理。然而,在我目前的研究中,我需要用形状张量(10241024,2)创建批次
我创建了自定义数据,用作pytorch中DataLoader方法的输入。我为1D阵列创建了以下内容:
class CustomDataset(Dataset):
def __init__(self, x_tensor, y_tensor):
self.xdomain = x_tensor
self.ydomain = y_tensor
def __getitem__(self, index):
return (self.xdomain[index], self.ydomain[index])
def __len__(self):
return len(self.xdomain)
它工作得很好,但是,我意识到这分别不适用于形状为(10241024,2)和(10241024,1)的张量x_张量和y_张量。我知道我必须改变_uuuGetItem uuuuuuu和_uuuulen uuuuuuuu函数,这样它就可以将张量分成几批
我尝试了很多方法,但我知道它可以奏效的一个方法是,我可以将这些张量展平成(1024x1024,2)和(1024x1024,1)两种形状。然而,我将不得不不仅改变我的NN定义,而且必须改变我的代码
所以我想保持原样,尽可能理解如何创建这些函数。我对这些功能的理解是:
__len__
以便len(dataset)返回数据集的大小。
__getitem__
以支持索引,从而可以使用数据集[i]获取第i个样本
有了这些知识,我创建了这个类,它可以找到前两个维度的索引(找到第I个样本)。但是,这将NN的输入创建为(1024x1024,2)和输出(1024x1024,1)。我希望它是(10241024,2)和(10241024,1)
如果有人对数据加载器和小批量有更好的理解,可以解释我遗漏了什么,那将是令人惊讶的。首先,这可能吗
谢谢你阅读,如果这个问题太基本,我很抱歉。我希望这是清楚的
目前没有回答
相关问题 更多 >
编程相关推荐