Created
August 2, 2017 00:53
-
-
Save atqamar/5b815b9daa8603abfdc1f4abe1cae2ba to your computer and use it in GitHub Desktop.
TG wrappers to enable padding for slim's layers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import tensorflow as tf | |
slim = tf.contrib.slim | |
VALID_PADDINGS = set(['SAME', 'VALID']) | |
# NOTES: even though pad_* functions aren't decorated by add_arg_scope, the | |
# convolutions within are within the arg_scope | |
# | |
# layer arguments are copied from: | |
# https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/layers/python/layers/layers.py | |
def apply_pad(inputs, padding): | |
if isinstance(padding, int): | |
pad_conf = [[0, 0], [padding, padding], [padding, padding], [0, 0]] | |
inputs = tf.pad(inputs, pad_conf, mode='CONSTANT') | |
padding = 'VALID' | |
elif not isinstance(padding, str) or padding not in VALID_PADDINGS: | |
raise Exception('Encountered invalid padding "%s" in convolution' % padding) | |
return inputs, padding | |
def pad_conv2d(inputs, num_outputs, kernel_size, stride=1, padding='SAME', | |
**kwargs): | |
inputs, padding = apply_pad(inputs, padding) | |
return slim.conv2d(inputs, num_outputs, kernel_size, | |
stride=stride, padding=padding, **kwargs) | |
def pad_max_pool2d(inputs, kernel_size, stride=2, padding='VALID', | |
**kwargs): | |
inputs, padding = apply_pad(inputs, padding) | |
return slim.max_pool2d(inputs, kernel_size, | |
stride=stride, padding=padding, **kwargs) | |
def pad_avg_pool2d(inputs, kernel_size, stride=2, padding='VALID', | |
**kwargs): | |
inputs, padding = apply_pad(inputs, padding) | |
return slim.avg_pool2d(inputs, kernel_size, | |
stride=stride, padding=padding, **kwargs) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment