# Spatial Transformer Network The Spatial Transformer Network [1] allows the spatial manipulation of data within the network.


### API A Spatial Transformer Network implemented in Tensorflow 0.7 and based on [2]. #### How to use


```python transformer(U, theta, downsample_factor=1) ``` #### Parameters U : float The output of a convolutional net should have the shape [num_batch, height, width, num_channels]. theta: float The output of the localisation network should be [num_batch, 6]. downsample_factor : float A value of 1 will keep the original size of the image Values larger than 1 will downsample the image. Values below 1 will upsample the image example image: height = 100, width = 200 downsample_factor = 2 output image will then be 50, 100 #### Notes To initialize the network to the identity transform init ``theta`` to : ```python identity = np.array([[1., 0., 0.], [0., 1., 0.]]) identity = identity.flatten() theta = tf.Variable(initial_value=identity) ``` #### Experiments


We used cluttered MNIST. Left column are the input images, right are the attended parts of the image by an STN. All experiments were run in Tensorflow 0.7. ### References [1] Jaderberg, Max, et al. "Spatial Transformer Networks." arXiv preprint arXiv:1506.02025 (2015) [2] https://github.com/skaae/transformer_network/blob/master/transformerlayer.py