微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过映射解析函数从一个 TFRecord-Dataset 创建多个 TF-Datasets

如何解决通过映射解析函数从一个 TFRecord-Dataset 创建多个 TF-Datasets

我尝试为我的 ML 项目创建数据管道。作为数据,我有 TFRecord-Files 女巫元素包含多个共享相同标签的输入数据集。 (车辆内部噪音的多次记录和作为标签的 RPM 值)

我现在的想法是为每个麦克风创建一个数据集,然后将它们连接起来。 我的代码如下所示:

def create_Dataset(filepaths,microphones=[1],shuffle = False,return_sequence = False,return_chunks=True,crop_frequency=False,T_Window = T_Window,T_Step = 10,f_intervall = (20,1000),transformation_function = None,nparse_thread=5,n_read_threads = None,n_readers=5,shuffle_buffer_size=100):
    
    def __parse_TfRecordFiles(tfRecordData):
        parsed = tf.io.parse_single_example(tfRecordData,feature_map)
        Amount_Frequ = parsed['spectrum_matrix_shape'][0]
        timesteps = parsed['spectrum_matrix_shape'][1]         
      
        label = tf.sparse.to_dense(parsed['RPM_Label'])
        
        sm1 = tf.reshape(tf.sparse.to_dense(parsed['spectrum_matrix1']),(timesteps,Amount_Frequ))
        sm2 = tf.reshape(tf.sparse.to_dense(parsed['spectrum_matrix2']),Amount_Frequ))
        sm3 = tf.reshape(tf.sparse.to_dense(parsed['spectrum_matrix3']),Amount_Frequ))
        sm4 = tf.reshape(tf.sparse.to_dense(parsed['spectrum_matrix4']),Amount_Frequ))
        
        return (sm1,label),(sm2,(sm3,(sm4,label)     
            
    
    dataset = tf.data.Dataset.list_files(filepaths)    
    dataset = tf.data.TFRecordDataset(dataset)            


    if shuffle:
        dataset = dataset.shuffle(shuffle_buffer_size)
    
    dataset_m1,dataset_m2,dataset_m3,dataset_m4 = dataset.map(__parse_TfRecordFiles)

现在错误 too many values to unpack (expected 4) 出现在最后一行。

我知道我可以为每个数据集映射一个不同的解析函数 4 次,但我希望有其他更优雅的方法来做到这一点。甚至可能将串联放在解析函数本身中?大家有什么想法吗?

先谢谢了!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。