예제 #1
0
    def check_load_module():
        temp = util.tempdir()
        path_lib = temp.relpath("deploy.so")
        libmod.export_library(path_lib)
        with open(temp.relpath("deploy.json"), "w") as fo:
            fo.write(deploy_graph.json())
        with open(temp.relpath("deploy.params"), "wb") as fo:
            fo.write(nnvm.compiler.save_param_dict(params))

        # Load lib, json, and params back.
        loaded_lib = tvm.module.load(path_lib)
        loaded_json = open(temp.relpath("deploy.json")).read()
        loaded_json = graph.load_json(loaded_json)
        loaded_params = bytearray(
            open(temp.relpath("deploy.params"), "rb").read())

        module = graph_runtime.create(loaded_json, loaded_lib, contexts)
        loaded_params = nnvm.compiler.load_param_dict(loaded_params)
        module.set_input(**loaded_params)
        module.run()
        _, oshape = graph_util.infer_shape(loaded_json)
        module_out = []
        for i in range(len(sym.list_output_names())):
            out = module.get_output(i, out=tvm.nd.empty(oshape[i], dtype))
            module_out.append(out)
            npt.assert_allclose(out.asnumpy(),
                                orig_out[i].asnumpy(),
                                rtol=1e-5,
                                atol=1e-5)
예제 #2
0
def test_json_pass():
    x = sym.Variable('x')
    y = sym.dense(data=x, name='conv', units=30)
    g = graph.create(y)
    ret = g.apply('SaveJSON')
    ret._set_json_attr('json', ret.json_attr('json'))
    g2 = ret.apply('LoadJSON')
    assert g2.apply('SaveJSON').json_attr('json') == ret.json_attr('json')
    json = g.json()
    g2 = graph.load_json(json)
    assert json == g2.json()
예제 #3
0
def test_json_pass():
    x = sym.Variable('x')
    y = sym.dense(data=x, name='conv', units=30)
    g = graph.create(y)
    ret = g.apply('SaveJSON')
    ret._set_json_attr('json', ret.json_attr('json'))
    g2 = ret.apply('LoadJSON')
    assert g2.apply('SaveJSON').json_attr('json') == ret.json_attr('json')
    json = g.json()
    g2 = graph.load_json(json)
    assert json == g2.json()
예제 #4
0
net = symbol.Group([net1, net2])

deploy_graph, lib, params = nnvm.compiler.build(
    net, target="llvm", shape=shape_dict, dtype="float32", params=params)

temp = path.curdir
path_lib = path.join(temp, "deploy.so")
lib.export_library(path_lib)
with open(path.join(temp, "deploy.json"), "w") as fo:
    fo.write(deploy_graph.json())
with open(path.join(temp, "deploy.params"), "wb") as fo:
    fo.write(nnvm.compiler.save_param_dict(params))

loaded_lib = tvm.module.load(path_lib)
loaded_json = open(path.join(temp, "deploy.json")).read()
loaded_json = graph.load_json(loaded_json)
loaded_params = bytearray(
    open(path.join(temp, "deploy.params"), "rb").read())

module = graph_runtime.create(loaded_json, loaded_lib, tvm.cpu(0))
loaded_params = nnvm.compiler.load_param_dict(loaded_params)
module.set_input(**loaded_params)
module.run()
_, oshape = graph_util.infer_shape(loaded_json)
out1 = module.get_output(0, out=tvm.nd.empty(oshape[0], "float32"))
assert np.allclose(data1 + data2, out1.asnumpy())

out2 = module.get_output(1, out=tvm.nd.empty(oshape[1], "float32"))
assert np.allclose(data3 + data4, out2.asnumpy())