Skip to content

Instantly share code, notes, and snippets.

@bricksdont
Last active April 20, 2020 13:07
Show Gist options
  • Save bricksdont/db077164f3205a175a40b2b7c1f22d27 to your computer and use it in GitHub Desktop.
Save bricksdont/db077164f3205a175a40b2b7c1f22d27 to your computer and use it in GitHub Desktop.
import mxnet as mx
import numpy as np
import random
from collections import namedtuple
def run(seed: int, init_method: str):
mx.random.seed(seed)
# module
Batch = namedtuple('Batch', ['data'])
data = mx.sym.Variable('data')
out = mx.sym.FullyConnected(data, name='out', num_hidden=6)
mod = mx.mod.Module(symbol=out, label_names=None)
mod.bind(data_shapes=[('data', (1, 2))])
# initializer
if init_method == "normal":
init = mx.init.Normal(0.005)
elif init_method == "xavier":
init = mx.init.Xavier("uniform", "avg", 3.0)
mod.init_params(init)
for dictionary in mod.get_params():
for key in dictionary:
if key == "out_weight":
return dictionary[key].asnumpy()
return None
seed = 1
results = []
init_method = "normal"
for _ in range(100):
results.append(run(seed, init_method))
first = results[0]
for result in results[1:]:
assert np.allclose(first, result)
results = []
init_method = "xavier"
for _ in range(100):
results.append(run(seed, init_method))
first = results[0]
for result in results[1:]:
assert np.allclose(first, result)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment