ngraph¶
This API documentation covers the public API for ngraph, organized into three main modules:
ngraph
: Contains the core ops for constructing the graph.ngraph.transformers
: Defines methods for executing a defined graph on hardware.ngraph.types
: Types in ngraph (e.g.Axes
,Op
, etc.)
ngraph¶
Several ops are used to create different types of tensors
Method  Description 

ngraph.variable() 
Create a trainable variable. 
ngraph.persistent_tensor() 
Tensor that persists across computations. 
ngraph.placeholder() 
Used for input values, typically from host. 
ngraph.constant() 
Immutable constant that can be inlined. 
Assign the above tensors requires defining Axis
, which can be done using the following methods:
Method  Description 

ngraph.axes_with_order() 
Return a tensor with a different axes order. 
ngraph.cast_axes() 
Cast the axes of a tensor to new axes. 
ngraph.make_axes() 
Create an Axes object. 
ngraph.make_axis() 
Create an Axis. 
ngraph.make_axis_role() 
Create an Axis role. 
ngraph.make_name_scope() 
Create a name scope for NameableValue objects. 
ngraph.name_scope() 
Create and use a new name scope 
ngraph.with_name_scope() 
Use a name scope 
We also provide several helper function for retrieving information from tensors.
Method  Description 

ngraph.batch_size() 
Returns the batch size 
ngraph.is_constant() 
Returns true if tensor is constant 
ngraph.is_constant_scalar() 
Returns true if tensor is a constant scalar 
ngraph.constant_value() 
Returns the value of a constant tensor 
ngraph.tensor_size() 
Returns the total size of the tensor 
To compose a computational graph, we support the following operations:
Method  Description 

ngraph.absolute() 
\(\operatorname{abs}(a)\) 
ngraph.negative() 
\(a\) 
ngraph.sign() 
if \(x<0\), \(1\); if \(x=0\), \(0\); if \(x>0\), \(1\) 
ngraph.add() 
\(a+b\) 
ngraph.reciprocal() 
\(1/a\) 
ngraph.square() 
\(a^2\) 
ngraph.sqrt() 
\(\sqrt{a}\) 
ngraph.cos() 
\(\cos(a)\) 
ngraph.sin() 
\(\sin(a)\) 
ngraph.tanh() 
\(\tanh(a)\) 
ngraph.sigmoid() 
\(1/(1+\exp(a))\) 
ngraph.exp() 
\(\exp(a)\) 
ngraph.log() 
\(\log(a)\) 
ngraph.safelog() 
\(\log(a)\) 
ngraph.one_hot() 
Convert to onehot 
ngraph.variance() 
Compute variance 
ngraph.stack() 
Stack tensors along an axis 
ngraph.convolution() 
Convolution operation 
ngraph.pad() 
Pad a tensor with zeros along each dimension 
ngraph.pooling() 
Pooling operation 
ngraph.squared_L2() 
dot x with itself 
Note
Additional operations are supported that are not currently documented, and so are not included in the list above. We will continue to populate this API when the documentation is updated.
ngraph.transformers¶
Method  Description 

ngraph.transformers.allocate_transformer() 
Allocate a transformer. 
ngraph.transformers.make_transformer() 
Generates a transformer using the factory. 
ngraph.transformers.make_transformer_factory() 
Creates a new factory with numpy default. 
ngraph.transformers.set_transformer_factory() 
Sets the Transformer factory used by make_transformer. 
ngraph.transformers.transformer_choices() 
Return the list of available transformers. 
ngraph.transformers.Transformer() 
Produce an executable version of opgraphs. 
ngraph.types¶
Method  Description 

ngraph.types.AssignableTensorOp() 
Assign a tensor. Used by ng.placeholder, and more. 
ngraph.types.Axis() 
An Axis labels a dimension of a tensor. 
ngraph.types.AxisRole() 
Labels axis with roles. 
ngraph.types.Axes() 
Axes represent multiple axis dimensions. 
ngraph.types.Computation() 
Computations to attach to transformers. 
ngraph.types.NameableValue() 
Objects that can derive name from the name scope. 
ngraph.types.NameScope() 
Name scope for objects. 
ngraph.types.Op() 
Basic class for ops. 
ngraph.types.TensorOp() 
Base class for ops related to Tensors. 
ngraph¶
Graph construction.

ngraph.
absolute
(x)[source]¶ Returns the absolute value of x.
Parameters: x (TensorOp) – A tensor. Returns: The absolute value of x. Return type: TensorOp

ngraph.
add
(x, y, name=None)[source]¶ Returns a TensorOp for the sum of x and y.
Parameters: Returns: x + y
Return type:

ngraph.
as_op
(x)[source]¶ Finds an Op appropriate for x.
If x is an Op, it returns x. Otherwise, constant(x) is returned.
Parameters: x – Some value. Returns: Return type: Op

ngraph.
as_ops
(xs)[source]¶ Converts an iterable of values to a tuple of Ops using as_op.
Parameters: xs – An iterable of values. Returns: A tuple of Ops.

