如何解决通过映射解析函数从一个 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 举报,一经查实,本站将立刻删除。