I need to generate masks for dropout for a specific neural network. I am looking at the fastest way possible to achieve this using numpy (CPU only).
I have tried:
def gen_mask_1(size, p=0.75):
return np.random.binomial(1, p, size)
def gen_mask_2(size, p=0.75):
mask = np.random.rand(size)
mask[mask>p]=0
mask[mask!=0]=1
return mask
where p is the probability of having 1
The speed of these two approaches is comparable.
%timeit gen_mask_1(size=2048)
%timeit gen_mask_2(size=2048)
45.9 µs ± 575 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
47.4 µs ± 372 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Are there faster methods?
Aucun commentaire:
Enregistrer un commentaire