ngraph.
axes_with_order
(x, axes)[source]¶ Return a tensor with a different axes order.
Parameters: Returns: The new tensor.
Return type:

ngraph.
broadcast
(x, axes)[source]¶ Broadcast the axes of x.
Parameters:  x (TensorOp) – The tensor.
 axes – New axes.
Returns: Tensor with additional axes.
Return type:

ngraph.
cast_axes
(tensor, axes)[source]¶ Cast the axes of a tensor to new axes.
Parameters: Returns: The tensor with new axes.
Return type:

ngraph.
constant
(const, axes=None, dtype=None)[source]¶  Makes a constant scalar/tensor. For a tensor, constant provides the opportunity
 to supply axes. Scalar/NumPytensor arguments are usually automatically converted to tensors, but constant may be used to supply axes or in the rare cases where constant is not automatically provided.
Parameters:  const – The constant, a scalar or a NumPy array.
 axes – The axes for the constant.
 dtype (optional) – The dtype to use.
Returns: An AssignableTensorOp for the constant.

ngraph.
constant_value
(value)[source]¶ Returns the constant value of an Op.
Parameters: value (TensorOp) – A constant op. Returns: The constant value.

ngraph.
convolution
(conv_params, inputs, filters, axes, docstring=None)[source]¶ Parameters: Returns: The result of the convolution.
Return type:

ngraph.
cos
(x)[source]¶ Returns the cos of x.
Parameters: x (TensorOp) – A tensor. Returns: The cos of x. Return type: TensorOp

ngraph.
exp
(x)[source]¶ Returns the exp of x.
Parameters: x (TensorOp) – A tensor. Returns: The exp of x. Return type: TensorOp

ngraph.
is_constant
(value)[source]¶ Test an Op to see if it is a constant.
Parameters: value – An Op Returns: True if value is a constant.

ngraph.
is_constant_scalar
(value)[source]¶ Tests an Op to see if it is a constant scalar.
Parameters: value – An Op. Returns: True if value is a constant scalar.

ngraph.
log
(x)[source]¶ Returns the log of x.
Parameters: x (TensorOp) – A tensor. Returns: The log of x. Return type: TensorOp

ngraph.
make_axes
(axes=())[source]¶ Makes an Axes object.
Parameters: axes – A list of Axis. Returns: An Axes. Return type: Axes

ngraph.
make_axis
(length=None, name=None, batch=False, recurrent=False, match_on_length=False, roles=None, docstring=None)[source]¶ Returns a new Axis.
Parameters:  length (int, optional) – Length of the axis.
 name (String, optional) – Name of the axis.
 batch (bool, optional) – This is a batch axis. Defaults to False.
 recurrent (bool, optional) – This is a recurrent axis. Defaults to False.
 match_on_length (bool, optional) – This axis will match an axis with the same length. Defaults to False.
 roles (set, optional) – A set of axis roles for the axis.
 docstring (String, optional) – A docstring for the axis.
Returns: A new Axis.
Return type:

ngraph.
make_axis_role
(name=None, docstring=None)[source]¶ Returns a new AxisRole.
Parameters:  name (String, optional) – The name for the role.
 docstring (String, optional) – A docstring for the role.
Returns: A new AxisRole with the given name and docstring.
Return type:

ngraph.
make_name_scope
(name)[source]¶ Creates a NameScope.
When NameableValue objects are assigned to attributes of a NameScope, the name of the object is set to the attribute.
Parameters: name – The name of this NameScope. Returns: A NameScope. Return type: Namescope

ngraph.
name_scope
(*args, **kwds)[source]¶ Create and use a new name scope
Parameters:  name_scope – Reuse an existing name scope
 name – Create a new name scope within the current name scope
Returns: The new name scope.
Return type:

ngraph.
negative
(x)[source]¶ Returns the negative of x.
Parameters: x (TensorOp) – tensor. Returns: The negative of x. Return type: (TensorOp)

ngraph.
one_hot
(x, axis)[source]¶ Parameters:  x – The one_hot tensor.
 axis – The hot axis.
Returns: The op.
Return type: OneHotOp

ngraph.
pad
(x, paddings, axes=None)[source]¶ Pads a tensor with zeroes along each of its dimensions.
Parameters:  x – the tensor to be padded
 paddings – the length of the padding along each dimension. should be an array with the same length as x.axes. Each element of the array should be either an integer, in which case the padding will be symmetrical, or a tuple of the form (before, after)
 axes – the axes to be given to the padded tensor. If unsupplied, we create anonymous axes of the correct lengths.
Returns: symbolic expression for the padded tensor
Return type:

ngraph.
persistent_tensor
(axes, dtype=None, initial_value=None)[source]¶ Persistent storage.
Storage that will retain its value from computation to computation.
Parameters:  axes (Axes) – The axes of the persistent storage.
 dtype (optional) – The dtype of the persistent storage.
 initial_value (optional) – A host constant or callable. If callable, will be called to generate an initial value.
Returns: The persistent storage.
Return type:

