def test_reshape(): element_type = Type.f32 shape = Shape([2, 3]) A = Parameter(element_type, shape) parameter_list = [A] function = Function([Reshape(A, AxisVector([0, 1]), Shape([3, 2]))], parameter_list, 'test') backend = Backend.create(test.BACKEND_NAME) a = backend.create_tensor(element_type, shape) result = backend.create_tensor(element_type, Shape([3, 2])) a.write( util.numpy_to_c(np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)), 24) result_arr = np.array([[0, 0], [0, 0], [0, 0]], dtype=np.float32) result.write(util.numpy_to_c(result_arr), 24) handle = backend.compile(function) handle.call([result], [a]) result.read(util.numpy_to_c(result_arr), 24) a_arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32) result_arr_ref = np.reshape(a_arr, (3, 2)) assert np.allclose(result_arr, result_arr_ref)
def test_reshape(): element_type = Type.f32 shape = Shape([2, 3]) A = Parameter(element_type, shape) parameter_list = [A] function = Function( NodeVector([Reshape(A, AxisVector([0, 1]), Shape([3, 2]))]), 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(element_type, Shape([3, 2])) a.write( util.numpy_to_c(np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)), 0, 24) result_arr = np.array([[0, 0], [0, 0], [0, 0]], dtype=np.float32) result.write(util.numpy_to_c(result_arr), 0, 24) cf.call([result], [a]) result.read(util.numpy_to_c(result_arr), 0, 24) a_arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32) result_arr_ref = np.reshape(a_arr, (3, 2)) assert np.allclose(result_arr, result_arr_ref)
def transpose(op, order): # type: (Node, List[int]) -> Node """Transpose data via reshape.""" v = [] for i in range(len(order)): v.append(op.get_shape()[order[i]]) new_shape = v return Reshape(op, AxisVector(order), Shape(new_shape))
def test_reshape(): element_type = Type.f32 shape = Shape([2, 3]) A = Parameter(element_type, shape) parameter_list = [A] function = Function( NodeVector([Reshape(A, AxisVector([0, 1]), Shape([3, 2]))]), parameter_list, 'test') backend = Backend.create(pytest.config.getoption('backend')) a = backend.create_tensor(element_type, shape) result = backend.create_tensor(element_type, Shape([3, 2])) a.write( util.numpy_to_c(np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32)), 0, 24) result_arr = np.array([[0, 0], [0, 0], [0, 0]], dtype=np.float32) result.write(util.numpy_to_c(result_arr), 0, 24) backend.call(function, [result], [a]) result.read(util.numpy_to_c(result_arr), 0, 24) a_arr = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float32) result_arr_ref = np.reshape(a_arr, (3, 2)) assert np.allclose(result_arr, result_arr_ref)
def reshape(node, input_order, output_shape, name=None): # type: (Node, List[int], List[int], str) -> None """Return reshaped node according to provided parameters. :param node: The tensor we want to reshape. :param input_order: The order in which to iterate over input axes of input tensor. :param output_shape: The new shape for input tensor. """ return Reshape(node, AxisVector(input_order), Shape(output_shape))
def transpose(op, order): # type: (Node, List[int]) -> Node """Transpose data via reshape.""" v = [] for i in range(len(order)): v.append(op.get_shape()[order[i]]) new_shape = v return Reshape(op, AxisVector(order), Shape(new_shape)) def relu(op): # type: (Node) -> Node """Relu operator.""" return Maximum(op, make_float32_constant_like(0., op)) # Flatten X1 = Reshape(Input, AxisVector([0, 1, 2]), Shape([bz, 784])) # Normalize X2 = X1 / make_float32_constant_like(255., X1) # Affine 1 W1 = Parameter(float_element_type, Shape([784, 100])) b1 = Parameter(float_element_type, Shape([100])) X3 = Dot(X2, W1) + Broadcast(b1, Shape([bz, 100]), AxisSet({0})) X4 = relu(X3) # Affine 2 W2 = Parameter(float_element_type, Shape([100, 10])) b2 = Parameter(float_element_type, Shape([10])) X5 = Dot(X4, W2) + Broadcast(b2, Shape([bz, 10]), AxisSet({0}))