当前位置: 首页 > 知识库问答 >
问题:

如何使用Pytork数据加载器和用于LSTM输入的三维矩阵?

刘选
2023-03-14

我有一个三维(time_stepinputsizetotal_num)矩阵的数据集。我想使用DataLoader为LSTM获取batch_size为5的输入数据集。我的代码如下:

file_path = "…/database/frameLength100/notOverlap/a.mat"
mat_data = s.loadmat(file_path)
tensor_data = torch.from_numpy(mat_data[‘a’]) #Tensor

class CustomDataset(Dataset):

def __init__(self, tensor_data):
    self.tensor_data = tensor_data

def __getitem__(self, index):
    data = self.tensor_data[index]
    label = 1;
    return data, label

def __len__(self):
    return len(self.tensor_data)
custom_dataset = CustomDataset(tensor_data=tensor_data)
train_loader = DataLoader(dataset=custom_dataset, batch_size=5, shuffle=True)

我认为代码是错误的,但我不知道如何更正它。让我感到困惑的是,我如何让DataLoader知道哪个维度是“total_num”,以便获得批量大小为5的数据集。

共有1个答案

谷梁迪
2023-03-14

如果我理解正确,您希望批处理沿着total_num维度进行,即维度2。

您可以简单地使用该维度为数据集编制索引,即将\uuu getitem\uuu更改为data=self。张量数据[:,:,索引],并相应地在中返回self。张量数据。大小(2)而不是len(self.tensor\u数据)。然后,每个批次将具有大小[时间步长,inputsize,5]

 类似资料:
  • 嘿,伙计们,我已经建立了一个有效的LSTM模型,现在我正在尝试(不成功)添加一个嵌入层作为第一层。 这个解决方案对我不起作用。在提问之前,我还阅读了这些问题:Keras输入解释:输入形状、单位、批次大小、尺寸等,了解Keras LSTM和Keras示例。 我的输入是一种由27个字母组成的语言的字符的单键编码(1和0)。我选择将每个单词表示为10个字符的序列。每个单词的输入大小是(10,27),我有

  • 我正在参加一个在线Java课程,并尝试我的第二个作业。第一项作业并不难,但这一项就差强人意了。我真的不知道从何说起。问题是这门课是在线的,基本的指导是阅读这些章节,然后编写程序。没有太多的指导,因为我的指导老师不在我身体上。 我以前从来没有使用过扫描器,也没有创建过二维数组。我的指导老师给出了在他的基础课程的每一个领域应该做什么的笔记,但我不知道从哪一个开始。 您的任务是实现一个类似的方案来存储任

  • 我有大小为2x8x8的张量的例子,我使用PyTorch Dataloader。但是现在我想添加一个额外的1微调张量,大小为1(单个数字)作为输入。 所以我有两个神经网络的输入参数,一个是多维的,用于卷积层,另一个是我稍后将连接的。 也许我可以为每个张量形状使用两个数据加载器,但是我不能洗牌它们。 如何将一个PyTorch数据加载器用于这两个不同的输入张量?

  • 本文向大家介绍Tensorflow如何用于使用Python加载Illiad数据集?,包括了Tensorflow如何用于使用Python加载Illiad数据集?的使用技巧和注意事项,需要的朋友参考一下 Tensorflow是Google提供的一种机器学习框架。它是一个开放源代码框架,与Python结合使用以实现算法,深度学习应用程序等等。它用于研究和生产目的。 Tensor是TensorFlow中使

  • 目前为止,我们只是使用了存放在内存中的数据集,但深度学习系统经常需要在大数据集上训练,而内存放不下大数据集。其它的深度学习库通过对大数据集做预处理,绕过了内存限制,但 TensorFlow 通过 Data API,使一切都容易了:只需要创建一个数据集对象,告诉它去哪里拿数据,以及如何做转换就行。TensorFlow 负责所有的实现细节,比如多线程、队列、批次和预提取。另外,Data API 和tf