ngraph.
placeholder
(axes, dtype=None, initial_value=None)[source]¶ A persistent tensor to be initialized from the CPU.
Parameters:  axes (Axes) – The axes of the placeholder.
 dtype (optional) – The dtype of the placeholder.
 initial_value (optional) – A host constant or callable. If callable, will be called to generate an initial value.
Returns: The placeholder.
Return type:

ngraph.
pooling
(poolparams, inputs, axes, docstring=None)[source]¶ Parameters:  poolparams – Dimensions.
 inputs (TensorOp) – Input to pooling.
 docstring (String, optional) – Dcoumentation for the computation.
Returns: The pooling computation.
Return type:

ngraph.
reciprocal
(x)[source]¶ Returns the reciprocal of x.
Parameters: x (TensorOp) – A tensor. Returns: The reciprocal of x. Return type: TensorOp

ngraph.
sigmoid
(x)[source]¶ sigmoid(x)
:math:`rac{1}{1+exp(x)}`
 Arguments:
 x: A tensor
 Returns:
 TensorOp: sigmoid(x).

ngraph.
sign
(x)[source]¶ Returns the sign of x.
Parameters: x (TensorOp) – A tensor. Returns: The sign of x. Return type: TensorOp

ngraph.
sin
(x)[source]¶ Returns the sin of x.
Parameters: x (TensorOp) – A tensor. Returns: sin of x. Return type: TensorOp

ngraph.
slice_along_axis
(x, axis, idx)[source]¶ Returns a slice of a tensor constructed by indexing into a single axis at a single position. If the axis occurs multiple times in the dimensions of the input tensor, we select only on the first occurrence. :param x: input tensor :param axis: axis along which to slice :param idx: index to select from the axis
Returns: a slice of x Return type: y

ngraph.
sqrt
(x)[source]¶ Returns the square root of x.
Parameters: x (TensorOp) – A tensor. Returns: The square root of x. Return type: TensorOp

ngraph.
square
(x)[source]¶ Returns the square of x.
Parameters: x (TensorOp) – A tensor. Returns: The square of x. Return type: TensorOp

ngraph.
squared_L2
(x)[source]¶ Returns the dot of x and y, with the axes of x set to their dual offset.
Parameters: Returns: The result.
Return type:

ngraph.
stack
(x_list, axis, pos=0)[source]¶ Parameters:  x_list – A list of identicallyaxed tensors to join.
 axis – The axis to select joined tensors.
 pos – The position within the axes of the x_list tensors to insert axis in the result.
Returns: The joined tensors.
Return type:

ngraph.
tanh
(x)[source]¶ Returns the cos of x.
Parameters: x (TensorOp) – A tensor. Returns: The tanh of x. Return type: TensorOp

ngraph.
temporary
(axes, dtype=None, initial_value=None)[source]¶ Temporary storage.
Statically allocates storage that may be reused outside of the scope of the values.
Parameters:  axes (Axes) – The axes of the storage.
 dtype (optional) – The dtype of the storage.
 initial_value (optional) – A host constant or callable. If callable, will be called to generate an initial value.
Returns: The placeholder.
Return type:

ngraph.
tensor_size
(x, reduction_axes=None, out_axes=None)[source]¶ A scalar returning the total size of a tensor in elements.
Parameters:  x – The tensor whose axes we are measuring.
 reduction_axes – if supplied, return the size of these axes instead.

ngraph.
variable
(axes, dtype=None, initial_value=None)[source]¶ A trainable tensor.
Parameters:  axes (Axes) – Axes for the variable.
 dtype (optional) – The dtype for the tensor.
 initial_value – A constant or callable. If a callable, the callable will be called to provide an initial value.
Returns: The variable.
Return type:
ngraph.transformers¶
Transformer manipulation.

ngraph.transformers.
make_transformer
()[source]¶ Generates a Transformer using the factory in this module which defaults to NumPy
Returns: Transformer

ngraph.transformers.
set_transformer_factory
(factory)[source]¶ Sets the Transformer factory used by make_transformer
Parameters: factory (object) – Callable object which generates a Transformer

class
ngraph.transformers.
Transformer
(fusion=None, **kwargs)[source]¶ Produce an executable version of opgraphs.
Computations are subsets of Ops to compute. The transformer determines storage allocation and transforms the computations and allocations into functions.
Parameters:  fusion (bool) – Whether to combine sequences of operations into one operation.
 **kwargs – Args for related classes.

finalized
¶ bool – True when transformation has been performed.

initialized
¶ bool – True when variables have been initialized/restored.

opids
¶ dict – TODO

fusion
¶ bool – True when fusion was enabled.

device_buffers
¶ set – Set of handles for storage allocations.

cpu_initializations
¶ list – Initializations to be performed from the CPU after allocation.

init_computation
¶ Computation – The computation that performs initialization after allocation. This happens once per training session, not once perminibatch.

allocate
()[source]¶ Allocate storage and then initializes constants.
Will finalize if not already done.

