我的总体工作是将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导入中是否有一个函数允许我在读取(或在连接过程中写入)时保持空填充?