def test_convert_nn_spec_to_half_precision(self): # simple network with quantization layer input_features = [('data', datatypes.Array(3))] output_features = [('out', datatypes.Array(3))] builder = NeuralNetworkBuilder(input_features, output_features) weights = np.random.uniform(-0.5, 0.5, (3, 3)) builder.add_inner_product(name='inner_product', W=weights, b=None, input_channels=3, output_channels=3, has_bias=False, input_name='data', output_name='out') model = MLModel(builder.spec) spec = convert_neural_network_spec_weights_to_fp16(model.get_spec()) self.assertIsNotNone(spec) # simple network without quantization layer input_features = [('data', datatypes.Array(3))] output_features = [('out', datatypes.Array(3))] builder = NeuralNetworkBuilder(input_features, output_features) builder.add_lrn(name='lrn', input_name='data', output_name='out', alpha=2, beta=3, local_size=1, k=8) model = MLModel(builder.spec) spec = convert_neural_network_spec_weights_to_fp16(model.get_spec()) self.assertIsNotNone(spec)
def test_lrn_converter(self): input_dim = (3,) output_dim = (3,) input = [('input', datatypes.Array(*input_dim))] output = [('output', datatypes.Array(*output_dim))] builder = NeuralNetworkBuilder(input, output) builder.add_lrn(name='LRN', input_name='input', output_name='output', alpha=0.5, beta=2, k=1, local_size=2) model_onnx = convert_coreml(builder.spec) self.assertTrue(model_onnx is not None)
def test_lrn_converter(self): input_dim = (3, ) output_dim = (3, ) input = [('input', datatypes.Array(*input_dim))] output = [('output', datatypes.Array(*output_dim))] builder = NeuralNetworkBuilder(input, output) builder.add_lrn(name='LRN', input_name='input', output_name='output', alpha=0.5, beta=2, k=1, local_size=2) context = ConvertContext() node = LRNLayerConverter.convert(context, builder.spec.neuralNetwork.layers[0], ['input'], ['output']) self.assertTrue(node is not None)
def verify_lrn(input_dim, size, bias, alpha, beta): dtype = "float32" axis=1 a_np = np.random.uniform(size=input_dim).astype(dtype) b_np = topi.testing.lrn_python(a_np, size, axis, bias, alpha, beta) input = [('input', datatypes.Array(*input_dim))] output = [('output', datatypes.Array(*b_np.shape))] builder = NeuralNetworkBuilder(input, output) builder.add_lrn(name='LRN', input_name='input', output_name='output', alpha=alpha, beta=beta, k=bias, local_size=size) model = cm.models.MLModel(builder.spec) for target, ctx in ctx_list(): out = run_tvm_graph(model, target, ctx, a_np, 'input', b_np.shape, dtype) tvm.testing.assert_allclose(out, b_np, rtol=1e-5)
def verify_lrn(input_dim, size, bias, alpha, beta): dtype = "float32" axis=1 a_np = np.random.uniform(size=input_dim).astype(dtype) b_np = topi.testing.lrn_python(a_np, size, axis, bias, alpha, beta) input = [('input', datatypes.Array(*input_dim))] output = [('output', datatypes.Array(*b_np.shape))] builder = NeuralNetworkBuilder(input, output) builder.add_lrn(name='LRN', input_name='input', output_name='output', alpha=alpha, beta=beta, k=bias, local_size=size) model = cm.models.MLModel(builder.spec) for target, ctx in ctx_list(): out = run_tvm_graph(model, a_np, 'input', b_np.shape, dtype) tvm.testing.assert_allclose(out, b_np, rtol=1e-5)
def verify_lrn(input_dim, size, bias, alpha, beta): dtype = "float32" axis = 1 a_np = np.random.uniform(size=input_dim).astype(dtype) b_np = tvm.topi.testing.lrn_python(a_np, size, axis, bias, alpha, beta) input = [("input", datatypes.Array(*input_dim))] output = [("output", datatypes.Array(*b_np.shape))] builder = NeuralNetworkBuilder(input, output) builder.add_lrn( name="LRN", input_name="input", output_name="output", alpha=alpha, beta=beta, k=bias, local_size=size, ) model = cm.models.MLModel(builder.spec) for target, dev in tvm.testing.enabled_targets(): out = run_tvm_graph(model, target, dev, a_np, "input", b_np.shape, dtype) tvm.testing.assert_allclose(out, b_np, rtol=1e-5)