Interface  Description 

Accumulation 
An accumulation is an op that given:
x > the origin ndarray y > the pairwise ndarray n > the number of times to accumulate
Of note here in the extra arguments. 
BroadcastOp 
A broad cast op is one where a scalar
or less rank array
is broadcast to fill
a bigg er array.

CustomOp 
This interface describe "custom operations.

GradientOp 
A gradient op represents
a jacobian operation

GridOp 
MetaOp is special op, that contains multiple ops

IndexAccumulation 
An index accumulation is an operation that returns an index within
a NDArray.
Examples of IndexAccumulation operations include finding the index of the minimim value, index of the maximum value, index of the first element equal to value y, index of the maximum pairwise difference between two NDArrays X and Y etc. Index accumulation is similar to Accumulation in that both are
accumulation/reduction operations, however index accumulation returns
an integer corresponding to an index, rather than a real (or complex)
value.Index accumulation operations generally have 3 inputs: x > the origin ndarray y > the pairwise ndarray (frequently null/not applicable) n > the number of times to accumulate Note that IndexAccumulation op implementations should be stateless (other than the final result and x/y/n arguments) and hence threadsafe, such that they may be parallelized using the update, combineSubResults and set/getFinalResults methods. 
LossFunction 
A loss function for computing
the delta between two arrays

MetaOp 
MetaOp is special op, that contains multiple ops

Module 
A Module is a
CustomOp
with varying input arguments
and automatically calculated outputs
defined at a higher level than c++. 
Op 
An op is defined as follows:
opName: opName of the operation
x: the origin ndarray
y: the ndarray to parse in parallel
z: the resulting buffer
n: the number of elements to iterate over
where x is the origin ndarray,
y, is a pairwise op
over n elements in the ndarray
stored in result z
This is followed from the standard template for a BLAS operation such that given a linear buffer, a function defines 3 buffers (x,y,z) and the associated strides and offsets (handled by the ndarrays in this case) 
RandomOp  
ScalarOp 
Applies a scalar
along a bigger input array.

TransformOp 
Transform operation:
stores the result in an ndarray

Class  Description 

BaseAccumulation 
Base class for accumulation, initiates the initial entry
with respect to the child class.

BaseBroadcastOp  
BaseGradientOp 
A gradient op always makes the following assumptions:
there is always a y (beacuse of backpropagating
or using the chain rule)
and that it is special exec (for now)
This op opType sis meant to be used
to build derivative operations.

BaseIndexAccumulation 
Index based reduction algo

BaseModule 
Abstract base class for
Module
that handles Dynamic ops and handles nesting. 
BaseOp 
Base op.

BaseScalarOp 
Base scalar operation

BaseTransformOp 
A base op for basic getters and setters

CustomOpDescriptor 
This class is simple POJO that contains basic information about CustomOp

DefaultOpConverter  
DynamicCustomOp 
Basic implementation for CustomOp

DynamicCustomOp.DynamicCustomOpsBuilder  
DynamicCustomOp.SameDiffBuilder  
NoOp  
ShapeOp 
Shape manipulation ops

Enum  Description 

Op.Type 