This is a TensorFlow implementation of the following paper:
DropBlock: A regularization method for convolutional networks
arXiv. https://arxiv.org/abs/1810.12890
Graph Execution
- For 2D input
import numpy as np import tensorflow as tf from nets.dropblock import DropBlock2D # only support `channels_last` data format a = tf.placeholder(tf.float32, [None, 10, 10, 3]) keep_prob = tf.placeholder(tf.float32) training = tf.placeholder(tf.bool) drop_block = DropBlock2D(keep_prob=keep_prob, block_size=3) b = drop_block(a, training) sess = tf.Session() feed_dict = {a: np.ones([2, 10, 10, 3]), keep_prob: 0.8, training: True} c = sess.run(b, feed_dict=feed_dict) print(c[0, :, :, 0])- For 3D input
import numpy as np import tensorflow as tf from nets.dropblock import DropBlock3D # only support `channels_last` data format a = tf.placeholder(tf.float32, [None, 5, 5, 5, 1]) keep_prob = tf.placeholder(tf.float32) training = tf.placeholder(tf.bool) drop_block = DropBlock3D(keep_prob=keep_prob, block_size=3) b = drop_block(a, training) sess = tf.Session() feed_dict = {a: np.ones([1, 5, 5, 5, 1]), keep_prob: 0.2, training: True} c = sess.run(b, feed_dict=feed_dict) for i in range(5): print(c[0, i, :, :, 0])Eager Execution
- For 2D input
import tensorflow as tf from nets.dropblock import DropBlock2D tf.enable_eager_execution() # only support `channels_last` data format a = tf.ones([2, 10, 10, 3]) drop_block = DropBlock2D(keep_prob=0.8, block_size=3) b = drop_block(a, training=True) print(b[0, :, :, 0]) # update keep probability drop_block.set_keep_prob(0.1) b = drop_block(a, training=True) print(b[0, :, :, 0])- For 3D input
import tensorflow as tf from nets.dropblock import DropBlock3D tf.enable_eager_execution() # only support `channels_last` data format a = tf.ones([[1, 5, 5, 5, 1]]) drop_block = DropBlock3D(keep_prob=0.2, block_size=3) b = drop_block(a, training=True) print(b[0, :, :, 0]) # update keep probability drop_block.set_keep_prob(0.1) b = drop_block(a, training=True) print(b[0, :, :, 0])