computation
(results, *parameters, **kwargs)[source]¶ Adds a computation to the transformer.
Parameters:  results – Values to be computed
 *parameters – Values to be set as arguments to evaluate
 name – Name for function. Defaults to None.
Returns: Dictionary from results to their values

device_buffer_storage
(bytes, dtype, name)[source]¶ Make a DeviceBuffer.
Parameters:  bytes – Size of buffer.
 dtype – dtype of buffer.
 name – Name of the storage variable
returns: A DeviceBuffer.

initialize_tensor_descriptions
(s, dispatch_arg, *args, **kwargs)[source]¶ Ensures that tensor descriptions associated with op are initialized.
Parameters: (class (op) – ngraph.op_graph.op_graph.Op): Initialize the tensor description for op.

next
()¶

transform_ordered_ops
(ordered_ops)[source]¶ Generate code to compute ordered_ops.
Arguments: ordered_ops: Ops to compute
Returns: Handle for generated code

transformers
= {'numpy': <class 'ngraph.transformers.nptransform.NumPyTransformer'>}¶
ngraph.types¶

class
ngraph.types.
AssignableTensorOp
(initial_value=None, input=False, persistent=False, **kwargs)[source]¶ Value comes directly from storage.
Parameters:  input – The storage is used as an input from the CPU. Implies persistent.
 initial_value – If callable, a function that generates an Op whose tensor should be used as the initial value. Otherwise an Op that should be used as the initial value.

input
¶ bool – The storage is used as an input.

add_initializer
(init)¶

add_other_dep
(dep)¶

add_schema
(schema, set_generate_adjoints=True)¶ Adds a description of some op substructure.
When a function generates a groups of nodes, it can add a schema describing the roles of these nodes. The schema may include its own generate_adjoints.
Parameters: schema – param set_generate_adjoints: Whether to override the node’s generate_adjoints  with the version from the schema.
 set_generate_adjoints: TODO
Returns: TODO

adjoints
(*args, **kwargs)¶ Returns a map containing the adjoints of this op with respect to other ops.
Creates the map if it does not already exist.
Parameters: error (TensorOp, optional) – The tensor holding the error value the derivative will be computed at. Must have the same axes as dependent. Returns: Map from Op to dSelf/dOp.

all_ops
(*args, **kwds)¶ Collects all Ops created within the context. Does not hide ops created in this context from parent contexts.

append_axis
(axis)¶

args
¶ All the inputs to this node.

assignable
¶ Returns – True if the tensor can be assigned to.

axes
¶ Returns – The axes of the tensor.

call_info
(*args, **kwargs)¶ Creates the TensorDescriptions (of this op or its arguments) required to evaluate it.
The list is used to allocate buffers (in the transformers) and supply values to the transform method (in the transform_call_info) method.
Only TensorDescriptions of the arguments are necessary. A TensorDescription of the output is generate by calling self.tensor_description()

captured_ops
(*args, **kwds)¶ Capture all Ops created within the context. Hides ops created in this context from parent contexts.

defs
¶ Returns – AssignableTensorOp is not executed, so its appearance in the instruction stream does not affect liveness of its value.

device_op
¶ Returns the op that performs the operations on the device.
Returns: self

file_info
¶ Return file location that created the node.
Returns: String with file location that created the node.

find_schema
(t)¶ Find a schema of particular type.
Searches added schema for one of type t.
Parameters: t – The type of schema desired. Returns: A schema of type t, or None.

forward
¶ If not None, self has been replaced with forward.
When set, invalidates cached tensor descriptions.
Returns: None or the replacement.

forwarded
¶ Finds the op that handles this op.
Returns: Follows forwarding to the op that shoud handle this op.

generate_add_delta
(adjoints, delta)¶ Adds delta to the backprop contribution..
Parameters:  adjoints – dy/dOp for all Ops used to compute y.
 delta – Backprop contribute.

generate_adjoints
(adjoints, delta, *args)¶ With delta as the computation for the adjoint of this Op, incorporates delta into the adjoints for thr args.
Parameters:  adjoints – dy/dOp for all ops involved in computing y.
 delta – Backprop amount for this Op.
 *args – The args of this Op.

graph_label
¶ The label used for drawings of the graph.

has_axes
¶ Returns – True if axes have been set.

insert_axis
(index, axis)¶ Inserts an axis :param index: Index to insert at :param axis: The Axis object to insert

is_device_op
¶ Returns – False, because this is handled by the transformer.

is_scalar
¶

mean
(reduction_axes=None, out_axes=None)¶ Used in Neon front end.
Returns: mean(self)

name
¶ The name.

named
(name)¶

next
()¶

ordered_ops
(results)¶ depthfirst, postorder “Bottom Up” traversal of Ops in results.
Ops will only appear once in result.
Parameters: results – a list of ops which are the roots of the graph traversal Returns: list of Ops in depthfirst, postorder

persistent
¶ Returns – True if value is not shared and is retained through computation. Always true for a reference.

replace_self
(rep)¶

