Walleclipse / Deep_Speaker-speaker_recognition_system

Keras implementation of ‘’Deep Speaker: an End-to-End Neural Speaker Embedding System‘’ (speaker recognition)
245 stars 81 forks source link

Select_batch速度很慢 #37

Closed JuneRen closed 3 years ago

JuneRen commented 5 years ago

您好,感谢代码的分享。我在训练train.py时,使用您设计的select_batch函数,但是在每次训练前选择最优的batch时间消耗较多,这里您是如何优化的呢?

Walleclipse commented 5 years ago

你好, 这个确实很慢,我也没有很好的想法来加速。你可以查看 deep_speaker实验报告.pdf 或者deep_speaker_report . 如果你想快一点,那么可以在 constants.py 中 把 CANDIDATES_PER_BATCHHIST_TABLE_SIZE 设置的小一点。 如果你想更快,可能就只能用 random_batch.py

JuneRen commented 5 years ago

感谢您的回复,我这边尝试修改下参数。

ZJG0 commented 4 years ago

请问,这个问题如何解决比较好,random_batch.py要怎么设置才能在训练中使用。

Walleclipse commented 4 years ago
  1. 如果用select_batch并且想快一点,那么在 constants.py 中 把 CANDIDATES_PER_BATCHHIST_TABLE_SIZE设置的小一点。(比如 CANDIDATES_PER_BATCH=320,HIST_TABLE_SIZE=5CANDIDATES_PER_BATCH表示每一轮需要计算从几个候选语音的embedding然后从中选择最佳的batch数据,显然CANDIDATES_PER_BATCH越大,选择的batch就越接近全局最佳,但同时计算速度会变慢。 HIST_TABLE_SIZE就是程序缓存的前几轮计算的embedding,程序选择batch时会从HIST_TABLE_SIZE里面选择最优解,显然HIST_TABLE_SIZE越大,选择可能性越大同时程序变慢。

  2. 要用 random_batch.py,那么需要把 train.py 里的 119行改成如下: x, y = batch.to_inputs() 注意我们在62行已经引入了 random_batch 这个函数了,也就是: batch = stochastic_mini_batch(libri, batch_size=c.BATCH_SIZE, unique_speakers=unique_speakers)

ZJG0 commented 4 years ago
  1. 如果用select_batch并且想快一点,那么在 constants.py 中 把 CANDIDATES_PER_BATCHHIST_TABLE_SIZE设置的小一点。(比如 CANDIDATES_PER_BATCH=320,HIST_TABLE_SIZE=5CANDIDATES_PER_BATCH表示每一轮需要计算从几个候选语音的embedding然后从中选择最佳的batch数据,显然CANDIDATES_PER_BATCH越大,选择的batch就越接近全局最佳,但同时计算速度会变慢。 HIST_TABLE_SIZE就是程序缓存的前几轮计算的embedding,程序选择batch时会从HIST_TABLE_SIZE里面选择最优解,显然HIST_TABLE_SIZE越大,选择可能性越大同时程序变慢。
  2. 要用 random_batch.py,那么需要把 train.py 里的 119行改成如下: x, y = batch.to_inputs() 注意我们在62行已经引入了 random_batch 这个函数了,也就是: batch = stochastic_mini_batch(libri, batch_size=c.BATCH_SIZE, unique_speakers=unique_speakers)

谢谢您的解答!