代码之家  ›  专栏  ›  技术社区  ›  demongolem

在Julia和HDF5 import中,如何在阅读时保持填充

  •  0
  • demongolem  · 技术社区  · 6 年前

    我的总体工作是将4个现有的hdf5文件连接到一个新的hdf5文件中。每个hdf5文件中有6个数据集,我使用一些Julia代码成功地创建了新的hdf5文件。然而,当我打算使用这个组合的hdf5文件作为源来训练机器学习算法时,我在试图读取6个数据集中的一个时遇到了一个问题。

    DATASET "/train/gt" {
    DATATYPE  H5T_STRING {
      STRSIZE 105;
      STRPAD H5T_STR_NULLPAD;
      CSET H5T_CSET_ASCII;
      CTYPE H5T_C_S1;
    }
    DATASPACE  SIMPLE { ( 8711 ) / ( 8711 ) }
    

    您注意到类型是一个字符串null,填充到105个字符。当我这样做的时候:

    dataj = h5read(r, "/train/gt")
    

    DATASET "/train/gt" {
       DATATYPE  H5T_STRING {
          STRSIZE H5T_VARIABLE;
          STRPAD H5T_STR_NULLTERM;
          CSET H5T_CSET_UTF8;
          CTYPE H5T_C_S1;
       }
       DATASPACE  SIMPLE { ( 14868 ) / ( 14868 ) }
    

    因此,在训练模型(python,而不是Julia)时,使用了一个decode函数,它不起作用,因为它被视为字符串类型,而decode对字符串变量不起作用(在python3中)。也就是说,在创建这个新的hdf5时,我没有保留预期的字符串格式。

    所以我可以在读取hdf5文件时保持空填充,还是必须重新提供它?更重要的是,在Julia的hdf5导入中是否有一个函数允许我在读取(或在连接过程中写入)时保持空填充?

    0 回复  |  直到 6 年前
    推荐文章