saved_user_deps
(*args, **kwds)¶ Switches the user_deps map within a context.
The user_deps of an Op are Ops that must run before the Op is used. When Ops are generated outside of the normal stream, such as initializions that run once before any computation, they must be isolated from the normal tracking of variable predependencies.
Parameters:  user_deps_map – The new user deps map to use. If not provided, one is created
 returned. (and) –

scalar_op
¶

shape
¶ This is required for parameter initializers in legacy neon code. It expects layers to implement a shape that it can use to pass through layers.
Returns: self.axes

shape_dict
()¶ Retuns: shape of this tensor as a dictionary

short_name
¶

tensor_description
(*args, **kwargs)¶ Returns a TensorDescription describing the output of this TensorOp
Returns: TensorDescription for this op.

update_forwards
()¶ Updates internal op references with their forwarded versions.

user_deps
¶ return: Set of Ops the must come before this Op is used. See SetItem.

value
¶ Returns a handle to the device tensor.
The transformer must have been initialized.
Returns: A handle to the device tensor.

variables
(filter=None)¶ Return all trainable Ops used in computing this node.
Parameters: filter – Boolean filter of op, defaults to trainable. Returns: Set of trainable Ops.

visit_input_closure
(roots, fun)¶ “Bottomup” postorder traversal of root and their inputs.
Nodes will only be visited once, even if there are multiple routes to the same Node.
Parameters:  roots – root set of nodes to visit
 fun – Function to call on each visited node
Returns: None

class
ngraph.types.
Axis
(length=None, batch=False, recurrent=False, match_on_length=False, roles=None, **kwargs)[source]¶ An Axis labels a dimension of a tensor. The opgraph uses the identity of Axis objects to pair and specify dimensions in symbolic expressions. This system has several advantages over using the length and position of the axis as in other frameworks:
1) Convenience. The dimensions of tensors, which may be nested deep in a computation graph, can be specified without having to calculate their lengths.
2) Safety. Axis labels are analogous to types in generalpurpose programming languages, allowing objects to interact only when they are permitted to do so in advance. In symbolic computation, this prevents interference between axes that happen to have the same lengths but are logically distinct, e.g. if the number of training examples and the number of input features are both 50.
TODO: Please add to the list...
Parameters:  length – The length of the axis.
 batch – Whether the axis is a batch axis.
 recurrent – Whether the axis is a recurrent axis.
 match_on_length – Whether to only use length (and not identity) when comparing equality against other Axis values. This is useful for anonymous Axis of constant tensors.

T
¶

axes
¶

dual_level
¶ Returns – Axis displacement for dot.
In dot, left axis of level n matches right axis of level n+1. Level n1 is the dual space of level n.

get_dual
(offset=1)[source]¶ Returns a dual for an axis.
The dual of an axis in the left side of a dot product matches the axis in the right side.
Parameters:  axis (Axis) –
 offset (int, optional) – The dual offset from axis. Defaults to 1.
Returns: The dual of the axis.
Return type: (Axis)

graph_label
¶ The label used for drawings of the graph.

has_role
(axis_role)[source]¶ Parameters: axis_role – A role to test. Returns: True if this axis has the role.

is_batch
¶ Tests if an axis is a batch axis.
Returns: True if the axis is a batch axis. Return type: bool

is_recurrent
¶ Tests if an axis is a recurrent axis.
Returns: True if the axis is a recurrent axis. Return type: bool

length
¶ Returns – The length of the axis.

match_on_length
¶ Returns – bool: True if this axis matches axes with the same length.

name
¶ The name.

named
(name)¶

next
()¶

primary_axis
¶

roles
¶ Returns – The AxisRoles of this axis.

short_name
¶

class
ngraph.types.
AxisRole
(**kwargs)[source]¶ An AxisRole is like a type for an Axis, such as “Height” or “Channels”.
At different parts of a computation, axes of different length may be used for a role. For example, after a convolution the height axis is usually shortened, and in a convolution filter, the height axis of the filter is related to the height axis of the input and output, but not the height. By matching AxisRoles, operations such as convolution can match the axes in their arguments.

graph_label
¶ The label used for drawings of the graph.

name
¶ The name.

named
(name)¶

next
()¶

short_name
¶


class
ngraph.types.
Axes
(axes=None)[source]¶ An Axes is a tuple of Axis objects used as a label for a tensor’s dimensions.

T
¶

static
check_broadcast
(*args)[source]¶ Checks whether axes can be broadcasted to new_axes. We require that the components of axes be laid out in the same order in new_axes.
 Axes:
 axes: The original axes. new_axes: The broadcasted axes.
Returns: True if axes can be broadcasted to new_axes, False otherwise.

static
check_flatten
(*args)[source]¶ Checks whther axes can safely be flattened to produce new_axes. The requirements are that the components of axes should all be present in new_axes and that they should be laid out in the same order.
Parameters:  axes – The original axes.
 new_axes – The flattened axes.
Returns: True if axes can be safely flattened to new_axes, False otherwise.

static
check_unflatten
(*args)[source]¶ Checks whether axes can safely be unflattened to produce new_axes. The requirements are that the components of axes should all be present in new_axes and that they should be laid out in the same order.
Parameters:  axes – The original axes.
 new_axes – The unflattened axes.
