Skip to content

Instantly share code, notes, and snippets.

@sveitser
Last active March 7, 2016 14:11
Show Gist options
  • Save sveitser/73984476c8bf3794e3f3 to your computer and use it in GitHub Desktop.
Save sveitser/73984476c8bf3794e3f3 to your computer and use it in GitHub Desktop.
from lasagne import layers, objectives, updates
import numpy as np
import theano
import theano.tensor as T
np.random.seed(0)
input_var = T.tensor4('X')
target_var = T.tensor4('X2')
input = layers.InputLayer((None, 1, 5, 5), input_var)
conv = layers.Conv2DLayer(input, num_filters=64, filter_size=(3, 3), pad=1,
nonlinearity=None, b=None)
pool = layers.MaxPool2DLayer(conv, pool_size=(3, 3), stride=(2, 2))
dense = layers.DenseLayer(pool, num_units=128, nonlinearity=None, b=None)
inverse_dense = layers.InverseLayer(dense, dense)
inverse_pool = layers.InverseLayer(inverse_dense, pool)
network = layers.InverseLayer(inverse_pool, conv)
prediction = layers.get_output(network)
loss = objectives.squared_error(prediction, target_var).mean()
g = theano.grad(loss, input_var)
f = theano.function([input_var, target_var], g)
X = np.random.randn(1, 1, 5, 5).astype(np.float32)
print(f(X, X))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment