def test_convert(): element_type = Type.f32 shape = Shape([1, 3]) A = Parameter(element_type, shape) parameter_list = [A] # f32 to boolean function = Function(NodeVector([Convert(A, Type.boolean)]), parameter_list, 'test') backend = Backend.create(test.BACKEND_NAME) a = backend.create_tensor(element_type, shape) result = backend.create_tensor(Type.boolean, shape) a.write(util.numpy_to_c(np.array([1, 5, 3], dtype=np.float32)), 0, 12) result_arr = np.array([False, False, False], dtype=np.bool) result.write(util.numpy_to_c(result_arr), 0, 3) handle = backend.compile(function) handle.call([result], [a]) result.read(util.numpy_to_c(result_arr), 0, 3) a_arr = np.array([1, 5, 3], dtype=np.float32) result_arr_ref = a_arr.astype(bool) assert np.allclose(result_arr, result_arr_ref) # f32 to i32 function = Function(NodeVector([Convert(A, Type.i32)]), parameter_list, 'test') backend = Backend.create(test.BACKEND_NAME) result = backend.create_tensor(Type.i32, shape) a.write(util.numpy_to_c(np.array([1.4, 5.5, 3.9], dtype=np.float32)), 0, 12) result_arr = np.array([0, 0, 0], dtype=np.int32) result.write(util.numpy_to_c(result_arr), 0, 12) handle = backend.compile(function) handle.call([result], [a]) result.read(util.numpy_to_c(result_arr), 0, 12) a_arr = np.array([1.4, 5.4, 3.9], dtype=np.float32) result_arr_ref = a_arr.astype(int) assert np.allclose(result_arr, result_arr_ref)
def test_convert(): element_type = Type.f32 shape = Shape([1, 3]) A = Parameter(element_type, shape) parameter_list = [A] # f32 to boolean function = Function(NodeVector([Convert(A, Type.boolean)]), parameter_list, 'test') backend, cf = make_backend_call_frame(function) a = backend.make_primary_tensor_view(element_type, shape) result = backend.make_primary_tensor_view(Type.boolean, shape) a.write(util.numpy_to_c(np.array([1, 5, 3], dtype=np.float32)), 0, 12) result_arr = np.array([False, False, False], dtype=np.bool) result.write(util.numpy_to_c(result_arr), 0, 3) cf.call([result], [a]) result.read(util.numpy_to_c(result_arr), 0, 3) a_arr = np.array([1, 5, 3], dtype=np.float32) result_arr_ref = a_arr.astype(bool) assert np.allclose(result_arr, result_arr_ref) # f32 to i32 function = Function(NodeVector([Convert(A, Type.i32)]), parameter_list, 'test') backend, cf = make_backend_call_frame(function) result = backend.make_primary_tensor_view(Type.i32, shape) a.write(util.numpy_to_c(np.array([1.4, 5.5, 3.9], dtype=np.float32)), 0, 12) result_arr = np.array([0, 0, 0], dtype=np.int32) result.write(util.numpy_to_c(result_arr), 0, 12) cf.call([result], [a]) result.read(util.numpy_to_c(result_arr), 0, 12) a_arr = np.array([1.4, 5.4, 3.9], dtype=np.float32) result_arr_ref = a_arr.astype(int) assert np.allclose(result_arr, result_arr_ref)
def convert(node, new_type, name=None): # type: (Node, NumericType, str) -> Node """Return node which casts input node values to specified type.""" new_element_type = get_element_type(new_type) return Convert(node, new_element_type)
from ngraph.impl import Node, Shape, AxisVector, AxisSet from ngraph.impl.op import Parameter, Maximum, Reshape, Dot, Broadcast from ngraph.impl.op import Constant, Exp, Log, Sum from ngraph.impl.op import Greater, Convert, Reduce from ngraph.impl.op import OneHot from typing import List, Dict, Set float_element_type = Type.f32 int_element_type = Type.i32 bz = 53 lr = 0.2 Input = Parameter(float_element_type, Shape([bz, 28, 28])) Label = Parameter(int_element_type, Shape([bz])) LabelOneHot = Convert((OneHot(Label, Shape([bz, 10]), 1)), float_element_type) MaxParam1 = Parameter(float_element_type, Shape([])) MaxParam2 = Parameter(float_element_type, Shape([])) MaxFn = Function(Maximum(MaxParam1, MaxParam2), [MaxParam1, MaxParam2], 'mnist') def make_scalar_constant(elem_type, scalar, shape=None, axis_set=None): # type: (int, float, List[int], Set[int]) -> float """Create a Constant node for scalar value.""" if shape is None: shape = Shape([]) if axis_set is None: axis_set = AxisSet(set()) scalar_shape = Shape([]) # type: List[int]