Returns: True if axes can be safely unflattened to new_axes, False otherwise.

static
find
(*args)[source]¶ Attempts to locate a subsequence of Axes (sub_axes) in axes.
Parameters:  axes – The superset of Axes.
 sub_axes – Axes to search for.
Returns: The index at which the subsequence sub_axes occurs in axes.
Return type:

static
find_axis
(axes, axis)[source]¶ Attempts to locate an axis in Axes.
Parameters:  axes – The superset of Axes.
 axis – Axis to search for.
Returns: The index at which the axis occurs in axes.
Return type:

full_lengths
¶ Returns all information about the lengths of the axis objects in this Axes in the form of a nested tuple. An element of the outer tuple that is itself a tuple contains the restored lengths of axes that have been flattened in this Axis object.
Returns: A nested tuple with the axis lengths. Return type: tuple

has_same_axes
(axes)[source]¶ Checks whether axes have the same set of axes as self.
Parameters: axes (Axes) – axes. Returns: True if axes has the same elements, False otherwise.

index
(axis)[source]¶ Returns the index of an axis.
Parameters: axis – The axis to search for. Returns: The index.

insert
(index, axis)[source]¶ Inserts an axis :param index: Index to insert at :param axis: The Axis object to insert

intersect
(axes)[source]¶ Returns the intersection of the elements, leaving out duplicate Axes.
Parameters: axes – second axes to intersect Returns: The ordered intersection

lengths
¶ Returns – tuple: The lengths of the outer axes.

static
linear_map_axes
(*args)[source]¶ For tensors
out = dot(T, in)
used in linear transformations determines the axesT
must have.Parameters:  in_axes – The axes of
in
.  out_axes – The axes of
out
.
Returns: Axes of the weights used in the transformation.
 in_axes – The axes of

names
¶ Returns – tuple: The names of the outer axes.

next
()¶

shape_dict
()[source]¶  Retuns:
 dict: A dictionary with names of the axes as keys and lengths as values

size
¶ TODO.


class
ngraph.types.
Computation
(transformer, returns, *args, **kwargs)[source]¶ A handle for a computation function.
Parameters:  (obj (transformer) – Transformer): The associated transformer.
 returns – If an Op, return the value of the Op, if sequence of Ops, return the sequence of values, if a set return a map, if None, return None.
 *args – AllocationOps marked input will be arguments to the function.
 **kwargs – Args for related classes.

graph_label
¶ The label used for drawings of the graph.

name
¶ The name.

named
(name)¶

next
()¶

short_name
¶

class
ngraph.types.
NameableValue
(name=None, graph_label_type=None, docstring=None, **kwargs)[source]¶ An object that can be named.
Parameters:  graph_label_type – A label that should be used when drawing the graph. Defaults to the class name.
 name (str) – The name of the object.
 **kwargs – Parameters for related classes.

graph_label_type
¶ A label that should be used when drawing the graph.

id
¶ Unique id for this object.

graph_label
¶ The label used for drawings of the graph.

name
¶ The name.

next
()¶

short_name
¶

class
ngraph.types.
NameScope
(**kwargs)[source]¶ A NameScope is a hierarchical namespace for objects.
When NameableValues are assigned to attributes, the value’s name is set to the attribute name.
Parameters:  name – The name of this scope.
 **kwargs – Parameters for related classes.

graph_label
¶ The label used for drawings of the graph.

name
¶ The name.

named
(name)¶

next
()¶

short_name
¶

class
ngraph.types.
Op
(args=(), metadata=None, const=None, constant=False, initializers=None, persistent=True, reference=False, trainable=False, **kwargs)[source]¶ Any operation that can be in an AST.
Parameters:  args – Values used by this node.
 const – The value of a constant Op, or None,
 constant (bool) – The Op is constant. Default False.
 forward – If not None, the node to use instead of this node.
 initializers – List of onetime initializations to run before the op.
 persistent (bool) – The value will be retained from computation to computation and not shared. Default False.
 reference (bool) – The storage is accessed via a reference. Default False.
 metadata – String key value dictionary for frontend metadata.
 trainable (bool) – The value is trainable. Default False.
 kwargs – Args defined in related classes.

const
¶ The value of a constant.

constant
¶ bool – The value is constant.

initializers
¶ list – Additional Ops to run before this Op is run the first time.

other_deps
¶ OrderedSet – Ops in addtion to args that must run before this op.

persistent
¶ bool – The value will be retained from computation to computation and not shared. Always True if reference is set.

reference
¶ bool – The storage is accessed via a reference. Implies persistent.

schemas
¶ Information about how the Op was generated.

metadata
¶ Dictionary with of string keys and values used for attaching arbitrary metadata to nodes.

trainable
¶ The value is trainable.

add_schema
(schema, set_generate_adjoints=True)[source]¶ Adds a description of some op substructure.
When a function generates a groups of nodes, it can add a schema describing the roles of these nodes. The schema may include its own generate_adjoints.
Parameters: schema – param set_generate_adjoints: Whether to override the node’s generate_adjoints  with the version from the schema.
 set_generate_adjoints: TODO
