我有以下簡單的代碼:import tensorflow as tfimport numpy as npfilename = # a list of wav filenames x = tf.placeholder(tf.string)def mfcc(x): feature = # some function written in NumPy to convert a wav file to MFCC features return featuremfcc_fn = lambda x: mfcc(x)# create a training datasettrain_dataset = tf.data.Dataset.from_tensor_slices((x))train_dataset = train_dataset.repeat()train_dataset = train_dataset.map(mfcc_fn)train_dataset = train_dataset.batch(100)train_dataset = train_dataset.prefetch(buffer_size=1)# create an iterator and iterate over training datasetiterator = tf.data.Iterator.from_structure(train_dataset.output_types, train_dataset.output_shapes)train_iterator = iterator.make_initializer(train_dataset)with tf.Session() as sess: sess.run(train_iterator, feed_dict={x: filename})基本上,代碼創建了一個tf.data.dataset加載 wav 文件并將其轉換為 mfcc 功能的對象。在這里,數據轉換發生在train_dataset.map(mfcc_fn)我將用 NumPy 編寫的 mfcc 函數應用于所有輸入數據的地方。顯然,代碼在這里不起作用,因為 NumPy 不支持對tf.placeholder對象的操作。tf.data.dataset如果我必須在 NumPy 中編寫函數,是否可以映射要輸入的函數?我不使用 TensorFlow 的內置 MFCC 特征轉換的原因是因為 TensorFlow 中的 FFT 函數提供的輸出與其 NumPy 對應物明顯不同(如此處所示),而且我正在構建的模型容易產生使用 NumPy 生成的 MFCC 特征。
1 回答

慕森卡
TA貢獻1806條經驗 獲得超8個贊
您可以使用該tf.py_func
功能或tf.py_function
(這是較新的版本)來實現。它完全符合您的要求,它將包裝您的 numpy 函數,該函數在 tensorflow 操作中對數組進行操作,您可以將其作為數據集圖的一部分。
添加回答
舉報
0/150
提交
取消