0

我的数据集由 5-180 秒之间的音频片段组成。示例的数量足够小,可以将其缓存在内存中,而不是一遍又一遍地从磁盘读取。将数据存储在常量张量/变量中并使用tf.train.slice_input_producer将允许我将数据集缓存在内存中,但它需要将所有数据存储在一个矩阵中。由于某些示例比其他示例长得多,因此该矩阵可能不必要地大,并且对于 RAM 来说可能太大。

我可以简单地为我的数据提供一个 numpy 数组列表,并使用 a 以非 tensforflow 方式进行整个输入读取-随机化-预处理feed_dict,但我想知道是否有一种方法可以在不完全放弃 tensorflow 的情况下做到这一点输入读取-随机化-预处理部分。

谢谢!

4

1 回答 1

2

更新的tf.data库提供了tf.data.Dataset.cache一种将整个数据集缓存到内存或文件中的方法。

例如:

dataset = ...
dataset = dataset.map(preprocessing_fn)  # apply preprocessing
dataset = dataset.cache()  # cache entire dataset in memory after preprocessing

我已经提供了有关如何cache()此答案中使用的更多详细信息。

于 2018-02-12T00:59:35.163 回答