小编sob*_*bek的帖子

在 zarr 数组上创建一个生成器,并为 pytorch 数据加载器提供开始和结束

我正在开发一个 pytorch 项目,我的数据保存在zarr.

随机访问的zarr成本很高,但由于zarr使用了块式缓存,迭代速度非常快。为了利用这一事实,我与多个工作人员一起使用IterableDataset

class Data(IterableDataset):
    def __init__(self, path, start=None, end=None):
        super(Data, self).__init__()
        store = zarr.DirectoryStore(path)
        self.array = zarr.open(store, mode='r')

        if start is None:
            start = 0
        if end is None:
            end = self.array.shape[0]

        assert end > start

        self.start = start
        self.end = end

    def __iter__(self):
        return islice(self.array, self.start, self.end)
Run Code Online (Sandbox Code Playgroud)

问题是,对于连续的工作人员,随着行的顺序,自然self.array会变得更大,创建生成器会在我的训练/验证过程中花费大量时间,因为仍然需要迭代不需要的元素,直到它到达。一旦为每个工作人员创建了一个生成器,这就像一个魅力,但实现这一目标需要很长时间。10e9self.startself.enditertools.islice(array, start, end)islicestart

有没有更好的方法来创建这样的生成器?或者也许有更聪明的方法来zarr使用pytorch

python arrays pytorch zarr

5
推荐指数
1
解决办法
936
查看次数

将通过 pandas/pytables 编写的大型 hdf5 数据集转换为 vaex

我有一个非常大的数据集,我通过 append 以块的形式写入 hdf5,如下所示:

with pd.HDFStore(self.train_store_path) as train_store:
    for filepath in tqdm(filepaths):
        with open(filepath, 'rb') as file:
            frame = pickle.load(file)

        if frame.empty:
            os.remove(filepath)
            continue

        try:
            train_store.append(
                key='dataset', value=frame,
                min_itemsize=itemsize_dict)
            os.remove(filepath)
        except KeyError as e:
            print(e)
        except ValueError as e:
            print(frame)
            print(e)
        except Exception as e:
            print(e) 
Run Code Online (Sandbox Code Playgroud)

数据太大而无法加载到一个 DataFrame 中,因此我想尝试使用 vaex 进行进一步处理。不过有几件事我真的不明白。

由于 vaex 在 hdf5 中使用与 pandas/pytables (VOTable) 不同的表示形式,我想知道如何在这两种格式之间进行转换。我尝试将数据分块加载到 Pandas 中,将其转换为 vaex DataFrame 然后存储它,但似乎无法将数据附加到现有的 vaex hdf5 文件中,至少我找不到。

真的没有办法从 vaex 内部创建大型 hdf5 数据集吗?是将现有数据集转换为 vaex 表示的唯一选择(通过 python 脚本或 TOPCAT 构建文件)吗?

与我之前的问题相关,如果我在 vaex …

python hdf5 pytables pandas vaex

4
推荐指数
1
解决办法
1766
查看次数

vaex:将列移动 n 步

我正在为监督学习任务准备一个大型多元时间序列数据集,我想创建输入特征的时移版本,以便我的模型也可以从过去的值中进行推断。在pandas还有的shift(n),可以让你的命令由移动一列n列。有没有类似的东西vaex

我在vaex文档中找不到任何可比的东西。

python vaex

2
推荐指数
1
解决办法
568
查看次数

使用==矩阵尺寸时出错必须同意

当我输入超过3个字符时,我的系统会给我a/m错误

a = input('Please type f0 or f1: ' , 's');

if a == 'f0'; 
    Run_f0
elseif a == 'f1';
    Run_f1 
else 
    disp('Please enter f0 or f1 only');
end
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个错误?提前致谢

matlab

0
推荐指数
1
解决办法
1076
查看次数

标签 统计

python ×3

vaex ×2

arrays ×1

hdf5 ×1

matlab ×1

pandas ×1

pytables ×1

pytorch ×1

zarr ×1