Returns: TODO

adjoints
(*args, **kwargs)[source]¶ Returns a map containing the adjoints of this op with respect to other ops.
Creates the map if it does not already exist.
Parameters: error (TensorOp, optional) – The tensor holding the error value the derivative will be computed at. Must have the same axes as dependent. Returns: Map from Op to dSelf/dOp.

static
all_ops
(*args, **kwds)[source]¶ Collects all Ops created within the context. Does not hide ops created in this context from parent contexts.

args
¶ All the inputs to this node.

assignable
¶ Returns – True if the tensor can be assigned to.

call_info
(*args, **kwargs)[source]¶ Creates the TensorDescriptions (of this op or its arguments) required to evaluate it.
The list is used to allocate buffers (in the transformers) and supply values to the transform method (in the transform_call_info) method.
Only TensorDescriptions of the arguments are necessary. A TensorDescription of the output is generate by calling self.tensor_description()

static
captured_ops
(*args, **kwds)[source]¶ Capture all Ops created within the context. Hides ops created in this context from parent contexts.

defs
¶ Returns – For liveness analysis. The storage associated with everything in the returned list is modified when the Op is executed.

device_op
¶ Returns the op that performs the operations on the device.
Returns: self

file_info
¶ Return file location that created the node.
Returns: String with file location that created the node.

find_schema
(t)[source]¶ Find a schema of particular type.
Searches added schema for one of type t.
Parameters: t – The type of schema desired. Returns: A schema of type t, or None.

forward
¶ If not None, self has been replaced with forward.
When set, invalidates cached tensor descriptions.
Returns: None or the replacement.

forwarded
¶ Finds the op that handles this op.
Returns: Follows forwarding to the op that shoud handle this op.

graph_label
¶ The label used for drawings of the graph.

is_device_op
¶ Returns – True if the Op executes on the device.

is_scalar
¶

name
¶ The name.

named
(name)¶

next
()¶

static
ordered_ops
(results)[source]¶ depthfirst, postorder “Bottom Up” traversal of Ops in results.
Ops will only appear once in result.
Parameters: results – a list of ops which are the roots of the graph traversal Returns: list of Ops in depthfirst, postorder

persistent
Returns – True if value is not shared and is retained through computation. Always true for a reference.

static
saved_user_deps
(*args, **kwds)[source]¶ Switches the user_deps map within a context.
The user_deps of an Op are Ops that must run before the Op is used. When Ops are generated outside of the normal stream, such as initializions that run once before any computation, they must be isolated from the normal tracking of variable predependencies.
Parameters:  user_deps_map – The new user deps map to use. If not provided, one is created
 returned. (and) –

scalar_op
¶

short_name
¶

user_deps
¶ return: Set of Ops the must come before this Op is used. See SetItem.

class
ngraph.types.
TensorOp
(dtype=None, axes=None, scale=None, **kwargs)[source]¶ Super class for all Ops whose value is a Tensor.
Parameters:  axes – The axes of the tensor.
 dtype – The element type of the tensor.
 scale – If specified, a scaling factor applied during updates.
 **kwargs – Arguments for related classes.

add_initializer
(init)¶

add_other_dep
(dep)¶

add_schema
(schema, set_generate_adjoints=True)¶ Adds a description of some op substructure.
When a function generates a groups of nodes, it can add a schema describing the roles of these nodes. The schema may include its own generate_adjoints.
Parameters: schema – param set_generate_adjoints: Whether to override the node’s generate_adjoints  with the version from the schema.
 set_generate_adjoints: TODO
Returns: TODO

adjoints
(*args, **kwargs)¶ Returns a map containing the adjoints of this op with respect to other ops.
Creates the map if it does not already exist.
Parameters: error (TensorOp, optional) – The tensor holding the error value the derivative will be computed at. Must have the same axes as dependent. Returns: Map from Op to dSelf/dOp.

all_ops
(*args, **kwds)¶ Collects all Ops created within the context. Does not hide ops created in this context from parent contexts.

args
¶ All the inputs to this node.

assignable
¶ Returns – True if the tensor can be assigned to.

axes
¶ Returns – The axes of the tensor.

call_info
(*args, **kwargs)¶ Creates the TensorDescriptions (of this op or its arguments) required to evaluate it.
The list is used to allocate buffers (in the transformers) and supply values to the transform method (in the transform_call_info) method.
Only TensorDescriptions of the arguments are necessary. A TensorDescription of the output is generate by calling self.tensor_description()

captured_ops
(*args, **kwds)¶ Capture all Ops created within the context. Hides ops created in this context from parent contexts.

defs
¶ Returns – For liveness analysis. The storage associated with everything in the returned list is modified when the Op is executed.

device_op
¶ Returns the op that performs the operations on the device.
Returns: self

file_info
¶ Return file location that created the node.
Returns: String with file location that created the node.

