-1

我正在生成一个非常大的数据集 (>120 Gb),它实际上是一个命名 (100x100x3) 矩阵的列表。一个非常大的列表(数百万条记录)。然后将它们馈送到 CNN 并分类为 4 个类别之一。一次处理这么多数据很麻烦,而且经常卡在我的 RAM 上,所以我想将我的数据集分成块并并行处理这些块。

我找到了几个包:bigmemory 和 disk.frame 看起来最合适。但他们接受名单吗?或者也许有更好的列表解决方案?

4

2 回答 2

0

{disk.frame} 仅适用于表格数据

于 2022-02-01T10:00:36.623 回答
0

我不得不将我的数据调整为 data.table 格式,所以我做了这样的事情:

我需要给它命名,所以我将名称提取到 vec:

  nameslist <- names(list1)

我将列表转换为 data.table (“块”是 list1 中用作虚拟对象的原始数据;这是矩阵的嵌套列表;每个名称有 3 个矩阵是具体的)

dummy_dframe <- data.frame(name= nameslist, chunk = I(list1))

我试图将它转换成disk.frame:

dummy_diskframe <- as.disk.frame(dummy_dframe)

然后我遇到了以下错误:

Error in `[.data.table`(df, , { :
The data frame contains these list-columns: 'chunk'. List-columns are not yet supported by disk.frame. Remove these columns to create a disk.frame

所以没有办法将它用于矩阵的嵌套列表。

之后,我改变了方法并决定使用包含名称的列和包含矩阵的列来处理虚拟 data.table - 我基于这个线程(使用 Jonathan Gellar 的示例)以两步方式创建了它:

data.frame 一列包含 R 中的矩阵

在这种情况下,disk.frame 抛出了另一种类型的错误:

Error in `[.data.table`(df, , { :
Column 2 ['mat'] is length 4 but column 1 is length 2; malformed data.table.

所以,不,不幸的是,这不是我可以用于我的数据集的解决方案。我分享这个,所以其他人可以节省他们的时间。

于 2022-01-18T18:32:14.367 回答