【问题标题】:Confused on how to store 3D matrices in HDF5 file in matlab?对如何在 matlab 中的 HDF5 文件中存储 3D 矩阵感到困惑?
【发布时间】:2020-05-20 02:16:11
【问题描述】:

我有多个 3D 矩阵需要存储在 hdf5 文件中。我到处寻找,但我对在 hdf5 文件中存储数据的过程感到困惑。我可以将多个 3D 矩阵存储在 hdf5 文件的单个数据集中,还是必须为每个 3D 矩阵创建单独的数据集?我需要这个数据集来训练 3D CNN 模型。如果两种方式都可以,那么哪种方式最适合训练目的?

附加信息:矩阵大小为 12x24x12,单个数据占用不到 100 kb 的存储空间。数据集在 matlab 中创建,生成的文件将在 python 中使用(将在其中训练模型)。

【问题讨论】:

    标签: python matlab deep-learning conv-neural-network hdf5


    【解决方案1】:

    在 matlab 中,您指定 -v3.7 以将内容保存在 hdf5 中。你像这样保存你的矩阵:

    mat0 = zeros(12,24,12);
    mat1 = ones(12,24,12);
    mat2 = 2*ones(12,24,12);
    save data.mat mat0 mat1 mat2 -v7.3
    

    在 python 中,你可以这样阅读它们:

    import numpy as np
    import h5py
    f = h5py.File('/home/innereye/data.mat','r')
    mat1 = f.get('mat1')
    mat1 = np.array(mat1)
    

    您在 Stackoverflow 上有很多关于使用 python 读取 mat 文件的资料,例如,herehere

    【讨论】:

    • 我必须一次创建一个矩阵,将其保存在一个文件中,然后再创建另一个。通过您的方法,第二个矩阵覆盖第一个矩阵。我为不同的矩阵尝试了不同的 .mat 文件,但是我必须在 python 中单独调用它们。有什么方法可以防止覆盖或允许我在 python 中调用一个充满 .mat 文件的文件夹?
    • 这里有很多解决方案,但你应该更清楚你想要什么。您询问了 hdf5 这不是保存 matlab 变量的默认方式。你没有提到压倒一切的问题。请查看stackoverflow.com/help/how-to-ask 页面,特别是“如何创建最小的...示例。您基本上应该编写自己的解决方案,并要求我们帮助您解决代码中不起作用的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2013-05-07
    相关资源
    最近更新 更多