对。因此,我正在研究有关使用机器学习的音频的问题。我的数据集非常大,不适合我的ram。因此,我想为它制作一个自定义音频数据生成器,然后将其传递给Keras的model.fit_generator
。
但是,我不确定如何将数据准确传递到fit_generator
。
另一个问题是,函数dataset_creator_PP
在CPU时间方面非常昂贵,以至于会阻塞我的GPU。 Keras的fit_generator()
能以某种方式并行化我的批处理吗?如果是这样,怎么办?还是我需要使用多重处理来解决该问题?我是否应该从函数中删除batch_size
参数,而一次使其仅产生1个文件。如果是这样,那么谁来跟踪所有/尚未用于培训的文件?
注意:您可能会发现一些有用的信息-
all_files:训练样本(train_X)的所有文件名都在path_c1中。输出文件(train_y)在path_c2中具有相同的文件名
dataset_creator_PP
打开这些文件,然后对其进行一些繁重的预处理。
感谢您抽出宝贵的时间阅读并希望分享此问题的答案。
请在下面找到代码
我的生成器功能
def audio_datagen(all_files, batch_size, path_c1, path_c2, sr, nfft, hop_len, mfcc_coefs):
while True:
# initialize batches of data:
counter = 0
stft_c1, stft_c2 = dataset_creator_PP(path_c1, path_c2, sr, nfft, hop_len,
mfcc_coefs, all_files[(counter+0):(counter+batch_size)])
counter += batch_size
yeild stft_c2, stft_c1