NVIDIA / mellotron

Mellotron: a multispeaker voice synthesis model based on Tacotron 2 GST that can make a voice emote and sing without emotive or singing training data
BSD 3-Clause "New" or "Revised" License
853 stars 184 forks source link

Remove dropout from decoder cell state #15

Open richardburleigh opened 4 years ago

richardburleigh commented 4 years ago

Fix FP16 stagnation at "OVERFLOW! Skipping step. Attempted loss scale.."

thepowerfuldeez commented 4 years ago

Thank you! That helped me

candlewill commented 4 years ago

but why?

mychiux413 commented 4 years ago

It helped me, too. And I noticed that the tacotron2 only apply dropout on hidden state.

After several studies, there seems to be no consensus on how to dropout RNN, and many papers discussed this.

Here is my opinion: The intuition of dropout is: "Can't rely on any one feature, so have to spread out weight.", so if we apply dropout on hidden state, which means we don't want those gates only depend on some specific input features.

But the cell states run directly along the entire chain of RNN, to achieve the long memory behavior. Therefore, if we drop the cell state weights for each recurrent, this seems to mean that we do not want the memory to pass too long?

Jeevesh8 commented 3 years ago

@mychiux413 But how would that lead to gradient overflow ?

chazo1994 commented 2 years ago

It helped me, too. And I noticed that the tacotron2 only apply dropout on hidden state.

After several studies, there seems to be no consensus on how to dropout RNN, and many papers discussed this.

Here is my opinion: The intuition of dropout is: "Can't rely on any one feature, so have to spread out weight.", so if we apply dropout on hidden state, which means we don't want those gates only depend on some specific input features.

But the cell states run directly along the entire chain of RNN, to achieve the long memory behavior. Therefore, if we drop the cell state weights for each recurrent, this seems to mean that we do not want the memory to pass too long?

@mychiux413 But how about the quality of fp32 model after change the code like this commit ?