Пример #1
0
 def minimize(self, obj):
     variables = obj.list_input_variables()
     grads = _base.gradients(obj, variables)
     updates = []
     for i, v in enumerate(variables):
         self.m.append(_base.Variable(_sym.zeros_like(v), self.name + '_m' + str(i)))
         self.v.append(_base.Variable(_sym.zeros_like(v), self.name + '_v' + str(i)))
     update_t = _sym.assign(self.t, self.t + 1)
     rate = _sym.sqrt(1 - self.beta2 ** update_t) / (1 -  self.beta1 ** update_t)
     lr_t = self.learning_rate * rate
     for var, g, m, v in zip(variables, grads, self.m, self.v):
         update_m = _sym.assign(m, self.beta1 * m + (1 - self.beta1) * g)
         update_v = _sym.assign(v, self.beta2 * v + (1 - self.beta2) * g * g)
         update_var = _sym.assign(var,
             var - lr_t * update_m / (_sym.sqrt(update_v) + self.epsilon))
         updates.append(update_var)
     return _base.group(*updates)
Пример #2
0
 def minimize(self, obj):
     variables = obj.list_input_variables()
     grads = _base.gradients(obj, variables)
     updates = []
     for i, v in enumerate(variables):
         self.m.append(
             _base.Variable(_sym.zeros_like(v), self.name + '_m' + str(i)))
         self.v.append(
             _base.Variable(_sym.zeros_like(v), self.name + '_v' + str(i)))
     update_t = _sym.assign(self.t, self.t + 1)
     rate = _sym.sqrt(1 - self.beta2**update_t) / (1 - self.beta1**update_t)
     lr_t = self.learning_rate * rate
     for var, g, m, v in zip(variables, grads, self.m, self.v):
         update_m = _sym.assign(m, self.beta1 * m + (1 - self.beta1) * g)
         update_v = _sym.assign(v,
                                self.beta2 * v + (1 - self.beta2) * g * g)
         update_var = _sym.assign(
             var,
             var - lr_t * update_m / (_sym.sqrt(update_v) + self.epsilon))
         updates.append(update_var)
     return _base.group(*updates)
Пример #3
0
def test_full():
    shape = (3, 4, 5)
    value = 7
    dtype = "float32"
    for target, ctx in ctx_list():
        data = sym.Variable("data", dtype=dtype)
        # full_like
        s = sym.full_like(data=data, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target, {"data": shape})
        m = graph_runtime.create(graph, lib, ctx)
        m.run(data=np.random.uniform(size=shape).astype(dtype))
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        np.testing.assert_allclose(out.asnumpy(),
                                   np.full(shape,
                                           fill_value=value,
                                           dtype=dtype),
                                   atol=1e-5,
                                   rtol=1e-5)
        # ones_like
        s = sym.ones_like(data=data, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target, {"data": shape})
        m = graph_runtime.create(graph, lib, ctx)
        m.run(data=np.random.uniform(size=shape).astype(dtype))
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        np.testing.assert_allclose(out.asnumpy(),
                                   np.full(shape, fill_value=1, dtype=dtype),
                                   atol=1e-5,
                                   rtol=1e-5)
        # zeros_like
        s = sym.zeros_like(data=data, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target, {"data": shape})
        m = graph_runtime.create(graph, lib, ctx)
        m.run(data=np.random.uniform(size=shape).astype(dtype))
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        np.testing.assert_allclose(out.asnumpy(),
                                   np.full(shape, fill_value=0, dtype=dtype),
                                   atol=1e-5,
                                   rtol=1e-5)
        # full
        s = sym.full(shape=shape, dtype=dtype, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target)
        m = graph_runtime.create(graph, lib, ctx)
        m.run()
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        np.testing.assert_allclose(out.asnumpy(),
                                   np.full(shape,
                                           fill_value=value,
                                           dtype=dtype),
                                   atol=1e-5,
                                   rtol=1e-5)
        # ones
        s = sym.ones(shape=shape, dtype=dtype, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target)
        m = graph_runtime.create(graph, lib, ctx)
        m.run()
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        np.testing.assert_allclose(out.asnumpy(),
                                   np.full(shape, fill_value=1, dtype=dtype),
                                   atol=1e-5,
                                   rtol=1e-5)
        # zeros
        s = sym.zeros(shape=shape, dtype=dtype, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target)
        m = graph_runtime.create(graph, lib, ctx)
        m.run()
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        np.testing.assert_allclose(out.asnumpy(),
                                   np.full(shape, fill_value=0, dtype=dtype),
                                   atol=1e-5,
                                   rtol=1e-5)
Пример #4
0
def test_full():
    shape = (3, 4, 5)
    value = 7
    dtype = "float32"
    for target, ctx in ctx_list():
        data = sym.Variable("data", dtype=dtype)
        # full_like
        s = sym.full_like(data=data, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target, {"data": shape})
        m = graph_runtime.create(graph, lib, ctx)
        m.run(data=np.random.uniform(size=shape).astype(dtype))
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        tvm.testing.assert_allclose(
            out.asnumpy(),
            np.full(shape, fill_value=value, dtype=dtype),
            atol=1e-5, rtol=1e-5)
        # ones_like
        s = sym.ones_like(data=data, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target, {"data": shape})
        m = graph_runtime.create(graph, lib, ctx)
        m.run(data=np.random.uniform(size=shape).astype(dtype))
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        tvm.testing.assert_allclose(
            out.asnumpy(),
            np.full(shape, fill_value=1, dtype=dtype),
            atol=1e-5, rtol=1e-5)
        # zeros_like
        s = sym.zeros_like(data=data, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target, {"data": shape})
        m = graph_runtime.create(graph, lib, ctx)
        m.run(data=np.random.uniform(size=shape).astype(dtype))
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        tvm.testing.assert_allclose(
            out.asnumpy(),
            np.full(shape, fill_value=0, dtype=dtype),
            atol=1e-5, rtol=1e-5)
        # full
        s = sym.full(shape=shape, dtype=dtype, fill_value=value, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target)
        m = graph_runtime.create(graph, lib, ctx)
        m.run()
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        tvm.testing.assert_allclose(
            out.asnumpy(),
            np.full(shape, fill_value=value, dtype=dtype),
            atol=1e-5, rtol=1e-5)
        # ones
        s = sym.ones(shape=shape, dtype=dtype, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target)
        m = graph_runtime.create(graph, lib, ctx)
        m.run()
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        tvm.testing.assert_allclose(
            out.asnumpy(),
            np.full(shape, fill_value=1, dtype=dtype),
            atol=1e-5, rtol=1e-5)
        # zeros
        s = sym.zeros(shape=shape, dtype=dtype, name="s")
        graph, lib, _ = nnvm.compiler.build(s, target)
        m = graph_runtime.create(graph, lib, ctx)
        m.run()
        out = m.get_output(0, tvm.nd.empty(shape, dtype=dtype))
        tvm.testing.assert_allclose(
            out.asnumpy(),
            np.full(shape, fill_value=0, dtype=dtype),
            atol=1e-5, rtol=1e-5)