我想使用keras model.fit_generator方法为我编写自己的生成器,对于方法我需要定义参数" steps_per_epoch"我希望每个时期都使用一次训练数据。
现在我的问题是我在生成器中生成功能我读了wav文件并创建了fft,在我开始训练之前我不知道我有多少批次/样本。在开始使用fit_generator方法之前,我可以计算每个文件的fft,但每次更改数据集(> 20GB)时,我都需要重新计算每个文件的fft并保存每个步骤的步数。有没有更好的方法来定义fit_generator只使用一次每个样本而不计算每个时期的步数?或者我自己的生成器可以通过fit_generator何时开始一个新纪元?
这是我的生成器的代码
def my_generator(filename_list):
while True:
for fname in filename_list:
data, sr = librosa.load(fname)
fft_result = librosa.core.stft(data)
batches = features.create_batches(fft_result, batch_size)
for i in range(len(batches)):
yield (batches[i], label)
model.fit_generator(my_generator(filename_list=filename_list, batch_size=batch_size), steps_per_epoch=100, epochs=10)
答案 0 :(得分:0)
对于列表中的每个文件,您必须计算具有“ n”个批次的fft,其中每个文件的“ n”不同。如果是这样的话: