Documentation
¶
Index ¶
- func Backward(node Node, opts ...BackwardOption)
- func BackwardAll()
- func ClearGlobalGraph()
- func ClearGlobalGraphForReuse()
- func Forward(opts ...ForwardOption)
- func IncTimeStep()
- func Operands(xs []Node) []fn.Operand
- func ReplaceValue(node Node, value mat.Matrix)
- func TimeStep() int
- func ZeroGrad()
- type BackwardOption
- type ForwardOption
- type GradValue
- type Graph
- func (g *Graph) Abs(x Node) Node
- func (g *Graph) Add(x1 Node, x2 Node) Node
- func (g *Graph) AddScalar(x1 Node, x2 Node) Node
- func (g *Graph) At(x Node, i int, j int) Node
- func (g *Graph) AtVec(x Node, i int) Node
- func (g *Graph) Backward(node Node, opts ...BackwardOption)
- func (g *Graph) BackwardAll()
- func (g *Graph) CELU(x Node, alpha Node) Node
- func (g *Graph) Clear()
- func (g *Graph) ClearForReuse()
- func (g *Graph) ColView(x Node, column int) Node
- func (g *Graph) Concat(xs ...Node) Node
- func (g *Graph) ConcurrentComputations() int
- func (g *Graph) Constant(value mat.Float) Node
- func (g *Graph) Cos(x Node) Node
- func (g *Graph) Div(x1 Node, x2 Node) Node
- func (g *Graph) DivScalar(x1 Node, x2 Node) Node
- func (g *Graph) Dot(x1 Node, x2 Node) Node
- func (g *Graph) Dropout(x Node, p mat.Float) Node
- func (g *Graph) ELU(x Node, alpha Node) Node
- func (g *Graph) Exp(x Node) Node
- func (g *Graph) Forward(opts ...ForwardOption)
- func (g *Graph) GELU(x Node) Node
- func (g *Graph) GetCopiedGrad(node Node) mat.Matrix
- func (g *Graph) GetCopiedValue(node Node) mat.Matrix
- func (g *Graph) HardSigmoid(x Node) Node
- func (g *Graph) HardTanh(x Node) Node
- func (g *Graph) Identity(x Node) Node
- func (g *Graph) IncTimeStep()
- func (g *Graph) Invoke(operator OpName, xs ...Node) Node
- func (g *Graph) LeakyReLU(x Node, alpha Node) Node
- func (g *Graph) Log(x Node) Node
- func (g *Graph) Max(x1 Node, x2 Node) Node
- func (g *Graph) MaxPooling(x Node, rows, columns int) Node
- func (g *Graph) Mean(xs []Node) Node
- func (g *Graph) Min(x1 Node, x2 Node) Node
- func (g *Graph) Mish(x Node) Node
- func (g *Graph) Mul(x1 Node, x2 Node) Node
- func (g *Graph) Neg(x Node) Node
- func (g *Graph) NewOperator(f fn.Function, operands ...Node) Node
- func (g *Graph) NewScalar(value mat.Float) Node
- func (g *Graph) NewVariable(value mat.Matrix, requiresGrad bool) Node
- func (g *Graph) NewWrap(value GradValue) Node
- func (g *Graph) NewWrapNoGrad(value GradValue) Node
- func (g *Graph) PositiveELU(x Node) Node
- func (g *Graph) Pow(x Node, power mat.Float) Node
- func (g *Graph) Prod(x1 Node, x2 Node) Node
- func (g *Graph) ProdScalar(x1 Node, x2 Node) Node
- func (g *Graph) ReLU(x Node) Node
- func (g *Graph) Reciprocal(x Node) Node
- func (g *Graph) ReduceMean(x Node) Node
- func (g *Graph) ReduceSum(x Node) Node
- func (g *Graph) ReplaceValue(node Node, value mat.Matrix)
- func (g *Graph) Reshape(x Node, rows, columns int) Node
- func (g *Graph) ReverseSub(x1 Node, x2 Node) Node
- func (g *Graph) RotateR(x Node, i int) Node
- func (g *Graph) RowView(x Node, row int) Node
- func (g *Graph) SELU(x Node, alpha Node, scale Node) Node
- func (g *Graph) Sigmoid(x Node) Node
- func (g *Graph) Sin(x Node) Node
- func (g *Graph) SoftPlus(x Node, beta Node, threshold Node) Node
- func (g *Graph) SoftShrink(x Node, lambda Node) Node
- func (g *Graph) Softmax(x Node) Node
- func (g *Graph) Softsign(x Node) Node
- func (g *Graph) SparseMax(x Node) Node
- func (g *Graph) SparseMaxLoss(x Node) Node
- func (g *Graph) Sqrt(x Node) Node
- func (g *Graph) Square(x Node) Node
- func (g *Graph) Stack(xs ...Node) Node
- func (g *Graph) Sub(x1 Node, x2 Node) Node
- func (g *Graph) SubScalar(x1 Node, x2 Node) Node
- func (g *Graph) Sum(xs ...Node) Node
- func (g *Graph) Swish(x Node, beta Node) Node
- func (g *Graph) T(x Node) Node
- func (g *Graph) Tan(x Node) Node
- func (g *Graph) Tanh(x Node) Node
- func (g *Graph) Threshold(x Node, threshold Node, k Node) Node
- func (g *Graph) TimeStep() int
- func (g *Graph) Vec(x Node) Node
- func (g *Graph) View(x Node, row, column, xStride, yStride int) Node
- func (g *Graph) ZeroGrad()
- type GraphOption
- type Node
- func Abs(x Node) Node
- func Add(x1 Node, x2 Node) Node
- func AddScalar(x1 Node, x2 Node) Node
- func At(x Node, i int, j int) Node
- func AtVec(x Node, i int) Node
- func CELU(x Node, alpha Node) Node
- func ColView(x Node, column int) Node
- func Concat(xs ...Node) Node
- func Cos(x Node) Node
- func Div(x1 Node, x2 Node) Node
- func DivScalar(x1 Node, x2 Node) Node
- func Dot(x1 Node, x2 Node) Node
- func Dropout(x Node, p mat.Float) Node
- func ELU(x Node, alpha Node) Node
- func Exp(x Node) Node
- func GELU(x Node) Node
- func HardSigmoid(x Node) Node
- func HardTanh(x Node) Node
- func Identity(x Node) Node
- func Invoke(operator OpName, xs ...Node) Node
- func LeakyReLU(x Node, alpha Node) Node
- func Log(x Node) Node
- func Map(mapping func(Node) Node, xs []Node) []Node
- func Max(x1 Node, x2 Node) Node
- func MaxPooling(x Node, rows, columns int) Node
- func Mean(xs []Node) Node
- func Min(x1 Node, x2 Node) Node
- func Mish(x Node) Node
- func Mul(x1 Node, x2 Node) Node
- func Neg(x Node) Node
- func NewOperator(f fn.Function, operands ...Node) Node
- func NewScalar(value mat.Float) Node
- func NewVariable(value mat.Matrix, requiresGrad bool) Node
- func NewWrap(value GradValue) Node
- func NewWrapNoGrad(value GradValue) Node
- func PositiveELU(x Node) Node
- func Pow(x Node, power mat.Float) Node
- func Prod(x1 Node, x2 Node) Node
- func ProdScalar(x1 Node, x2 Node) Node
- func ReLU(x Node) Node
- func Reciprocal(x Node) Node
- func ReduceMean(x Node) Node
- func ReduceSum(x Node) Node
- func Reshape(x Node, rows, columns int) Node
- func ReverseSub(x1 Node, x2 Node) Node
- func RotateR(x Node, i int) Node
- func RowView(x Node, row int) Node
- func SELU(x Node, alpha Node, scale Node) Node
- func Sigmoid(x Node) Node
- func Sin(x Node) Node
- func SoftPlus(x Node, beta Node, threshold Node) Node
- func SoftShrink(x Node, lambda Node) Node
- func Softmax(x Node) Node
- func Softsign(x Node) Node
- func SparseMax(x Node) Node
- func SparseMaxLoss(x Node) Node
- func Sqrt(x Node) Node
- func Square(x Node) Node
- func Stack(xs ...Node) Node
- func Sub(x1 Node, x2 Node) Node
- func SubScalar(x1 Node, x2 Node) Node
- func Sum(xs ...Node) Node
- func Swish(x Node, beta Node) Node
- func T(x Node) Node
- func Tan(x Node) Node
- func Tanh(x Node) Node
- func Threshold(x Node, threshold Node, k Node) Node
- func Vec(x Node) Node
- func View(x Node, row, column, xStride, yStride int) Node
- type OpName
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Backward ¶
func Backward(node Node, opts ...BackwardOption)
Backward performs the back-propagation. See Graph.Backward() for more information.
func BackwardAll ¶
func BackwardAll()
BackwardAll performs full back-propagation from the last node of the graph. It requires the root nodes to have assigned gradients already.
func ClearGlobalGraph ¶
func ClearGlobalGraph()
ClearGlobalGraph clears the global graph. This is a destructive operation. See Graph.Clear() for more information.
func ClearGlobalGraphForReuse ¶
func ClearGlobalGraphForReuse()
ClearGlobalGraphForReuse does the same thing as ClearGlobalGraph(), with the difference that the graph structure is maintained. See Graph.ClearForReuse() for more information.
func Forward ¶
func Forward(opts ...ForwardOption)
Forward computes the results of the entire global raph.
func IncTimeStep ¶
func IncTimeStep()
IncTimeStep increments the value of the global graph's TimeStep by one.
func ReplaceValue ¶
ReplaceValue replaces the current value of a variable Node with the given value, on the global graph. It panics if node is not a variable.
Types ¶
type BackwardOption ¶
type BackwardOption func(*backwardHandler)
BackwardOption allows to adapt the Backward() to your specific needs.
func OutputGrad ¶
func OutputGrad(grad mat.Matrix) BackwardOption
OutputGrad is an option that sets the output gradients which are the starting point for the back-propagation (Backward).
func Truncate ¶
func Truncate(backSteps int) BackwardOption
Truncate is an option that sets the number of back steps for the Truncated Back-Propagation.
type ForwardOption ¶
type ForwardOption func(*forwardHandler)
ForwardOption allows to adapt the Forward() to your specific needs.
func Range ¶
func Range(fromTimeStep, toTimeStep int) ForwardOption
Range allows you to limit the forward computation within a time-step range. By default, the forward computes from the first node at time-step 0 to the last node at the current time-step.
type GradValue ¶
type GradValue interface { // Value returns the value of the node. // If the node is a variable it returns its value, otherwise returns the cached result of the forward pass. Value() mat.Matrix // ScalarValue returns the scalar value of the node. It panics if the value is not a scalar. ScalarValue() mat.Float // Grad returns the gradients accumulated during the backward pass. Grad() mat.Matrix // HasGrad returns true if there are accumulated gradients. HasGrad() bool // RequiresGrad returns true if the node requires gradients. RequiresGrad() bool // PropagateGrad propagates the gradients to the node. PropagateGrad(gx mat.Matrix) // ZeroGrad set the gradients to zeros. ZeroGrad() }
GradValue extends the fn.Operand interface providing more convenient methods to handle gradients in the context of automatic differentiation.
type Graph ¶
type Graph struct {
// contains filtered or unexported fields
}
The Graph a.k.a. expression graph or computational graph is the centerpiece of the spaGO machine learning framework. It takes the form of a directed graph with no directed cycles (DAG).
func GetGlobalGraph ¶
func GetGlobalGraph() *Graph
GetGlobalGraph returns the global graph. Although technically you could reassign the returned graph, please do not do so; imagine that its reference is immutable. Otherwise you are likely to generate inconsistent computations. To clean the global graph, you can use ClearGlobalGraph() or ClearGlobalGraphForReuse().
func NewGraph ¶
func NewGraph(opts ...GraphOption) *Graph
NewGraph returns a new initialized graph. It can take an optional random generator of type rand.Rand.
func (*Graph) Add ¶
Add returns a new operator node as a result of the fn.Add function. The first node may be null. This help to keep the code as concise as possible e.g. during accumulation.
func (*Graph) AddScalar ¶
AddScalar returns a new operator node as a result of the fn.AddScalar function.
func (*Graph) Backward ¶
func (g *Graph) Backward(node Node, opts ...BackwardOption)
Backward performs the back-propagation. It visits each node in reverse topological order, to propagate the gradients from the given node all the way back to the leaf. Note that the gradients are summed to the existing ones. Unless that's what you want, make sure all nodes have zero gradients.
The back-propagation starts from the node's output gradients, following these mutually exclusive rules:
a) the node has gradients (probably assigned externally via node.PropagateGrads()), use those; b) the output gradients are passed through the backward options, use those; c) the output gradients are automatically assigned by finding the derivative of the node with respect to the node itself (dy/dy = 1).
If the optional back steps are set, a Truncated Back-Propagation Through Time is carried out, that is: the visit ends as soon as it is encountered a node with time-step less or equal to the number of back steps. The TBTT can perform without the need to recalculate the values of previous nodes (Williams and Peng, 1990).
func (*Graph) BackwardAll ¶
func (g *Graph) BackwardAll()
BackwardAll performs full back-propagation from the last node of the graph. It requires the root nodes to have assigned gradients already.
func (*Graph) CELU ¶ added in v0.2.0
CELU returns a new operator node as a result of the fn.CELU function.
func (*Graph) Clear ¶
func (g *Graph) Clear()
Clear cleans the graph. This is a destructive operation. It is not mandatory to call this method, but it is strongly recommended to do so when you finish using the graph. The cleaning of the graph improves the memory management and therefore the efficiency of execution. Clear releases the matrices underlying the nodes so to reduce the need of future new time-consuming allocations. It is important to stress that calling g.Clean(), the "value" and "grad" of the operators nodes are freed (set to nil). Whoever is using the Value() or Grad() properties of a node, does so at his own risk. It is therefore recommended to make always a copy of the return value of Value() or Grad(). Alternatively, you can use the convenient graph's methods g.GetCopiedValue(node) and g.GetCopiedGrad(node).
func (*Graph) ClearForReuse ¶
func (g *Graph) ClearForReuse()
ClearForReuse does the same thing as Clear(), with the difference that the graph structure (i.e. how nodes are connected to each other) is maintained. This allows you to efficiently use the graph as if it were "pre-computed" (see the ForwardAll() method for this usage).
func (*Graph) ConcurrentComputations ¶ added in v0.3.0
ConcurrentComputations returns the maximum number of concurrent computations handled by the Graph for heavy tasks such as forward and backward steps.
func (*Graph) Constant ¶
Constant returns a scalar Node that that doesn't require gradients. For the same value, a previously created Node is returned without creating a new one. Useful for example in the case of epsilon and number like 0.0 or 1.0.
func (*Graph) DivScalar ¶
DivScalar returns a new operator node as a result of the fn.DivScalar function.
func (*Graph) Forward ¶
func (g *Graph) Forward(opts ...ForwardOption)
Forward computes the results of the entire Graph. Usually you don't need to execute Forward() manually in the define-by-run configuration (default). If you do, all values will be recalculated. You can also choose through the Range option to recalculate only a portion of nodes. Instead, it is required to obtain the value of the nodes in case the Graph has been created with IncrementalForward(false).
func (*Graph) GELU ¶ added in v0.2.0
GELU returns a new operator node as a result of the fn.GELU function.
func (*Graph) GetCopiedGrad ¶
GetCopiedGrad returns a copy of the gradients of a Node. If the gradients are nil, GetCopiedGrad returns nil as well. The returned value is a copy, so it is safe to use even after the graph has been cleared calling Graph.Clear(). It is important to remember that the Grad() property of a Node is a weak access, as the matrix derived from graph's operations can be freed.
func (*Graph) GetCopiedValue ¶
GetCopiedValue returns a copy of the value of a Node. If the value is nil, GetCopiedValue returns nil as well. The returned value is a copy, so it is safe to use even after the graph has been cleared calling Graph.Clear(). It is important to remember that the Value() property of a Node is a weak access, as the matrix derived from graph's operations can be freed.
func (*Graph) HardSigmoid ¶
HardSigmoid returns a new operator node as a result of the `HardSigmoid` function.
func (*Graph) HardTanh ¶
HardTanh returns a new operator node as a result of the `HardTanh` function.
func (*Graph) Identity ¶
Identity returns a new operator node as a result of the fn.Identity function.
func (*Graph) IncTimeStep ¶
func (g *Graph) IncTimeStep()
IncTimeStep increments the value of the graph's TimeStep by one.
func (*Graph) Invoke ¶
Invoke returns a new node as a result of the application of the input operator.
func (*Graph) LeakyReLU ¶
LeakyReLU returns a new operator node as a result of the fn.LeakyReLU function.
func (*Graph) MaxPooling ¶
MaxPooling returns a new operator node as a result of the fn.MaxPooling function.
func (*Graph) NewOperator ¶
NewOperator creates a new operator along with its forward pass. Please note that operations must be performed among nodes belonging to the same graph; it panics otherwise.
func (*Graph) NewScalar ¶
NewScalar creates a variable node that doesn't require gradients. TODO: Why shouldn't gradient be required by default?
func (*Graph) NewVariable ¶
NewVariable creates and returns a new node.
func (*Graph) NewWrap ¶
NewWrap creates a new wrapper Node for the given value, attaching it to the graph.
func (*Graph) NewWrapNoGrad ¶
NewWrapNoGrad is similar to NewWrap, but it disables automatic differentiation on the new node.
func (*Graph) PositiveELU ¶
PositiveELU returns a new operator node as a result of ELU(x) + 1.
func (*Graph) ProdScalar ¶
ProdScalar returns a new operator node as a result of the fn.ProdScalar function.
func (*Graph) Reciprocal ¶
Reciprocal returns a new operator node as a result of the `Reciprocal` function.
func (*Graph) ReduceMean ¶
ReduceMean returns a new operator node as a result of the fn.ReduceMean function.
func (*Graph) ReduceSum ¶
ReduceSum returns a new operator node as a result of the fn.ReduceSum function.
func (*Graph) ReplaceValue ¶
ReplaceValue replaces the current value of a variable Node with the given value. It panics if node is not a variable.
func (*Graph) ReverseSub ¶
ReverseSub returns a new operator node as a result of the fn.ReverseSub function.
func (*Graph) RotateR ¶
RotateR performs the right circular shift. `i` is the number of places by which the elements are shifted.
func (*Graph) SELU ¶ added in v0.2.0
SELU returns a new operator node as a result of the fn.SELU function.
func (*Graph) SoftPlus ¶
SoftPlus returns a new operator node as a result of the fn.SoftPlus function.
func (*Graph) SoftShrink ¶
SoftShrink returns a new operator node as a result of the fn.SoftShrink function.
func (*Graph) Softsign ¶
Softsign returns a new operator node as a result of the `SoftSign` function.
func (*Graph) SparseMax ¶
SparseMax returns a new operator node as a result of the fn.SparseMax function.
func (*Graph) SparseMaxLoss ¶
SparseMaxLoss returns a new operator node as a result of the fn.SparseMaxLoss function.
func (*Graph) Square ¶
Square returns a new operator node as a result of the fn.Prod(x, x) function.
func (*Graph) SubScalar ¶
SubScalar returns a new operator node as a result of the fn.SubScalar function.
func (*Graph) Sum ¶
Sum returns the value that describes the sum of the sample. It panics if the input is empty.
func (*Graph) Threshold ¶
Threshold returns a new operator node as a result of the fn.Threshold function.
func (*Graph) TimeStep ¶
TimeStep is an integer value associated with the graph, which can be useful to perform truncated back propagation. This value is 0 for a new Graph, and can be incremented calling IncTimeStep.
type GraphOption ¶
type GraphOption func(*Graph)
GraphOption allows to configure a new Graph with your specific needs.
func ConcurrentComputations ¶
func ConcurrentComputations(value int) GraphOption
ConcurrentComputations sets the maximum number of concurrent computations handled by the Graph for heavy tasks such as forward and backward steps. The value 1 corresponds to sequential execution.
func IncrementalForward ¶
func IncrementalForward(value bool) GraphOption
IncrementalForward sets whether to compute the forward during the graph definition (default true). When enabled it lets you access to the Value() resulting from the computation. There are particular cases where you don't need intermediate values and computing the forward after the graph definition can be more efficient though.
func RandSeed ¶
func RandSeed(seed uint64) GraphOption
RandSeed set a new generator of random numbers with the given seed.
type Node ¶
type Node interface { GradValue // Graph returns the graph this node belongs to. Graph() *Graph // ID returns the ID of the node in the graph. ID() int // TimeStep returns the time-step associated to this node. TimeStep() int }
Node is implemented by any value that can represent a node of a Graph.
func Add ¶
Add returns a new operator node as a result of the fn.Add function. The first node may be null. This help to keep the code as concise as possible e.g. during accumulation.
func HardSigmoid ¶
HardSigmoid returns a new operator node as a result of the `HardSigmoid` function.
func Map ¶ added in v0.2.0
Map returns a transformed version of xs with all its components modified according to the mapping function. It is useful for applying an operator to a sequence of nodes. Keep in mind that using this function has an overhead because of the callback, however insignificant compared to mathematical computations.
func MaxPooling ¶
MaxPooling returns a new operator node as a result of the fn.MaxPooling function.
func NewOperator ¶
NewOperator creates a new operator along with its forward pass.
func NewVariable ¶
NewVariable creates and returns a new node.
func NewWrap ¶
NewWrap creates a new wrapper Node for the given value, attaching it to the global graph.
func NewWrapNoGrad ¶
NewWrapNoGrad is similar to NewWrap, but it disables automatic differentiation on the new node.
func PositiveELU ¶
PositiveELU returns a new operator node as a result of ELU(x, 1.0) + 1.
func ProdScalar ¶
ProdScalar returns a new operator node as a result of the fn.ProdScalar function.
func Reciprocal ¶
Reciprocal returns a new operator node as a result of the `Reciprocal` function.
func ReduceMean ¶
ReduceMean returns a new operator node as a result of the fn.ReduceMean function.
func ReverseSub ¶
ReverseSub returns a new operator node as a result of the fn.ReverseSub function.
func RotateR ¶ added in v0.2.0
RotateR performs the right circular shift. `i` is the number of places by which the elements are shifted.
func SoftShrink ¶
SoftShrink returns a new operator node as a result of the fn.SoftShrink function.
func SparseMaxLoss ¶
SparseMaxLoss returns a new operator node as a result of the fn.SparseMaxLoss function.
type OpName ¶
type OpName int
OpName is the enumeration-like type used for the set of operators supported by spaGO.
const ( // OpIdentity identifies the Graph.Identity operator. OpIdentity OpName = iota // OpDropout identifies the Graph.Dropout operator. OpDropout // OpAtVec identifies the Graph.AtVec operator. OpAtVec // OpAt identifies the Graph.At operator. OpAt // OpAdd identifies the Graph.Add operator. OpAdd // OpSub identifies the Graph.Sub operator. OpSub // OpSubScalar identifies the Graph.SubScalar operator. OpSubScalar // OpAddScalar identifies the Graph.AddScalar operator. OpAddScalar // OpReverseSub identifies the Graph.ReverseSub operator. OpReverseSub // OpProd identifies the Graph.Prod operator. OpProd // OpDiv identifies the Graph.Div operator. OpDiv // OpProdScalar identifies the Graph.ProdScalar operator. OpProdScalar // OpDivScalar identifies the Graph.DivScalar operator. OpDivScalar // OpMul identifies the Graph.Mul operator. OpMul // OpDot identifies the Graph.Dot operator. OpDot // OpReshape identifies the Graph.Reshape operator. OpReshape // OpMaxPooling identifies the Graph.MaxPooling operator. OpMaxPooling // OpView identifies the Graph.View operator. OpView // OpRowView identifies the Graph.RowView operator. OpRowView // OpColView identifies the Graph.ColView operator. OpColView // OpVec identifies the Graph.Vec operator. OpVec // OpRotateR identifies the Graph.RotateR operator. OpRotateR // OpT identifies the Graph.T operator. OpT // OpSquare identifies the Graph.Square operator. OpSquare // OpPow identifies the Graph.Pow operator. OpPow // OpSqrt identifies the Graph.Sqrt operator. OpSqrt // OpTan identifies the Graph.Tan operator. OpTan // OpTanh identifies the Graph.Tanh operator. OpTanh // OpSigmoid identifies the Graph.Sigmoid operator. OpSigmoid // OpHardSigmoid identifies the Graph.HardSigmoid operator. OpHardSigmoid // OpHardTanh identifies the Graph.HardTanh operator. OpHardTanh // OpSoftsign identifies the Graph.Softsign operator. OpSoftsign // OpReLU identifies the Graph.ReLU operator. OpReLU // OpCELU identifies the Graph.CELU operator. OpCELU // OpGELU identifies the Graph.GELU operator. OpGELU // OpELU identifies the Graph.ELU operator. OpELU // OpPositiveELU identifies the Graph.PositiveELU operator. OpPositiveELU // OpSwish identifies the Graph.Swish operator. OpSwish // OpMish identifies the Graph.Mish operator. OpMish // OpLeakyReLU identifies the Graph.LeakyReLU operator. OpLeakyReLU // OpSELU identifies the Graph.SELU operator. OpSELU // OpSoftPlus identifies the Graph.SoftPlus operator. OpSoftPlus // OpSoftShrink identifies the Graph.SoftShrink operator. OpSoftShrink // OpThreshold identifies the Graph.Threshold operator. OpThreshold // OpSoftmax identifies the Graph.Softmax operator. OpSoftmax // OpSparseMax identifies the Graph.SparseMax operator. OpSparseMax // OpSparseMaxLoss identifies the Graph.SparseMaxLoss operator. OpSparseMaxLoss // OpSin identifies the Graph.Sin operator. OpSin // OpCos identifies the Graph.Cos operator. OpCos // OpExp identifies the Graph.Exp operator. OpExp // OpLog identifies the Graph.Log operator. OpLog // OpAbs identifies the Graph.Abs operator. OpAbs // OpNeg identifies the Graph.Neg operator. OpNeg // OpReciprocal identifies the Graph.Reciprocal operator. OpReciprocal // OpMax identifies the Graph.Max operator. OpMax // OpMin identifies the Graph.Min operator. OpMin // OpReduceSum identifies the Graph.ReduceSum operator. OpReduceSum // OpReduceMean identifies the Graph.ReduceMean operator. OpReduceMean // OpMean identifies the Graph.Mean operator. OpMean // OpSum identifies the Graph.Sum operator. OpSum // OpConcat identifies the Graph.Concat operator. OpConcat // OpStack identifies the Graph.Stack operator. OpStack )