find_schema
(t)¶ Find a schema of particular type.
Searches added schema for one of type t.
Parameters: t – The type of schema desired. Returns: A schema of type t, or None.

forward
¶ If not None, self has been replaced with forward.
When set, invalidates cached tensor descriptions.
Returns: None or the replacement.

forwarded
¶ Finds the op that handles this op.
Returns: Follows forwarding to the op that shoud handle this op.

generate_add_delta
(adjoints, delta)[source]¶ Adds delta to the backprop contribution..
Parameters:  adjoints – dy/dOp for all Ops used to compute y.
 delta – Backprop contribute.

generate_adjoints
(adjoints, delta, *args)[source]¶ With delta as the computation for the adjoint of this Op, incorporates delta into the adjoints for thr args.
Parameters:  adjoints – dy/dOp for all ops involved in computing y.
 delta – Backprop amount for this Op.
 *args – The args of this Op.

graph_label
¶ The label used for drawings of the graph.

has_axes
¶ Returns – True if axes have been set.

insert_axis
(index, axis)[source]¶ Inserts an axis :param index: Index to insert at :param axis: The Axis object to insert

is_device_op
¶ Returns – True if the Op executes on the device.

is_scalar
¶

name
¶ The name.

named
(name)¶

next
()¶

ordered_ops
(results)¶ depthfirst, postorder “Bottom Up” traversal of Ops in results.
Ops will only appear once in result.
Parameters: results – a list of ops which are the roots of the graph traversal Returns: list of Ops in depthfirst, postorder

persistent
¶ Returns – True if value is not shared and is retained through computation. Always true for a reference.

replace_self
(rep)¶

saved_user_deps
(*args, **kwds)¶ Switches the user_deps map within a context.
The user_deps of an Op are Ops that must run before the Op is used. When Ops are generated outside of the normal stream, such as initializions that run once before any computation, they must be isolated from the normal tracking of variable predependencies.
Parameters:  user_deps_map – The new user deps map to use. If not provided, one is created
 returned. (and) –

scalar_op
¶

shape
¶ This is required for parameter initializers in legacy neon code. It expects layers to implement a shape that it can use to pass through layers.
Returns: self.axes

short_name
¶

tensor_description
(*args, **kwargs)[source]¶ Returns a TensorDescription describing the output of this TensorOp
Returns: TensorDescription for this op.

update_forwards
()¶ Updates internal op references with their forwarded versions.

user_deps
¶ return: Set of Ops the must come before this Op is used. See SetItem.

value
¶ Returns a handle to the device tensor.
The transformer must have been initialized.
Returns: A handle to the device tensor.

variables
(filter=None)¶ Return all trainable Ops used in computing this node.
Parameters: filter – Boolean filter of op, defaults to trainable. Returns: Set of trainable Ops.

visit_input_closure
(roots, fun)¶ “Bottomup” postorder traversal of root and their inputs.
Nodes will only be visited once, even if there are multiple routes to the same Node.
Parameters:  roots – root set of nodes to visit
 fun – Function to call on each visited node
Returns: None

class
ngraph.types.
Transformer
(fusion=None, **kwargs)[source]¶ Produce an executable version of opgraphs.
Computations are subsets of Ops to compute. The transformer determines storage allocation and transforms the computations and allocations into functions.
Parameters:  fusion (bool) – Whether to combine sequences of operations into one operation.
 **kwargs – Args for related classes.

computations
¶ set
ofComputation
– The set of requested computations.

finalized
¶ bool – True when transformation has been performed.

initialized
¶ bool – True when variables have been initialized/restored.

opids
¶ dict – TODO

fusion
¶ bool – True when fusion was enabled.

device_buffers
¶ set – Set of handles for storage allocations.

cpu_initializations
¶ list – Initializations to be performed from the CPU after allocation.

init_computation
¶ Computation – The computation that performs initialization after allocation. This happens once per training session, not once perminibatch.

allocate
()[source]¶ Allocate storage and then initializes constants.
Will finalize if not already done.

computation
(results, *parameters, **kwargs)[source]¶ Adds a computation to the transformer.
Parameters:  results – Values to be computed
 *parameters – Values to be set as arguments to evaluate
 name – Name for function. Defaults to None.
Returns: Dictionary from results to their values

device_buffer_storage
(bytes, dtype, name)[source]¶ Make a DeviceBuffer.
Parameters:  bytes – Size of buffer.
 dtype – dtype of buffer.
 name – Name of the storage variable
returns: A DeviceBuffer.

initialize_tensor_descriptions
(s, dispatch_arg, *args, **kwargs)[source]¶ Ensures that tensor descriptions associated with op are initialized.
Parameters: (class (op) – ngraph.op_graph.op_graph.Op): Initialize the tensor description for op.

next
()¶

transform_ordered_ops
(ordered_ops)[source]¶ Generate code to compute ordered_ops.
Arguments: ordered_ops: Ops to compute
Returns: Handle for generated code

transformers
= {'numpy': <class 'ngraph.transformers.nptransform.NumPyTransformer'>}¶