Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带有DataLoader和3D输入的小批量。(小火炬)_Python_Neural Network_Pytorch - Fatal编程技术网

Python 带有DataLoader和3D输入的小批量。(小火炬)

Python 带有DataLoader和3D输入的小批量。(小火炬),python,neural-network,pytorch,Python,Neural Network,Pytorch,我一直在努力为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_

我一直在努力为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定义,而且必须改变我的代码

所以我想保持原样,尽可能理解如何创建这些函数。我对这些功能的理解是:
\uuuu len\uuu
以便len(数据集)返回数据集的大小。
\uuuu getitem\uuuu
以支持索引,从而可以使用数据集[i]获取第i个样本

有了这些知识,我创建了这个类,它可以找到前两个维度的索引(找到第I个样本)。但是,这将NN的输入创建为(1024x1024,2)和输出(1024x1024,1)。我希望它是(10241024,2)和(10241024,1)

如果有人对数据加载器和小批量有更好的理解,可以解释我遗漏了什么,那将是令人惊讶的。首先,这可能吗

谢谢你阅读,如果这个问题太基本,我很抱歉。我希望这是清楚的