Do dropout a different way

This commit is contained in:
Daniel Povey 2022-10-08 12:55:11 +08:00
parent fe4a7e904f
commit 606d3bd2d3

View File

@ -369,9 +369,9 @@ class ConformerEncoderLayer(nn.Module):
warmup_value = self.get_warmup_value(warmup_count)
if warmup_value < 1.0 and self.training:
delta = torch.nn.functional.dropout(src_orig - src,
p=0.5 * (1. - warmup_value),
training=self.training)
delta = src_orig - src
keep_prob = 0.5 * (1. + warmup_value)
delta = delta * (torch.rand_like(delta) < keep_prob)
src = src_orig + delta
@ -481,6 +481,8 @@ class ConformerEncoder(nn.Module):
# this seemed to be helpful...
output = 0.5 * (next_output + output)
output = output * feature_mask
return output