首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在.map函数中创建tf.data标签的N个副本

如何在.map函数中创建tf.data标签的N个副本
EN

Stack Overflow用户
提问于 2022-06-28 06:56:53
回答 1查看 19关注 0票数 1

我有以下功能,可以使用tf.data读取音频文件及其标签

代码语言:javascript
复制
def get_waveform(file_path):
    audio_binary = tf.io.read_file(file_path)
    waveform, sr = tf.audio.decode_wav(contents=audio_binary,
                                       desired_channels=1)
    waveform = tf.squeeze(waveform, axis=-1)
    frames = tf.signal.frame(waveform, sr * 3, (sr * 3) // 2, pad_end=True)
    return frames


def get_label(file_path):
    parts = tf.strings.split(
        input=file_path,
        sep=os.path.sep)
    return parts[-2]

def get_waveform_and_label(file_path):
  label = get_label(file_path)
  waveform = get_waveform(file_path)
  label = ???
  return waveform, label

get_waveform函数将返回单个音频文件波形的N个帧,并且所有帧都具有相同的标签。那么,我如何重复N次,并通过压缩帧和它们相应的标签返回它呢?

EN

回答 1

Stack Overflow用户

发布于 2022-06-28 07:01:53

您只需使用tf.map_fn函数来重复标签。它以一个函数和张量作为输入,并将该函数应用于张量中的每个元素。因此,首先使用tf.shape函数获得波形张量的形状,然后将其作为第二个参数传递给tf.map_fn函数,以指定重复标签的次数。

代码语言:javascript
复制
def get_waveform_and_label(file_path):
  label = get_label(file_path)
  waveform = get_waveform(file_path)
  label = tf.map_fn(lambda x: label, tf.shape(waveform))
  return waveform, label
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72781961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档