Closed JuneRen closed 3 years ago
你好,
这个确实很慢,我也没有很好的想法来加速。你可以查看 deep_speaker实验报告.pdf 或者deep_speaker_report .
如果你想快一点,那么可以在 constants.py
中 把 CANDIDATES_PER_BATCH
和 HIST_TABLE_SIZE
设置的小一点。
如果你想更快,可能就只能用 random_batch.py
了
感谢您的回复,我这边尝试修改下参数。
请问,这个问题如何解决比较好,random_batch.py
要怎么设置才能在训练中使用。
如果用select_batch并且想快一点,那么在 constants.py
中 把 CANDIDATES_PER_BATCH
和 HIST_TABLE_SIZE
设置的小一点。(比如 CANDIDATES_PER_BATCH=320,HIST_TABLE_SIZE=5
)
CANDIDATES_PER_BATCH
表示每一轮需要计算从几个候选语音的embedding然后从中选择最佳的batch数据,显然CANDIDATES_PER_BATCH
越大,选择的batch就越接近全局最佳,但同时计算速度会变慢。
HIST_TABLE_SIZE
就是程序缓存的前几轮计算的embedding,程序选择batch时会从HIST_TABLE_SIZE
里面选择最优解,显然HIST_TABLE_SIZE
越大,选择可能性越大同时程序变慢。
要用 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)
- 如果用select_batch并且想快一点,那么在
constants.py
中 把CANDIDATES_PER_BATCH
和HIST_TABLE_SIZE
设置的小一点。(比如CANDIDATES_PER_BATCH=320,HIST_TABLE_SIZE=5
)CANDIDATES_PER_BATCH
表示每一轮需要计算从几个候选语音的embedding然后从中选择最佳的batch数据,显然CANDIDATES_PER_BATCH
越大,选择的batch就越接近全局最佳,但同时计算速度会变慢。HIST_TABLE_SIZE
就是程序缓存的前几轮计算的embedding,程序选择batch时会从HIST_TABLE_SIZE
里面选择最优解,显然HIST_TABLE_SIZE
越大,选择可能性越大同时程序变慢。- 要用
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)
谢谢您的解答!
您好,感谢代码的分享。我在训练train.py时,使用您设计的select_batch函数,但是在每次训练前选择最优的batch时间消耗较多,这里您是如何优化的呢?