def broadcast(node, new_shape, axis=None, name=None): # type: (Node, TensorShape, int, str) -> Node """Return node which broadcasts input node values to specified shape.""" return Broadcast(node, Shape(new_shape), get_broadcast_axes(new_shape, node.shape, axis))
def broadcast(node, new_shape, axis=None, name=None): # type: (Node, TensorShape, int, str) -> Node """Return node which broadcasts input node values to specified shape. :param node: The node with input tensor data. :param new_shape: The new shape we want to broadcast tensor to. :param axis: The axis along which we perform broadcasting. :param name: Optional new name for output node. :return: New node with broadcasted shape. """ return Broadcast(node, Shape(new_shape), get_broadcast_axes(new_shape, node.shape, axis))
def broadcast_to(node, new_shape, axis=None, name=None): # type: (Node, TensorShape, int, str) -> Node """Create a node which broadcasts the input node's values to a desired shape. `broadcast_to` will attempt to automatically determine which axes need broadcasting. The optional `axis` parameter specifies the starting axis position (0-based) in the output shape from which the current shape of the tensor matches the desired new shape. e.g. current_shape: [4, 5], new_shape: [2, 3, 4, 5, 6], axis: 2 By using the `axis` parameter you can control which output axis to broadcast along. Example: >>> input_node = ng.constant([1, 2, 3]) >>> current_shape = [3] >>> new_shape = [3, 3] >>> ng.broadcast_to(input_node, new_shape, axis=1) array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) >>> ng.broadcast_to(input_node, new_shape, axis=0) array([[1, 1, 1], [2, 2, 2], [3, 3, 3]]) If the `axis` parameter is not specified, `broadcast_to` will attempt to match shapes, assuming the current shape matches the rightmost positions of the desired new shape. This behaviour is similar to NumPy's broadcasting. i.e. default `axis = len(new_shape) - len(current_shape)` :param node: The node with input tensor data. :param new_shape: The new shape we want to broadcast tensor to. :param axis: The axis along which we perform broadcasting. :param name: Optional new name for output node. :return: New node with broadcast shape. """ return Broadcast(node, Shape(new_shape), get_broadcast_axes(new_shape, node.shape, axis))