如何从Google的AudioSet中提取音频嵌入(功能)?

时间:2017-09-13 18:58:53

标签: python tensorflow protocol-buffers

我在谈论https://research.google.com/audioset/download.html提供的音频功能数据集,作为由帧级音频tfrecords组成的tar.gz档案。

从tfrecord文件中提取其他所有内容工作正常(我可以提取密钥:video_id,start_time_seconds,end_time_seconds,标签),但培训所需的实际嵌入似乎根本不存在。当我从数据集迭代任何tfrecord文件的内容时,只打印了四个键video_id,start_time_seconds,end_time_seconds和标签。

这是我使用的代码:

import tensorflow as tf
import numpy as np

def readTfRecordSamples(tfrecords_filename):

    record_iterator = tf.python_io.tf_record_iterator(path=tfrecords_filename)

    for string_record in record_iterator:
        example = tf.train.Example()
        example.ParseFromString(string_record)
        print(example)  # this prints the abovementioned 4 keys but NOT audio_embeddings

        # the first label can be then parsed like this:
        label = (example.features.feature['labels'].int64_list.value[0])
        print('label 1: ' + str(label))

        # this, however, does not work:
        #audio_embedding = (example.features.feature['audio_embedding'].bytes_list.value[0])

readTfRecordSamples('embeddings/01.tfrecord')

提取128维嵌入有什么技巧吗? 或者他们真的不在这个数据集中?

1 个答案:

答案 0 :(得分:3)

解决了这个问题,需要将tfrecord文件作为序列示例读取,而不是作为示例。上面的代码适用于行

example = tf.train.Example()

替换为

example = tf.train.SequenceExample()

然后只需运行

即可查看嵌入和所有其他内容
print(example)