def verify_l2_normalize(ishape, eps, axis): x = sym.Variable("x") y = sym.l2_normalize(x, eps=eps, axis=axis) dtype = "float32" x_np = np.random.uniform(size=ishape).astype(dtype) for target, ctx in ctx_list(): graph, lib, _ = nnvm.compiler.build(y, target, {"x": ishape}) m = graph_runtime.create(graph, lib, ctx) m.run(x=x_np) out = m.get_output(0, tvm.nd.empty(ishape)) out_np = topi.testing.l2_normalize_python(x_np, eps, axis) np.testing.assert_allclose(out.asnumpy(), out_np, atol=1e-5, rtol=1e-5) #Checking L2 normalization op followed by elementwise op relu z = sym.relu(y) x_np = np.random.uniform(low=-10.0, high=10.0, size=ishape).astype(dtype) for target, ctx in ctx_list(): graph, lib, _ = nnvm.compiler.build(z, target, {"x": ishape}) m = graph_runtime.create(graph, lib, ctx) m.run(x=x_np) out = m.get_output(0, tvm.nd.empty(ishape)) out_np = topi.testing.l2_normalize_python(x_np, eps, axis) out_np = (out_np > 0) * out_np np.testing.assert_allclose(out.asnumpy(), out_np, atol=1e-5, rtol=1e-5)
def verify_l2_normalize(ishape, eps, axis): x = sym.Variable("x", shape=ishape) y = sym.l2_normalize(x, eps=eps, axis=axis) def forward1(x): return topi.testing.l2_normalize_python(x, eps, axis) check_function(y, forward1) def forward2(x): y = forward1(x) return (y > 0) * y #Checking L2 normalization op followed by elementwise op relu check_function(sym.relu(y), forward2, in_range={'x': (-10.0, 10.0)})
def verify_l2_normalize(ishape, eps, axis): x = sym.Variable("x", shape=ishape) y = sym.l2_normalize(x, eps=eps, axis=axis) def forward1(x): return topi.testing.l2_normalize_python(x, eps, axis) check_function(y, forward1) def forward2(x): y = forward1(x) return (y > 0)*y #Checking L2 normalization op followed by elementwise op relu check_function(sym.relu(y), forward2, in_range={'x': (-10.0, 10.0)})