Skip to content

Instantly share code, notes, and snippets.

@delta2323
Last active November 20, 2015 04:57
Show Gist options
  • Save delta2323/77f6922e23f963f99116 to your computer and use it in GitHub Desktop.
Save delta2323/77f6922e23f963f99116 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
import chainer
from chainer import functions as F
from chainer import optimizers as O
import numpy as np
print(chainer.__version__)
class Encoder(chainer.FunctionSet):
def __call__(self, x):
return self.l1(x)
class Comparator(chainer.FunctionSet):
def __call__(self, xs):
x1, x2 = xs
x1 = comp.enc1(x1)
x2 = comp.enc2(x2)
return x1 - x2
# model setup
enc1 = Encoder(l1=F.Linear(10, 3))
enc2 = Encoder(l1=F.Linear(10, 3))
comp = Comparator(enc1=enc1, enc2=enc2)
o = O.Adam()
o.setup(comp)
# forward
xs = (chainer.Variable(
np.random.uniform(-1, 1, (5, 10)).astype(np.float32)),
chainer.Variable(
np.random.uniform(-1, 1, (5, 10)).astype(np.float32)))
y = comp(xs)
# backward
o.zero_grads()
y.grad = np.ones_like(y.data, dtype=np.float32)
y.backward()
print('before update, W=', comp.enc1.l1.W)
o.update()
print('after update, W=', comp.enc1.l1.W)
#!/usr/bin/env python
import chainer
from chainer import links as L
from chainer import optimizers as O
import numpy as np
print(chainer.__version__)
class Encoder(chainer.Chain):
def __call__(self, x):
return self.l1(x)
class Comparator(chainer.Chain):
def __call__(self, xs):
x1, x2 = xs
x1 = self.enc1(x1)
x2 = self.enc2(x2)
return x1 - x2
# model setup
enc1 = Encoder(l1=L.Linear(10, 3))
enc2 = Encoder(l1=L.Linear(10, 3))
comp = Comparator(enc1=enc1, enc2=enc2)
o = O.Adam()
o.setup(comp)
# forward
xs = (chainer.Variable(
np.random.uniform(-1, 1, (5, 10)).astype(np.float32)),
chainer.Variable(
np.random.uniform(-1, 1, (5, 10)).astype(np.float32)))
y = comp(xs)
# backward
comp.zerograds()
y.grad = np.ones_like(y.data, dtype=np.float32)
y.backward()
print('before update, W=', comp.enc1.l1.W.data)
o.update()
print('after update, W=', comp.enc1.l1.W.data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment