BlockDrop working on GPU

pull/87/head
Ross Wightman 5 years ago
parent 3ff19079f9
commit ef457555d3

@ -83,14 +83,13 @@ def drop_block_2d(x, drop_prob=0.1, block_size=7, gamma_scale=1.0, drop_with_noi
(height - block_size + 1)) (height - block_size + 1))
# Forces the block to be inside the feature map. # Forces the block to be inside the feature map.
w_i, h_i = torch.meshgrid(torch.arange(width), torch.arange(height)) w_i, h_i = torch.meshgrid(torch.arange(width).to(x.device), torch.arange(height).to(x.device))
valid_block = ((w_i >= clipped_block_size // 2) & (w_i < width - (clipped_block_size - 1) // 2)) & \ valid_block = ((w_i >= clipped_block_size // 2) & (w_i < width - (clipped_block_size - 1) // 2)) & \
((h_i >= clipped_block_size // 2) & (h_i < height - (clipped_block_size - 1) // 2)) ((h_i >= clipped_block_size // 2) & (h_i < height - (clipped_block_size - 1) // 2))
valid_block = torch.reshape(valid_block, (1, 1, height, width)) valid_block = torch.reshape(valid_block, (1, 1, height, width)).float()
valid_block = valid_block.to(x.dtype)
uniform_noise = torch.rand_like(x) uniform_noise = torch.rand_like(x, dtype=torch.float32)
block_mask = ((2 - seed_drop_rate - valid_block + uniform_noise) >= 1).to(x.dtype) block_mask = ((2 - seed_drop_rate - valid_block + uniform_noise) >= 1).to(dtype=x.dtype)
block_mask = -F.max_pool2d( block_mask = -F.max_pool2d(
-block_mask, -block_mask,
kernel_size=clipped_block_size, # block_size, kernel_size=clipped_block_size, # block_size,

Loading…
Cancel
Save