\hypertarget{namespacenntrainer}{}\doxysection{nntrainer Namespace Reference}
\label{namespacenntrainer}\index{nntrainer@{nntrainer}}
\doxysubsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \mbox{\hyperlink{namespacenntrainer_1_1exception}{exception}}
\end{DoxyCompactItemize}
\doxysubsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \mbox{\hyperlink{classnntrainer_1_1ActivationRealizer}{Activation\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer which realizes activation. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1AppContext}{App\+Context}}
\begin{DoxyCompactList}\small\item\em App. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Backend}{Backend}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1Backend}{Backend}} to be used for the operations to use. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1BasicPlanner}{Basic\+Planner}}
\begin{DoxyCompactList}\small\item\em Basic Memory Planner provides the basic plan for memory layout. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1BnRealizer}{Bn\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer class which removes batch normalization layer from the graph. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1CacheElem}{Cache\+Elem}}
\begin{DoxyCompactList}\small\item\em Cache element containing swap address. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1CacheLoader}{Cache\+Loader}}
\begin{DoxyCompactList}\small\item\em Cache loader from swap device. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1CachePool}{Cache\+Pool}}
\begin{DoxyCompactList}\small\item\em Cache memory with fixed size utilizing swap device. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1CentroidKNN}{Centroid\+K\+NN}}
\begin{DoxyCompactList}\small\item\em Centroid K\+NN layer which takes centroid and do k-\/nearest neighbor classification. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Connection}{Connection}}
\begin{DoxyCompactList}\small\item\em R\+A\+II class to define a connection. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1DataProducer}{Data\+Producer}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1DataProducer}{Data\+Producer}} interface used to abstract data provider. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1DelegateConfig}{Delegate\+Config}}
\begin{DoxyCompactList}\small\item\em Configuration for the delegate. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Device}{Device}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1Device}{Device}} to be used for the operations to run. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1DirDataProducer}{Dir\+Data\+Producer}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1DirDataProducer}{Dir\+Data\+Producer}} which generates a onehot vector as a label. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Exporter}{Exporter}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1Exporter}{Exporter}} class helps to exports the node information in a predefined way. because each method will require complete different methods, this class exploits visitor pattern to make a custom defined saving method. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1FlatBufferInterpreter}{Flat\+Buffer\+Interpreter}}
\begin{DoxyCompactList}\small\item\em flatbuffer graph interpreter class \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1FlatBufferOpNode}{Flat\+Buffer\+Op\+Node}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1FlatBufferOpNode}{Flat\+Buffer\+Op\+Node}} class. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1FlattenRealizer}{Flatten\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer class. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1FuncDataProducer}{Func\+Data\+Producer}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1FuncDataProducer}{Func\+Data\+Producer}} which contains a callback and returns back. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1GraphCompiler}{Graph\+Compiler}}
\begin{DoxyCompactList}\small\item\em Pure virtual class for the Graph Compiler. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1GraphInterpreter}{Graph\+Interpreter}}
\begin{DoxyCompactList}\small\item\em Pure virtual class for the Graph Interpreter. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1GraphNode}{Graph\+Node}}
\item 
class \mbox{\hyperlink{classnntrainer_1_1GraphNodeIterator}{Graph\+Node\+Iterator}}
\begin{DoxyCompactList}\small\item\em Iterator for \mbox{\hyperlink{classnntrainer_1_1GraphNode}{Graph\+Node}} which return const std\+::shared\+\_\+ptr$<$\+Layer\+Node\+Type$>$ object upon realize. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1GraphNodeReverseIterator}{Graph\+Node\+Reverse\+Iterator}}
\begin{DoxyCompactList}\small\item\em Reverse Iterator for \mbox{\hyperlink{classnntrainer_1_1GraphNode}{Graph\+Node}} which return \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} object upon realize. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1GraphRealizer}{Graph\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer class. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1IniGraphInterpreter}{Ini\+Graph\+Interpreter}}
\begin{DoxyCompactList}\small\item\em ini graph interpreter class \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1IniSection}{Ini\+Section}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1IniSection}{Ini\+Section}} class that maps to one ini section. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1InitLayerContext}{Init\+Layer\+Context}}
\item 
class \mbox{\hyperlink{classnntrainer_1_1IniWrapper}{Ini\+Wrapper}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1IniWrapper}{Ini\+Wrapper}} using Ini\+Sections. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1InputRealizer}{Input\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer class which remaps input from start -\/$>$ input layers. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Iteration}{Iteration}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1Iteration}{Iteration}} class which owns the memory chunk for a single batch. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1IterationQueue}{Iteration\+Queue}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1Iteration}{Iteration}} queue that owns the buffer for input / labels. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}}
\begin{DoxyCompactList}\small\item\em layer node class for the graph \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1LossRealizer}{Loss\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer class which removes loss layer from the graph. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1MemoryData}{Memory\+Data}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1MemoryData}{Memory\+Data}} Class. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1MemoryPlanner}{Memory\+Planner}}
\begin{DoxyCompactList}\small\item\em Memory Planner provides the plan/strategy to allocate the memory. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1MemoryPool}{Memory\+Pool}}
\begin{DoxyCompactList}\small\item\em Memory Pool provides a common pool for all the tensor memory. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structnntrainer_1_1MemoryRequest}{Memory\+Request}}
\begin{DoxyCompactList}\small\item\em Memory Request data structure clubbing all the requests. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1MultioutRealizer}{Multiout\+Realizer}}
\begin{DoxyCompactList}\small\item\em Add multiout layer when a certain input is referenced multiple times. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1OptimizedV1Planner}{Optimized\+V1\+Planner}}
\begin{DoxyCompactList}\small\item\em Optimized V1 Memory Planner provides the optimized plan for memory layout. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1OptimizedV2Planner}{Optimized\+V2\+Planner}}
\begin{DoxyCompactList}\small\item\em Optimized V2 Memory Planner provides the optimized plan for memory layout. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1OptimizedV3Planner}{Optimized\+V3\+Planner}}
\begin{DoxyCompactList}\small\item\em Optimized V3 Memory Planner provides the optimized plan for memory layout. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1ParallelBatch}{Parallel\+Batch}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1ParallelBatch}{Parallel\+Batch}} class to parallelize along batch direction. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PermuteLayer}{Permute\+Layer}}
\begin{DoxyCompactList}\small\item\em Permute layer to transpose a tensor. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PreprocessL2NormLayer}{Preprocess\+L2\+Norm\+Layer}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classLayer}{Layer}} class that l2normalizes a feature vector. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PreviousInputRealizer}{Previous\+Input\+Realizer}}
\begin{DoxyCompactList}\small\item\em Add default inputs if input connection is empty. if a node is identified as input with {\itshape identified\+\_\+input} by user or a node has input\+\_\+shape property, adding input behavior is skipped. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PropsBufferSize}{Props\+Buffer\+Size}}
\begin{DoxyCompactList}\small\item\em Props containing buffer size value. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PropsMax}{Props\+Max}}
\begin{DoxyCompactList}\small\item\em Props containing max value. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PropsMin}{Props\+Min}}
\begin{DoxyCompactList}\small\item\em Props containing min value. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PropsNNSModelPath}{Props\+N\+N\+S\+Model\+Path}}
\begin{DoxyCompactList}\small\item\em N\+N\+S\+Model\+Path property. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PropsNumSamples}{Props\+Num\+Samples}}
\begin{DoxyCompactList}\small\item\em Props containing number of samples A random data producer has theoretical size. number of samples is used to set theoretical size of the random data producer\textquotesingle{}s data size. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1PropsTflModelPath}{Props\+Tfl\+Model\+Path}}
\begin{DoxyCompactList}\small\item\em Tfl\+Model\+Path property. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1RandomDataOneHotProducer}{Random\+Data\+One\+Hot\+Producer}}
\begin{DoxyCompactList}\small\item\em Random\+Data\+Producer which generates a onehot vector as a label. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1RawFileDataProducer}{Raw\+File\+Data\+Producer}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1RawFileDataProducer}{Raw\+File\+Data\+Producer}} which contains a callback and returns back. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1RecurrentRealizer}{Recurrent\+Realizer}}
\begin{DoxyCompactList}\small\item\em Recurrent Realizer which unrolls graph from given graph representation. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1RemapRealizer}{Remap\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer class which remaps identifiers inside the graph representation, remap\+\_\+function will be applied for all the layers identifier visible. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1RunLayerContext}{Run\+Layer\+Context}}
\item 
class \mbox{\hyperlink{classnntrainer_1_1RunOptimizerContext}{Run\+Optimizer\+Context}}
\item 
class \mbox{\hyperlink{classnntrainer_1_1Sample}{Sample}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1Sample}{Sample}} class which views the memory for a single sample. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1ScopedView}{Scoped\+View}}
\begin{DoxyCompactList}\small\item\em A view container that calls a callback on destruct. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1SliceRealizer}{Slice\+Realizer}}
\begin{DoxyCompactList}\small\item\em Graph realizer class which slice graph representation. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1SrcSharedTensor}{Src\+Shared\+Tensor}}
\begin{DoxyCompactList}\small\item\em Source of the shared tensor. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1SwapDevice}{Swap\+Device}}
\begin{DoxyCompactList}\small\item\em A device used to storing data with long access time. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Task}{Task}}
\begin{DoxyCompactList}\small\item\em task class \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1TaskAsync}{Task\+Async}}
\begin{DoxyCompactList}\small\item\em Async task class. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1TaskExecutor}{Task\+Executor}}
\begin{DoxyCompactList}\small\item\em task executor class \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structnntrainer_1_1TensorSpecV2}{Tensor\+Spec\+V2}}
\begin{DoxyCompactList}\small\item\em Tensor Specification which describes how this tensor should be allocated and managed. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1TfliteInterpreter}{Tflite\+Interpreter}}
\begin{DoxyCompactList}\small\item\em tflite graph interpreter class \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}}
\begin{DoxyCompactList}\small\item\em tensorflow operational node representation. This class contains, information to build operation flatbuffer \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Var__Grad}{Var\+\_\+\+Grad}}
\begin{DoxyCompactList}\small\item\em Variable with Gradient, and its corresponding need\+\_\+gradient property. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structnntrainer_1_1VarGradSpecV2}{Var\+Grad\+Spec\+V2}}
\begin{DoxyCompactList}\small\item\em variable + gradient specification \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1ViewQueue}{View\+Queue}}
\begin{DoxyCompactList}\small\item\em Thread Safe Queue implementation dedicated for the non-\/owing pointer. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}}
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} extends over \mbox{\hyperlink{classnntrainer_1_1Var__Grad}{Var\+\_\+\+Grad}} with regularization \& optimizer updates. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structnntrainer_1_1WeightSpecV2}{Weight\+Spec\+V2}}
\begin{DoxyCompactList}\small\item\em weight specification \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structnntrainer_1_1WGradMemoryRequest}{W\+Grad\+Memory\+Request}}
\begin{DoxyCompactList}\small\item\em Memory Request data structure clubbing for the weight gradient requests. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{namespacenntrainer_a9a1c31ef37dd4f2947282aae9f82fb75}\label{namespacenntrainer_a9a1c31ef37dd4f2947282aae9f82fb75}} 
using {\bfseries Graph\+Representation} = std\+::vector$<$ std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ $>$
\item 
\mbox{\Hypertarget{namespacenntrainer_a8d4db03c7bb9ca5cd059c40787365637}\label{namespacenntrainer_a8d4db03c7bb9ca5cd059c40787365637}} 
using {\bfseries Executable\+Graph} = Network\+Graph
\item 
\mbox{\Hypertarget{namespacenntrainer_ad32d39f896f63ae2373de210e12934bc}\label{namespacenntrainer_ad32d39f896f63ae2373de210e12934bc}} 
using {\bfseries datagen\+\_\+cb} = ml\+::train\+::datagen\+\_\+cb
\item 
\mbox{\Hypertarget{namespacenntrainer_a8e4fcb4be62d09aeb6154417a7296063}\label{namespacenntrainer_a8e4fcb4be62d09aeb6154417a7296063}} 
{\footnotesize template$<$class Layer\+Node\+Type $>$ }\\using \mbox{\hyperlink{namespacenntrainer_a8e4fcb4be62d09aeb6154417a7296063}{graph\+\_\+const\+\_\+iterator}} = \mbox{\hyperlink{classnntrainer_1_1GraphNodeIterator}{Graph\+Node\+Iterator}}$<$ Layer\+Node\+Type, const std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1GraphNode}{Graph\+Node}} $>$ $>$
\begin{DoxyCompactList}\small\item\em Iterators to traverse the graph. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_acb4ff172ba7eb7608da836c5f77c3dd1}\label{namespacenntrainer_acb4ff172ba7eb7608da836c5f77c3dd1}} 
{\footnotesize template$<$class Layer\+Node\+Type $>$ }\\using \mbox{\hyperlink{namespacenntrainer_acb4ff172ba7eb7608da836c5f77c3dd1}{graph\+\_\+const\+\_\+reverse\+\_\+iterator}} = \mbox{\hyperlink{classnntrainer_1_1GraphNodeReverseIterator}{Graph\+Node\+Reverse\+Iterator}}$<$ \mbox{\hyperlink{classnntrainer_1_1GraphNodeIterator}{Graph\+Node\+Iterator}}$<$ Layer\+Node\+Type, const std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1GraphNode}{Graph\+Node}} $>$ $>$$>$
\begin{DoxyCompactList}\small\item\em Iterators to traverse the graph. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a8c94fef3df0854c879ba0dcb34cff10f}\label{namespacenntrainer_a8c94fef3df0854c879ba0dcb34cff10f}} 
using {\bfseries Memory\+Data\+Validate\+Callback} = std\+::function$<$ void(unsigned int)$>$
\item 
typedef std\+::tuple$<$ Tensor\+Dim, Tensor\+::\+Initializer, \mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58}{Weight\+Regularizer}}, float, float, float, bool, const std\+::string $>$ \mbox{\hyperlink{namespacenntrainer_a486fa79107b2f54f85fd24a6e76a75dc}{Weight\+Spec}}
\begin{DoxyCompactList}\small\item\em Specification of the \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} as a tensor wrapper. \end{DoxyCompactList}\item 
typedef std\+::tuple$<$ Tensor\+Dim, Tensor\+::\+Initializer, bool, const std\+::string, \mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622d}{Tensor\+Lifespan}} $>$ \mbox{\hyperlink{namespacenntrainer_acb044356c97403667b8eaf26179baf9c}{Var\+Grad\+Spec}}
\begin{DoxyCompactList}\small\item\em Specification of the \mbox{\hyperlink{classnntrainer_1_1Var__Grad}{Var\+\_\+\+Grad}} (trainable tensor) as a tensor wrapper. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}{Attention\+Params}} \{ \newline
{\bfseries query} = 0, 
\mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}{value}} = 1, 
{\bfseries key} = 2, 
{\bfseries weights}, 
\newline
{\bfseries query\+\_\+fc\+\_\+weight}, 
{\bfseries query\+\_\+fc\+\_\+bias}, 
{\bfseries key\+\_\+fc\+\_\+weight}, 
{\bfseries key\+\_\+fc\+\_\+bias}, 
\newline
{\bfseries value\+\_\+fc\+\_\+weight}, 
{\bfseries value\+\_\+fc\+\_\+bias}, 
{\bfseries fc\+\_\+weight}, 
{\bfseries fc\+\_\+bias}, 
\newline
{\bfseries projected\+\_\+query}, 
{\bfseries projected\+\_\+key}, 
{\bfseries projected\+\_\+value}, 
\mbox{\hyperlink{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebda361a60eafdd8e3874fb871dedf20135e}{attention\+\_\+weight}}, 
\newline
{\bfseries dropout\+\_\+mask}, 
{\bfseries attention\+\_\+output}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_a009f7d3ee334ca2a7a45a3664843da45}\label{namespacenntrainer_a009f7d3ee334ca2a7a45a3664843da45}} 
enum {\bfseries B\+N\+Params} \{ \newline
{\bfseries mu}, 
{\bfseries var}, 
{\bfseries gamma}, 
{\bfseries beta}, 
\newline
{\bfseries deviation}, 
{\bfseries invstd}, 
{\bfseries cvar}, 
{\bfseries t\+\_\+reduced}, 
\newline
{\bfseries t\+\_\+full}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_a636c0bf8192f21fbf4a949058308b497}\label{namespacenntrainer_a636c0bf8192f21fbf4a949058308b497}} 
enum {\bfseries K\+N\+N\+Params} \{ {\bfseries map}, 
{\bfseries num\+\_\+samples}
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210}{Activation\+Type}} \{ \newline
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a3dcec7789c3b51f06a177dda7c5fe350}{Activation\+Type\+::\+A\+C\+T\+\_\+\+T\+A\+NH}}, 
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a7c1b1f51ad6e4d385248caf8a4d4d446}{Activation\+Type\+::\+A\+C\+T\+\_\+\+S\+I\+G\+M\+O\+ID}}, 
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a8ec95b2ee85cd043e56193b6a04fcef3}{Activation\+Type\+::\+A\+C\+T\+\_\+\+R\+E\+LU}}, 
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210aabd87a225cdb07cd03bd20573aa400e4}{Activation\+Type\+::\+A\+C\+T\+\_\+\+S\+W\+I\+SH}}, 
\newline
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210ae9cd5118604618dcd2f53171727242cc}{Activation\+Type\+::\+A\+C\+T\+\_\+\+S\+O\+F\+T\+M\+AX}}, 
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210afc8e2c2b20b653d7abbefe5c1322b82f}{Activation\+Type\+::\+A\+C\+T\+\_\+\+L\+E\+A\+K\+Y\+\_\+\+R\+E\+LU}}, 
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a3ae40c82ecfee954b2b6c49d7f703b74}{Activation\+Type\+::\+A\+C\+T\+\_\+\+N\+O\+NE}}, 
\mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a668b78c00c329a286df604b8d351b90e}{Activation\+Type\+::\+A\+C\+T\+\_\+\+U\+N\+K\+N\+O\+WN}}
 \}
\begin{DoxyCompactList}\small\item\em Enumeration of activation function type. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a256e4a13021b6b4feb5c170767aa8e62}\label{namespacenntrainer_a256e4a13021b6b4feb5c170767aa8e62}} 
enum {\bfseries Embedding\+Params} \{ {\bfseries weight}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_a658f129612602873c980e81241409369}\label{namespacenntrainer_a658f129612602873c980e81241409369}} 
enum {\bfseries F\+C\+Params} \{ {\bfseries weight}, 
{\bfseries bias}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_a7ca95b97d62db58a42e9e7302c940761}\label{namespacenntrainer_a7ca95b97d62db58a42e9e7302c940761}} 
enum {\bfseries G\+R\+U\+Params} \{ \newline
{\bfseries weight\+\_\+ih}, 
{\bfseries weight\+\_\+hh}, 
{\bfseries bias\+\_\+h}, 
{\bfseries bias\+\_\+ih}, 
\newline
{\bfseries bias\+\_\+hh}, 
{\bfseries hidden\+\_\+state}, 
{\bfseries zrg}, 
{\bfseries h\+\_\+prev}, 
\newline
{\bfseries dropout\+\_\+mask}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_a4fe82e10710c32c6d741b4f485c58145}\label{namespacenntrainer_a4fe82e10710c32c6d741b4f485c58145}} 
enum {\bfseries G\+R\+U\+Cell\+Params} \{ \newline
{\bfseries weight\+\_\+ih}, 
{\bfseries weight\+\_\+hh}, 
{\bfseries bias\+\_\+h}, 
{\bfseries bias\+\_\+ih}, 
\newline
{\bfseries bias\+\_\+hh}, 
{\bfseries zrg}, 
{\bfseries dropout\+\_\+mask}
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8}{Print\+Option}} \{ \newline
\mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8aa99bc1769d11098116640aea97285b5a}{P\+R\+I\+N\+T\+\_\+\+I\+N\+S\+T\+\_\+\+I\+N\+FO}} = (1 $<$$<$ 0), 
\mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a262425a87a1d7bc38964b0c230782c7e}{P\+R\+I\+N\+T\+\_\+\+S\+H\+A\+P\+E\+\_\+\+I\+N\+FO}} = (1 $<$$<$ 1), 
\mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8ae8e453fa1fa0166f2cbb556c0b2fe499}{P\+R\+I\+N\+T\+\_\+\+P\+R\+OP}} = (1 $<$$<$ 2), 
\mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a4229fd85c43a78fc58f0e0cb80086844}{P\+R\+I\+N\+T\+\_\+\+P\+R\+O\+P\+\_\+\+M\+E\+TA}} = (1 $<$$<$ 3), 
\newline
\mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8ab381d5cb0fde9ee52c21732bb448ceb5}{P\+R\+I\+N\+T\+\_\+\+W\+E\+I\+G\+H\+TS}} = (1 $<$$<$ 4), 
\mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a1e3da167f223b30edd207dffd9f0c74f}{P\+R\+I\+N\+T\+\_\+\+M\+E\+T\+R\+IC}} = (1 $<$$<$ 5)
 \}
\begin{DoxyCompactList}\small\item\em Print Options when printing layer info. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317e}{In\+Place}} \{ \mbox{\hyperlink{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317eab50339a10e1de285ac99d4c3990b8693}{In\+Place\+::\+N\+O\+NE}}, 
\mbox{\hyperlink{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317ea5e6e2c7f119226111e052ea81d59effe}{In\+Place\+::\+R\+E\+S\+T\+R\+I\+C\+T\+I\+NG}}, 
\mbox{\hyperlink{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317eae74dc5e1f6b6b101e21fd764685eba5b}{In\+Place\+::\+N\+O\+N\+\_\+\+R\+E\+S\+T\+R\+I\+C\+T\+I\+NG}}
 \}
\begin{DoxyCompactList}\small\item\em Enum class for the various types of inplace modes supported by layer. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a344ba4e5386219aef47818741a63df5d}\label{namespacenntrainer_a344ba4e5386219aef47818741a63df5d}} 
enum {\bfseries L\+N\+Params} \{ \newline
{\bfseries gamma}, 
{\bfseries beta}, 
{\bfseries deviation}, 
{\bfseries variance}, 
\newline
{\bfseries inv\+\_\+std\+\_\+dev}, 
{\bfseries temp\+\_\+origin\+\_\+size}, 
{\bfseries temp\+\_\+normalized\+\_\+size}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_a54a3af771db1739bf65d8d60f1bc12cc}\label{namespacenntrainer_a54a3af771db1739bf65d8d60f1bc12cc}} 
enum {\bfseries L\+S\+T\+M\+Params} \{ \newline
{\bfseries weight\+\_\+ih}, 
{\bfseries weight\+\_\+hh}, 
{\bfseries bias\+\_\+h}, 
{\bfseries bias\+\_\+ih}, 
\newline
{\bfseries bias\+\_\+hh}, 
{\bfseries hidden\+\_\+state}, 
{\bfseries cell\+\_\+state}, 
{\bfseries ifgo}, 
\newline
{\bfseries reverse\+\_\+weight\+\_\+ih}, 
{\bfseries reverse\+\_\+weight\+\_\+hh}, 
{\bfseries reverse\+\_\+bias\+\_\+h}, 
{\bfseries reverse\+\_\+bias\+\_\+ih}, 
\newline
{\bfseries reverse\+\_\+bias\+\_\+hh}, 
{\bfseries reverse\+\_\+hidden\+\_\+state}, 
{\bfseries reverse\+\_\+cell\+\_\+state}, 
{\bfseries reverse\+\_\+ifgo}, 
\newline
{\bfseries dropout\+\_\+mask}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_ad37a6f6c6d170b732be218e770764f99}\label{namespacenntrainer_ad37a6f6c6d170b732be218e770764f99}} 
enum {\bfseries L\+S\+T\+M\+Cell\+Params} \{ \newline
{\bfseries weight\+\_\+ih}, 
{\bfseries weight\+\_\+hh}, 
{\bfseries bias\+\_\+h}, 
{\bfseries bias\+\_\+ih}, 
\newline
{\bfseries bias\+\_\+hh}, 
{\bfseries ifgo}, 
{\bfseries dropout\+\_\+mask}
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8cc}{Mo\+L\+Attention\+Params}} \{ \newline
{\bfseries query} = 0, 
\mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}{value}} = 1, 
{\bfseries state} = 2, 
{\bfseries mask\+\_\+len} = 3, 
\newline
{\bfseries fc\+\_\+w}, 
{\bfseries fc\+\_\+bias}, 
{\bfseries fc\+\_\+proj\+\_\+w}, 
{\bfseries fc\+\_\+out}, 
\newline
{\bfseries fc\+\_\+tanh}, 
{\bfseries fc\+\_\+proj\+\_\+out}, 
{\bfseries scores}, 
{\bfseries prob}, 
\newline
{\bfseries prob\+\_\+left}, 
{\bfseries prob\+\_\+right}, 
{\bfseries u\+\_\+neg\+\_\+div}, 
{\bfseries u\+\_\+pos\+\_\+div}, 
\newline
{\bfseries dstate}
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313}{I\+N\+O\+U\+T\+\_\+\+I\+N\+D\+EX}} \{ \newline
\mbox{\hyperlink{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313a183d3f4e03a9f6f5743d3ef96a4024b2}{Q\+U\+E\+RY}} = 0, 
{\bfseries K\+EY} = 1, 
{\bfseries V\+A\+L\+UE} = 2, 
{\bfseries M\+A\+SK} = 3, 
\newline
\mbox{\hyperlink{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313a6ecceff0f738c97de873722a3648e644}{O\+U\+T\+P\+UT}} = 0, 
{\bfseries R\+E\+T\+U\+R\+N\+\_\+\+A\+T\+T\+E\+N\+T\+I\+O\+N\+\_\+\+W\+E\+I\+G\+HT} = 1
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}{Attention\+Params}} \{ \newline
{\bfseries query} = 0, 
\mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}{value}} = 1, 
{\bfseries key} = 2, 
{\bfseries weights}, 
\newline
{\bfseries query\+\_\+fc\+\_\+weight}, 
{\bfseries query\+\_\+fc\+\_\+bias}, 
{\bfseries key\+\_\+fc\+\_\+weight}, 
{\bfseries key\+\_\+fc\+\_\+bias}, 
\newline
{\bfseries value\+\_\+fc\+\_\+weight}, 
{\bfseries value\+\_\+fc\+\_\+bias}, 
{\bfseries fc\+\_\+weight}, 
{\bfseries fc\+\_\+bias}, 
\newline
{\bfseries projected\+\_\+query}, 
{\bfseries projected\+\_\+key}, 
{\bfseries projected\+\_\+value}, 
\mbox{\hyperlink{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebda361a60eafdd8e3874fb871dedf20135e}{attention\+\_\+weight}}, 
\newline
{\bfseries dropout\+\_\+mask}, 
{\bfseries attention\+\_\+output}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_ac08d2e63d27a2fb082d7478f69b2fce3}\label{namespacenntrainer_ac08d2e63d27a2fb082d7478f69b2fce3}} 
enum {\bfseries Positional\+Encoding\+Params} \{ {\bfseries positional\+\_\+encoding}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_aee80efb0e76fb9a39d877bc00559b1f9}\label{namespacenntrainer_aee80efb0e76fb9a39d877bc00559b1f9}} 
enum {\bfseries R\+N\+N\+Params} \{ \newline
{\bfseries weight\+\_\+ih}, 
{\bfseries weight\+\_\+hh}, 
{\bfseries bias\+\_\+h}, 
{\bfseries bias\+\_\+ih}, 
\newline
{\bfseries bias\+\_\+hh}, 
{\bfseries hidden\+\_\+state}, 
{\bfseries dropout\+\_\+mask}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_a97512f5efd79a582982d3850ac6100d6}\label{namespacenntrainer_a97512f5efd79a582982d3850ac6100d6}} 
enum {\bfseries R\+N\+N\+Cell\+Params} \{ \newline
{\bfseries weight\+\_\+ih}, 
{\bfseries weight\+\_\+hh}, 
{\bfseries bias\+\_\+h}, 
{\bfseries bias\+\_\+ih}, 
\newline
{\bfseries bias\+\_\+hh}, 
{\bfseries dropout\+\_\+mask}
 \}
\item 
\mbox{\Hypertarget{namespacenntrainer_ad15b56200b34d7ac72e08c40a7eaabe4}\label{namespacenntrainer_ad15b56200b34d7ac72e08c40a7eaabe4}} 
enum {\bfseries Zoneout\+L\+S\+T\+M\+Params} \{ \newline
{\bfseries weight\+\_\+ih}, 
{\bfseries weight\+\_\+hh}, 
{\bfseries bias\+\_\+h}, 
{\bfseries bias\+\_\+ih}, 
\newline
{\bfseries bias\+\_\+hh}, 
{\bfseries ifgo}, 
{\bfseries hidden\+\_\+state\+\_\+zoneout\+\_\+mask}, 
{\bfseries cell\+\_\+state\+\_\+zoneout\+\_\+mask}, 
\newline
{\bfseries lstm\+\_\+cell\+\_\+state}
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12a}{Execution\+Mode}} \{ {\bfseries T\+R\+A\+IN}, 
\mbox{\hyperlink{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12aaaaae44d7a005067077df5b8c50e15357}{Execution\+Mode\+::\+I\+N\+F\+E\+R\+E\+N\+CE}}, 
\mbox{\hyperlink{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12aaca9ed3118a19ef7e8ebfbd25598dd2f3}{Execution\+Mode\+::\+V\+A\+L\+I\+D\+A\+TE}}
 \}
\begin{DoxyCompactList}\small\item\em class telling the execution mode of the model/operation \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_af141e0fbbbbb951e3b126f13ce7cf4c1}\label{namespacenntrainer_af141e0fbbbbb951e3b126f13ce7cf4c1}} 
enum {\bfseries Adam\+Params} \{ {\bfseries wm}, 
{\bfseries wv}
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78}{Cache\+Policy}} \{ \newline
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78a3171c37231f1cb2437bd8cc0d3b502ac}{W\+R\+I\+T\+E\+\_\+\+B\+A\+CK}} = 0b0001, 
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78a46532de34f9d0ffab044b547f659c7dd}{N\+O\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+A\+CK}} = 0b0010, 
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78a83ce2bfb860bdb8a0b5d73673137a938}{R\+E\+A\+D\+\_\+\+C\+O\+N\+S\+I\+ST}} = 0b0100, 
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78a98236694e743664e4c90eddf1a937bd6}{N\+O\+\_\+\+R\+E\+A\+D\+\_\+\+C\+O\+N\+S\+I\+ST}} = 0b1000, 
\newline
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78a5e8591d5727269464e9004aa77336de6}{A\+L\+W\+A\+Y\+S\+\_\+\+S\+Y\+N\+C\+ED}}, 
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78a1b236e361853e16fd6718d67efafdd74}{T\+E\+M\+P\+O\+R\+AL}}, 
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78af118f54876084ada34d27054fbff540a}{F\+I\+R\+S\+T\+\_\+\+L\+A\+S\+T\+\_\+\+S\+K\+IP}} = 0b10000, 
\mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78a68704fb17232151a4b10b4e22ab7f0ff}{I\+T\+E\+R\+A\+T\+I\+O\+N\+\_\+\+C\+O\+N\+S\+I\+ST}} = (F\+I\+R\+S\+T\+\_\+\+L\+A\+S\+T\+\_\+\+S\+K\+IP $\vert$ A\+L\+W\+A\+Y\+S\+\_\+\+S\+Y\+N\+C\+ED)
 \}
\item 
enum \mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58}{Weight\+Regularizer}} \{ \mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58ad927ac799e8b24f80fc80d89b2eb7131}{Weight\+Regularizer\+::\+L2\+N\+O\+RM}}, 
\mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58ab50339a10e1de285ac99d4c3990b8693}{Weight\+Regularizer\+::\+N\+O\+NE}}, 
\mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58a696b031073e74bf2cb98e5ef201d4aa3}{Weight\+Regularizer\+::\+U\+N\+K\+N\+O\+WN}}
 \}
\begin{DoxyCompactList}\small\item\em Enumeration of Weight Regularizer. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622d}{Tensor\+Lifespan}} \{ \newline
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da9adcd06a53fb18c2e2c0a28d5bb5f3ea}{Tensor\+Lifespan\+::\+U\+N\+M\+A\+N\+A\+G\+ED}} = 0b000, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da6f193735a1915532364db08ff2406a34}{Tensor\+Lifespan\+::\+F\+O\+R\+W\+A\+R\+D\+\_\+\+F\+U\+N\+C\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b001, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da7786c03b41e40c113e3bb577568908b1}{Tensor\+Lifespan\+::\+C\+A\+L\+C\+\_\+\+D\+E\+R\+I\+V\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b010, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dad313a48c983c59591aa678a5d88d8de3}{Tensor\+Lifespan\+::\+C\+A\+L\+C\+\_\+\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b100, 
\newline
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daa6fd61589981ed03bc38459de3ffebea}{Tensor\+Lifespan\+::\+C\+A\+L\+C\+\_\+\+A\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b1000, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da3a00727a27a5b578218b85d2f7085f95}{Tensor\+Lifespan\+::\+C\+A\+L\+C\+\_\+\+G\+R\+A\+D\+\_\+\+D\+E\+R\+I\+V\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b110, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dae2ae557af6d708d49d55b61d82592ae3}{Tensor\+Lifespan\+::\+C\+A\+L\+C\+\_\+\+G\+R\+A\+D\+\_\+\+D\+E\+R\+I\+V\+\_\+\+A\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b1110, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da2f42cb582b77d5254dc373069949e3a6}{Tensor\+Lifespan\+::\+F\+O\+R\+W\+A\+R\+D\+\_\+\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b101, 
\newline
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dad8783650f9b5c6b7d8fa30f5c5660969}{Tensor\+Lifespan\+::\+F\+O\+R\+W\+A\+R\+D\+\_\+\+G\+R\+A\+D\+\_\+\+A\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b1101, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da7ad41d23392658992665c714c17897be}{Tensor\+Lifespan\+::\+F\+O\+R\+W\+A\+R\+D\+\_\+\+D\+E\+R\+I\+V\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b011, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da1706ba50c10e909d84876b75fac7294f}{Tensor\+Lifespan\+::\+B\+A\+C\+K\+W\+A\+R\+D\+\_\+\+F\+U\+N\+C\+\_\+\+L\+I\+F\+E\+S\+P\+AN}}, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da3f7a0f4f9399f0d9ec0d8d26ec59e9ec}{Tensor\+Lifespan\+::\+I\+T\+E\+R\+A\+T\+I\+O\+N\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b1111, 
\newline
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daca0c2bc976ced58a12e3386494e15d71}{Tensor\+Lifespan\+::\+E\+P\+O\+C\+H\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b11111, 
\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daa9e0b1de0ff7353f28b66401c4d303bc}{Tensor\+Lifespan\+::\+M\+A\+X\+\_\+\+L\+I\+F\+E\+S\+P\+AN}} = 0b111111
 \}
\begin{DoxyCompactList}\small\item\em define the lifespan of the given tensor to reduce peak memory \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static void \mbox{\hyperlink{namespacenntrainer_a145a6299e379ef59c6470344684a6a94}{fini\+\_\+global\+\_\+context\+\_\+nntrainer}} (void) \+\_\+\+\_\+attribute\+\_\+\+\_\+((destructor))
\begin{DoxyCompactList}\small\item\em finialize global context \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_afc6e105048ea4ceca0fb54eba1f60115}{add\+\_\+default\+\_\+object}} (\mbox{\hyperlink{classnntrainer_1_1AppContext}{App\+Context}} \&ac)
\item 
\mbox{\Hypertarget{namespacenntrainer_a8f4ffd9ee0289266229b9dea5b03c3eb}\label{namespacenntrainer_a8f4ffd9ee0289266229b9dea5b03c3eb}} 
static void {\bfseries add\+\_\+extension\+\_\+object} (\mbox{\hyperlink{classnntrainer_1_1AppContext}{App\+Context}} \&ac)
\item 
\mbox{\Hypertarget{namespacenntrainer_ad7046419e29f532fc74e1a39296d5c6e}\label{namespacenntrainer_ad7046419e29f532fc74e1a39296d5c6e}} 
static void {\bfseries registerer} (\mbox{\hyperlink{classnntrainer_1_1AppContext}{App\+Context}} \&ac) noexcept
\item 
{\footnotesize template$<$size\+\_\+t I = 0, typename V , typename... Ts$>$ }\\std\+::enable\+\_\+if$<$ I==sizeof...(Ts), void $>$\+::type \mbox{\hyperlink{namespacenntrainer_adee2dd1c2fcdb8d0dd152a14600c9cba}{parse\+\_\+properties}} (V \&props, std\+::tuple$<$ Ts... $>$ \&tup)
\begin{DoxyCompactList}\small\item\em base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple \end{DoxyCompactList}\item 
const template int \mbox{\hyperlink{namespacenntrainer_a2ce4ee428c91b5efea84166a8610927a}{App\+Context\+::register\+Factory$<$ nntrainer\+::\+Optimizer $>$}} (const Factory\+Type$<$ nntrainer\+::\+Optimizer $>$ factory, const std\+::string \&key, const int int\+\_\+key)
\begin{DoxyCompactList}\small\item\em int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} \end{DoxyCompactList}\item 
const template int \mbox{\hyperlink{namespacenntrainer_a1312c36a2fc5d2413128dad2b0446717}{App\+Context\+::register\+Factory$<$ nntrainer\+::\+Layer $>$}} (const Factory\+Type$<$ nntrainer\+::\+Layer $>$ factory, const std\+::string \&key, const int int\+\_\+key)
\begin{DoxyCompactList}\small\item\em int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} \end{DoxyCompactList}\item 
const template int \mbox{\hyperlink{namespacenntrainer_a6fe37026a34e6f748a7f591fb78f99a1}{App\+Context\+::register\+Factory$<$ ml\+::train\+::\+Learning\+Rate\+Scheduler $>$}} (const Factory\+Type$<$ ml\+::train\+::\+Learning\+Rate\+Scheduler $>$ factory, const std\+::string \&key, const int int\+\_\+key)
\begin{DoxyCompactList}\small\item\em int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_ad3f6301c414ec073ee70c0400d661daa}{propagate\+Timestep}} (\mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $\ast$node, unsigned int time\+\_\+step, unsigned int max\+\_\+time\+\_\+step)
\begin{DoxyCompactList}\small\item\em if node is of recurrent type, set time step and max time step \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_ad430dfe4b824108ee72a349d1781be43}\label{namespacenntrainer_ad430dfe4b824108ee72a349d1781be43}} 
std\+::unique\+\_\+ptr$<$ Data\+Buffer $>$ \mbox{\hyperlink{namespacenntrainer_ad430dfe4b824108ee72a349d1781be43}{create\+Data\+Buffer}} (Dataset\+Type type)
\begin{DoxyCompactList}\small\item\em Factory creator with constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a410e5e57a029801e7df11e943aff7af2}\label{namespacenntrainer_a410e5e57a029801e7df11e943aff7af2}} 
std\+::unique\+\_\+ptr$<$ Data\+Buffer $>$ \mbox{\hyperlink{namespacenntrainer_a410e5e57a029801e7df11e943aff7af2}{create\+Data\+Buffer}} (Dataset\+Type type, const char $\ast$file)
\begin{DoxyCompactList}\small\item\em Factory creator with constructor for dataset. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a43057240355eeaca0c93b6634a17daeb}\label{namespacenntrainer_a43057240355eeaca0c93b6634a17daeb}} 
std\+::unique\+\_\+ptr$<$ Data\+Buffer $>$ \mbox{\hyperlink{namespacenntrainer_a43057240355eeaca0c93b6634a17daeb}{create\+Data\+Buffer}} (Dataset\+Type type, datagen\+\_\+cb cb, void $\ast$user\+\_\+data)
\begin{DoxyCompactList}\small\item\em Factory creator with constructor for dataset. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_af3ae4387c29bf33d32a2b5154d4ddb81}{set\+Inplace\+Shared\+Memory\+Config\+By\+Layer}} (const std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ \&lnode, bool \&shared\+\_\+var, bool \&shared\+\_\+grad)
\begin{DoxyCompactList}\small\item\em Set the Inplace Shared Memory Config By \mbox{\hyperlink{classLayer}{Layer}} object. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_a824cf9c8b75f1c4d7961862a4b78ca5b}{grucell\+\_\+forwarding}} (const unsigned int unit, const unsigned int batch\+\_\+size, const bool disable\+\_\+bias, const bool integrate\+\_\+bias, const bool reset\+\_\+after, Acti\+Func \&acti\+\_\+func, Acti\+Func \&recurrent\+\_\+acti\+\_\+func, const Tensor \&input, const Tensor \&prev\+\_\+hidden\+\_\+state, Tensor \&hidden\+\_\+state, const Tensor \&weight\+\_\+ih, const Tensor \&weight\+\_\+hh, const Tensor \&bias\+\_\+h, const Tensor \&bias\+\_\+ih, const Tensor \&bias\+\_\+hh, Tensor \&zrg)
\begin{DoxyCompactList}\small\item\em gru forwarding \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_a694f7ac37596bdfbbd332544d264ba6e}{grucell\+\_\+calc\+Gradient}} (const unsigned int unit, const unsigned int batch\+\_\+size, const bool disable\+\_\+bias, const bool integrate\+\_\+bias, const bool reset\+\_\+after, Acti\+Func \&acti\+\_\+func, Acti\+Func \&recurrent\+\_\+acti\+\_\+func, const Tensor \&input, const Tensor \&prev\+\_\+hidden\+\_\+state, Tensor \&d\+\_\+prev\+\_\+hidden\+\_\+state, const Tensor \&d\+\_\+hidden\+\_\+state, Tensor \&d\+\_\+weight\+\_\+ih, const Tensor \&weight\+\_\+hh, Tensor \&d\+\_\+weight\+\_\+hh, Tensor \&d\+\_\+bias\+\_\+h, Tensor \&d\+\_\+bias\+\_\+ih, const Tensor \&bias\+\_\+hh, Tensor \&d\+\_\+bias\+\_\+hh, const Tensor \&zrg, Tensor \&d\+\_\+zrg)
\begin{DoxyCompactList}\small\item\em gru calc\+Gradient \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_a2072d4b3a3be2bcc7097ba91c117eb55}{suffix\+Spec}} (\mbox{\hyperlink{structnntrainer_1_1VarGradSpecV2}{Var\+Grad\+Spec\+V2}} \&spec, unsigned int idx)
\begin{DoxyCompactList}\small\item\em rename specification \end{DoxyCompactList}\item 
std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ \mbox{\hyperlink{namespacenntrainer_a04be82378b46e79b499cceeeb2dd48d5}{create\+Layer\+Node}} (const ml\+::train\+::\+Layer\+Type \&type, const std\+::vector$<$ std\+::string $>$ \&properties)
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classLayer}{Layer}} factory creator with constructor. \end{DoxyCompactList}\item 
std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ \mbox{\hyperlink{namespacenntrainer_a51a272801b52c00849e47687e1e05df2}{create\+Layer\+Node}} (const std\+::string \&type, const std\+::vector$<$ std\+::string $>$ \&properties)
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classLayer}{Layer}} factory creator with constructor. \end{DoxyCompactList}\item 
std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ \mbox{\hyperlink{namespacenntrainer_ab80b39d88a067bf48ad3d990eb973827}{create\+Layer\+Node}} (std\+::unique\+\_\+ptr$<$ nntrainer\+::\+Layer $>$ \&\&layer, const std\+::vector$<$ std\+::string $>$ \&properties)
\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{classLayer}{Layer}} factory creator with constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_af61069b84576b390e2182be0617dfac6}\label{namespacenntrainer_af61069b84576b390e2182be0617dfac6}} 
std\+::ostream \& {\bfseries operator$<$$<$} (std\+::ostream \&out, const \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} \&l)
\item 
\mbox{\Hypertarget{namespacenntrainer_a5e7e546778fc7cda8c94cb473ceb5ff6}\label{namespacenntrainer_a5e7e546778fc7cda8c94cb473ceb5ff6}} 
static int {\bfseries nnst\+\_\+info\+\_\+to\+\_\+tensor\+\_\+dim} (ml\+\_\+tensors\+\_\+info\+\_\+h \&out\+\_\+res, Tensor\+Dim \&dim)
\item 
static std\+::string \mbox{\hyperlink{namespacenntrainer_a5251bf487ffdceb6a22a3ff5221000f4}{build\+Traspose\+String}} (const std\+::array$<$ \mbox{\hyperlink{classnntrainer_1_1props_1_1PermuteDims}{props\+::\+Permute\+Dims}}, 3 $>$ \&arr)
\begin{DoxyCompactList}\small\item\em build\+Transpose\+String based on array \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a2521e81f0c066a40c0ea7877fb4a25fd}\label{namespacenntrainer_a2521e81f0c066a40c0ea7877fb4a25fd}} 
static void {\bfseries reshape} (Tensor \&m)
\item 
\mbox{\Hypertarget{namespacenntrainer_ac94384f66cd6678d114205df6a31a1e4}\label{namespacenntrainer_ac94384f66cd6678d114205df6a31a1e4}} 
void {\bfseries swap} (Neural\+Network \&lhs, Neural\+Network \&rhs)
\item 
\mbox{\Hypertarget{namespacenntrainer_a11f844b1211e79f9a129ffbe79ad50f8}\label{namespacenntrainer_a11f844b1211e79f9a129ffbe79ad50f8}} 
void \mbox{\hyperlink{namespacenntrainer_a11f844b1211e79f9a129ffbe79ad50f8}{\+\_\+\+\_\+nntrainer\+\_\+log\+\_\+print}} (nntrainer\+\_\+loglevel loglevel, const std\+::string format\+\_\+str,...)
\begin{DoxyCompactList}\small\item\em Interface function for C. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a0a518099cbcb4743a7df7f7bb0e26bfa}\label{namespacenntrainer_a0a518099cbcb4743a7df7f7bb0e26bfa}} 
std\+::unique\+\_\+ptr$<$ Optimizer\+Wrapped $>$ \mbox{\hyperlink{namespacenntrainer_a0a518099cbcb4743a7df7f7bb0e26bfa}{create\+Optimizer\+Wrapped}} (const ml\+::train\+::\+Optimizer\+Type \&type, const std\+::vector$<$ std\+::string $>$ \&properties)
\begin{DoxyCompactList}\small\item\em Optimizer wrapped creator with constructor for optimizer. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a189ebfef020970bbc9d2c097b67fd389}\label{namespacenntrainer_a189ebfef020970bbc9d2c097b67fd389}} 
std\+::unique\+\_\+ptr$<$ Optimizer\+Wrapped $>$ \mbox{\hyperlink{namespacenntrainer_a189ebfef020970bbc9d2c097b67fd389}{create\+Optimizer\+Wrapped}} (const std\+::string \&type, const std\+::vector$<$ std\+::string $>$ \&properties)
\begin{DoxyCompactList}\small\item\em Optimizer wrapped creator with constructor for optimizer. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a68566724c4549f032c7cdfb744bf5486}\label{namespacenntrainer_a68566724c4549f032c7cdfb744bf5486}} 
std\+::unique\+\_\+ptr$<$ Optimizer\+Wrapped $>$ \mbox{\hyperlink{namespacenntrainer_a68566724c4549f032c7cdfb744bf5486}{create\+Optimizer\+Wrapped}} (std\+::unique\+\_\+ptr$<$ Optimizer\+Core $>$ \&\&opt, const std\+::vector$<$ std\+::string $>$ \&properties)
\begin{DoxyCompactList}\small\item\em Optimizer wrapped creator with constructor for optimizer. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_aa3a8d8e69827a57f6c9d5f3678f8e7aa}\label{namespacenntrainer_aa3a8d8e69827a57f6c9d5f3678f8e7aa}} 
static void {\bfseries saxpy\+\_\+raw} (const unsigned int N, const float alpha, const float $\ast$X, const int incX, float $\ast$Y, const int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_a5cde83a6b37d3d931e984681fe7ba391}\label{namespacenntrainer_a5cde83a6b37d3d931e984681fe7ba391}} 
static void {\bfseries sgemv\+\_\+raw} (C\+B\+L\+A\+S\+\_\+\+O\+R\+D\+ER order, C\+B\+L\+A\+S\+\_\+\+T\+R\+A\+N\+S\+P\+O\+SE TransA, const unsigned int M, const unsigned int N, const float alpha, const float $\ast$A, const unsigned int lda, const float $\ast$X, const int incX, const float beta, float $\ast$Y, const int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_a613a1a2610bbba273386c7ab0bc15080}\label{namespacenntrainer_a613a1a2610bbba273386c7ab0bc15080}} 
static float {\bfseries sdot\+\_\+raw} (const unsigned int N, const float $\ast$X, const unsigned int incX, const float $\ast$Y, const unsigned int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_acebe8994ab7ab802909ca11056e13954}\label{namespacenntrainer_acebe8994ab7ab802909ca11056e13954}} 
static void {\bfseries scopy\+\_\+raw} (const unsigned int N, const float $\ast$X, const int incX, float $\ast$Y, const int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_a0913de2df502c7e74ebe12d168c61e80}\label{namespacenntrainer_a0913de2df502c7e74ebe12d168c61e80}} 
static void {\bfseries sscal\+\_\+raw} (const unsigned int N, const float alpha, float $\ast$X, const int incX)
\item 
\mbox{\Hypertarget{namespacenntrainer_a3e14492d0d649a3cd582d3ddc6e1c167}\label{namespacenntrainer_a3e14492d0d649a3cd582d3ddc6e1c167}} 
static float {\bfseries snrm2\+\_\+raw} (const unsigned int N, const float $\ast$X, const int incX)
\item 
\mbox{\Hypertarget{namespacenntrainer_a1e2a98157cb599db58ac2dd64e3e1df7}\label{namespacenntrainer_a1e2a98157cb599db58ac2dd64e3e1df7}} 
static void {\bfseries sgemm\+\_\+raw} (C\+B\+L\+A\+S\+\_\+\+O\+R\+D\+ER order, C\+B\+L\+A\+S\+\_\+\+T\+R\+A\+N\+S\+P\+O\+SE TransA, C\+B\+L\+A\+S\+\_\+\+T\+R\+A\+N\+S\+P\+O\+SE TransB, const unsigned int M, const unsigned int N, const unsigned int K, const float alpha, const float $\ast$A, const unsigned int lda, const float $\ast$B, const unsigned int ldb, const float beta, float $\ast$C, const unsigned int ldc)
\item 
\mbox{\Hypertarget{namespacenntrainer_a7f37211a0dd44b80ce0e19bae63964e8}\label{namespacenntrainer_a7f37211a0dd44b80ce0e19bae63964e8}} 
static unsigned int {\bfseries isamax\+\_\+raw} (const unsigned int N, const float $\ast$X, const int incX)
\item 
\mbox{\Hypertarget{namespacenntrainer_a90100d09c8e06bf3e624ba377f902077}\label{namespacenntrainer_a90100d09c8e06bf3e624ba377f902077}} 
void {\bfseries saxpy} (const unsigned int N, const float alpha, const float $\ast$X, const int incX, float $\ast$Y, const int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_a501a0a276e788996e7dd3671a1fc0420}\label{namespacenntrainer_a501a0a276e788996e7dd3671a1fc0420}} 
void {\bfseries sgemm} (C\+B\+L\+A\+S\+\_\+\+O\+R\+D\+ER order, C\+B\+L\+A\+S\+\_\+\+T\+R\+A\+N\+S\+P\+O\+SE TransA, C\+B\+L\+A\+S\+\_\+\+T\+R\+A\+N\+S\+P\+O\+SE TransB, const unsigned int M, const unsigned int N, const unsigned int K, const float alpha, const float $\ast$A, const unsigned int lda, const float $\ast$B, const unsigned int ldb, const float beta, float $\ast$C, const unsigned int ldc)
\item 
\mbox{\Hypertarget{namespacenntrainer_a45b3e45b64ec9c5faed10f568674af3e}\label{namespacenntrainer_a45b3e45b64ec9c5faed10f568674af3e}} 
void {\bfseries scopy} (const unsigned int N, const float $\ast$X, const int incX, float $\ast$Y, const int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_a3868aa05f1f0bec2bb81caab19206bca}\label{namespacenntrainer_a3868aa05f1f0bec2bb81caab19206bca}} 
void {\bfseries sscal} (const int N, const float alpha, float $\ast$X, const int incX)
\item 
\mbox{\Hypertarget{namespacenntrainer_a64dff3b9ed767fdea5b1594367e22244}\label{namespacenntrainer_a64dff3b9ed767fdea5b1594367e22244}} 
float {\bfseries snrm2} (const int N, const float $\ast$X, const int incX)
\item 
\mbox{\Hypertarget{namespacenntrainer_a1f5ae85b2bd03a52f9eb3bc3418dbb61}\label{namespacenntrainer_a1f5ae85b2bd03a52f9eb3bc3418dbb61}} 
float {\bfseries sdot} (const unsigned int N, const float $\ast$X, const unsigned int incX, const float $\ast$Y, const unsigned int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_abbdc17aa51b65df4456049988ddde524}\label{namespacenntrainer_abbdc17aa51b65df4456049988ddde524}} 
void {\bfseries sgemv} (C\+B\+L\+A\+S\+\_\+\+O\+R\+D\+ER order, C\+B\+L\+A\+S\+\_\+\+T\+R\+A\+N\+S\+P\+O\+SE TransA, const unsigned int M, const unsigned int N, const float alpha, const float $\ast$A, const unsigned int lda, const float $\ast$X, const int incX, const float beta, float $\ast$Y, const int incY)
\item 
\mbox{\Hypertarget{namespacenntrainer_af94efc26ab684c880f1c140edd09ab4f}\label{namespacenntrainer_af94efc26ab684c880f1c140edd09ab4f}} 
unsigned int {\bfseries isamax} (const unsigned int N, const float $\ast$X, const int incX)
\item 
\mbox{\Hypertarget{namespacenntrainer_ae732384b72c2cbb3b91354b6808c45f8}\label{namespacenntrainer_ae732384b72c2cbb3b91354b6808c45f8}} 
static Tensor $\ast$ {\bfseries request\+Tensor\+\_\+} (const \mbox{\hyperlink{structnntrainer_1_1TensorSpecV2}{Tensor\+Spec\+V2}} \&spec, const \mbox{\hyperlink{classnntrainer_1_1GraphNode_ae20fecb05f124a46d1907d13ed813a2f}{Graph\+Node\+::\+Execution\+Order}} \&exec\+\_\+order, const std\+::string \&scope, Tensor\+Pool \&tp, bool expose, bool trainable)
\item 
{\footnotesize template$<$typename T $>$ }\\static bool \mbox{\hyperlink{namespacenntrainer_a43149824cfc05351a9be002f1765ceaa}{overlap}} (T s1, T e1, T s2, T e2)
\begin{DoxyCompactList}\small\item\em check if the two given intervals overlap \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}{validate\+Interval\+Overlap}} (const std\+::vector$<$ std\+::pair$<$ unsigned int, unsigned int $>$$>$ \&memory\+\_\+validity, const std\+::vector$<$ size\+\_\+t $>$ \&memory\+\_\+size, const std\+::vector$<$ size\+\_\+t $>$ \&memory\+\_\+offset, size\+\_\+t memory\+\_\+req)
\begin{DoxyCompactList}\small\item\em check if validate interval is overlapping in a very naive way. \end{DoxyCompactList}\item 
static void \mbox{\hyperlink{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}{validate\+Interval\+Overlap}} (const std\+::vector$<$ std\+::pair$<$ unsigned int, unsigned int $>$$>$ \&memory\+\_\+validity, const std\+::vector$<$ size\+\_\+t $>$ \&memory\+\_\+size, const std\+::vector$<$ size\+\_\+t $>$ \&memory\+\_\+offset, size\+\_\+t memory\+\_\+req)
\begin{DoxyCompactList}\small\item\em check if validate interval is overlapping in a very naive way. \end{DoxyCompactList}\item 
static size\+\_\+t \mbox{\hyperlink{namespacenntrainer_a1b34f5386daad474be8c71c3314a8e3d}{compute\+Space}} (unsigned int exec\+\_\+order, std\+::vector$<$ \mbox{\hyperlink{structnntrainer_1_1MemoryRequest}{Memory\+Request}} $\ast$ $>$ \&sorted\+\_\+req, std\+::vector$<$ std\+::pair$<$ size\+\_\+t, size\+\_\+t $>$$>$ \&vacant)
\item 
static void \mbox{\hyperlink{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}{validate\+Interval\+Overlap}} (const std\+::vector$<$ std\+::pair$<$ unsigned int, unsigned int $>$$>$ \&memory\+\_\+validity, const std\+::vector$<$ size\+\_\+t $>$ \&memory\+\_\+size, const std\+::vector$<$ size\+\_\+t $>$ \&memory\+\_\+offset, size\+\_\+t memory\+\_\+req)
\begin{DoxyCompactList}\small\item\em check if validate interval is overlapping in a very naive way. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a9fc37c9d77b9c8b81b68dcc571e76cdc}\label{namespacenntrainer_a9fc37c9d77b9c8b81b68dcc571e76cdc}} 
std\+::ostream \& {\bfseries operator$<$$<$} (std\+::ostream \&out, Tensor const \&m)
\item 
\mbox{\Hypertarget{namespacenntrainer_ad701d6a1f342a1a8fcc220859b9083d6}\label{namespacenntrainer_ad701d6a1f342a1a8fcc220859b9083d6}} 
template$<$$>$ std\+::unique\+\_\+ptr$<$ std\+::vector$<$ std\+::pair$<$ std\+::string, std\+::string $>$ $>$ $>$ {\bfseries Exporter\+::get\+Result$<$ ml\+::train\+::\+Export\+Methods\+::\+M\+E\+T\+H\+O\+D\+\_\+\+S\+T\+R\+I\+N\+G\+V\+E\+C\+T\+O\+R $>$} ()
\item 
{\footnotesize template$<$size\+\_\+t I = 0, typename Callable , typename... Ts$>$ }\\std\+::enable\+\_\+if$<$ I==sizeof...(Ts), void $>$\+::type \mbox{\hyperlink{namespacenntrainer_aa8da200ba973a6a00769c3872a760f6c}{iterate\+\_\+prop}} (Callable \&\&c, const std\+::tuple$<$ Ts... $>$ \&tup)
\begin{DoxyCompactList}\small\item\em base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple \end{DoxyCompactList}\item 
{\footnotesize template$<$size\+\_\+t I = 0, typename Callable , typename... Ts$>$ }\\std\+::enable\+\_\+if$<$(I$<$ sizeof...(Ts)), void $>$\+::type \mbox{\hyperlink{namespacenntrainer_a6633c5ce26cef45d361f1c05177b2548}{iterate\+\_\+prop}} (Callable \&\&c, const std\+::tuple$<$ Ts... $>$ \&tup)
\begin{DoxyCompactList}\small\item\em base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple \end{DoxyCompactList}\item 
{\footnotesize template$<$size\+\_\+t I = 0, typename Callable , typename... Ts$>$ }\\std\+::enable\+\_\+if$<$(I$<$ sizeof...(Ts)), void $>$\+::type \mbox{\hyperlink{namespacenntrainer_aebbf3d0dd40d8df3afba74234bb9bff9}{iterate\+\_\+prop}} (Callable \&\&c, std\+::tuple$<$ Ts... $>$ \&tup)
\begin{DoxyCompactList}\small\item\em $<$size\+\_\+t I = 0, typename Callable, typename... Ts$>$ \end{DoxyCompactList}\item 
{\footnotesize template$<$typename Tuple $>$ }\\std\+::vector$<$ std\+::string $>$ \mbox{\hyperlink{namespacenntrainer_a1664dceadead6470231703d3ba0f019f}{load\+Properties}} (const std\+::vector$<$ std\+::string $>$ \&string\+\_\+vector, Tuple \&\&props)
\begin{DoxyCompactList}\small\item\em load property from the api formatted string (\{\char`\"{}key=value\char`\"{}, \char`\"{}key1=value1\char`\"{}\}) \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_a683929e1f742e4644832c13d0fac120d}\label{namespacenntrainer_a683929e1f742e4644832c13d0fac120d}} 
static std\+::uniform\+\_\+real\+\_\+distribution$<$ float $>$ {\bfseries dist} (-\/0.\+5, 0.\+5)
\item 
\mbox{\Hypertarget{namespacenntrainer_ac051a124097960c9aa9a6ea95f15674a}\label{namespacenntrainer_ac051a124097960c9aa9a6ea95f15674a}} 
unsigned int {\bfseries get\+Seed} ()
\item 
\mbox{\Hypertarget{namespacenntrainer_a2a1d41db57225079d0a89bb89ab3ac9d}\label{namespacenntrainer_a2a1d41db57225079d0a89bb89ab3ac9d}} 
float {\bfseries sqrt\+Float} (float x)
\item 
\mbox{\Hypertarget{namespacenntrainer_a36672f20f31a8fee9cbc28ae36c317c8}\label{namespacenntrainer_a36672f20f31a8fee9cbc28ae36c317c8}} 
double {\bfseries sqrt\+Double} (double x)
\item 
\mbox{\Hypertarget{namespacenntrainer_acf40b813d2431adccad166db4384791f}\label{namespacenntrainer_acf40b813d2431adccad166db4384791f}} 
float {\bfseries log\+Float} (float x)
\item 
\mbox{\Hypertarget{namespacenntrainer_a565de0af5a6085f1e526714f7725063f}\label{namespacenntrainer_a565de0af5a6085f1e526714f7725063f}} 
float {\bfseries exp\+\_\+util} (float x)
\item 
\mbox{\Hypertarget{namespacenntrainer_a39fef6a57f36b772d96f596800d37e45}\label{namespacenntrainer_a39fef6a57f36b772d96f596800d37e45}} 
Tensor {\bfseries rotate\+\_\+180} (Tensor in)
\item 
\mbox{\Hypertarget{namespacenntrainer_adcc8bdebe88b73a1962cb8c9c44933d8}\label{namespacenntrainer_adcc8bdebe88b73a1962cb8c9c44933d8}} 
bool {\bfseries is\+File\+Exist} (std\+::string file\+\_\+name)
\item 
\mbox{\Hypertarget{namespacenntrainer_a036362ccf65e7d9da365dcc505217367}\label{namespacenntrainer_a036362ccf65e7d9da365dcc505217367}} 
{\footnotesize template$<$typename T $>$ }\\static void {\bfseries check\+File} (const T \&file, const char $\ast$error\+\_\+msg)
\item 
\mbox{\Hypertarget{namespacenntrainer_afa818310c351c738d45ed99e6f07387a}\label{namespacenntrainer_afa818310c351c738d45ed99e6f07387a}} 
void {\bfseries checked\+Read} (std\+::ifstream \&file, char $\ast$array, std\+::streamsize size, const char $\ast$error\+\_\+msg)
\item 
\mbox{\Hypertarget{namespacenntrainer_ae56c503fe402b87624ff267e302d0677}\label{namespacenntrainer_ae56c503fe402b87624ff267e302d0677}} 
void {\bfseries checked\+Write} (std\+::ostream \&file, const char $\ast$array, std\+::streamsize size, const char $\ast$error\+\_\+msg)
\item 
\mbox{\Hypertarget{namespacenntrainer_aff294ca59f3c6f7962bf05e0902ac880}\label{namespacenntrainer_aff294ca59f3c6f7962bf05e0902ac880}} 
std\+::string {\bfseries read\+String} (std\+::ifstream \&file, const char $\ast$error\+\_\+msg)
\item 
\mbox{\Hypertarget{namespacenntrainer_ad136f7e0a470bf017a75cfc9de7f91a6}\label{namespacenntrainer_ad136f7e0a470bf017a75cfc9de7f91a6}} 
void {\bfseries write\+String} (std\+::ofstream \&file, const std\+::string \&str, const char $\ast$error\+\_\+msg)
\item 
\mbox{\Hypertarget{namespacenntrainer_aba2774cdf75ebf9550998b3fec10839d}\label{namespacenntrainer_aba2774cdf75ebf9550998b3fec10839d}} 
bool {\bfseries endswith} (const std\+::string \&target, const std\+::string \&suffix)
\item 
\mbox{\Hypertarget{namespacenntrainer_af53f19e3f947675653d227364990c660}\label{namespacenntrainer_af53f19e3f947675653d227364990c660}} 
int {\bfseries get\+Key\+Value} (const std\+::string \&input\+\_\+str, std\+::string \&key, std\+::string \&\mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}{value}})
\item 
\mbox{\Hypertarget{namespacenntrainer_a7f0cd698c9e1c97f423ce0502bbbeb75}\label{namespacenntrainer_a7f0cd698c9e1c97f423ce0502bbbeb75}} 
int {\bfseries get\+Values} (int n\+\_\+str, std\+::string str, int $\ast$\mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}{value}})
\item 
\mbox{\Hypertarget{namespacenntrainer_aa1f3d4667dda7cadf6daaff8e31f712e}\label{namespacenntrainer_aa1f3d4667dda7cadf6daaff8e31f712e}} 
std\+::vector$<$ std\+::string $>$ {\bfseries split} (const std\+::string \&s, const std\+::regex \&reg)
\item 
\mbox{\Hypertarget{namespacenntrainer_a5ea4a3cf0ce9133d56f8927e4d2d6c32}\label{namespacenntrainer_a5ea4a3cf0ce9133d56f8927e4d2d6c32}} 
bool {\bfseries istrequal} (const std\+::string \&a, const std\+::string \&b)
\item 
\mbox{\Hypertarget{namespacenntrainer_a78ca9137bc36e4c6501712f75fc34030}\label{namespacenntrainer_a78ca9137bc36e4c6501712f75fc34030}} 
char $\ast$ {\bfseries get\+Realpath} (const char $\ast$name, char $\ast$resolved)
\item 
\mbox{\Hypertarget{namespacenntrainer_afce004e50707e1417865ad660138cbd8}\label{namespacenntrainer_afce004e50707e1417865ad660138cbd8}} 
tm $\ast$ {\bfseries get\+Localtime} (tm $\ast$tp)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{namespacenntrainer_ac56e68f68ea95acd43ce84ef222e3913}\label{namespacenntrainer_ac56e68f68ea95acd43ce84ef222e3913}} 
std\+::mutex {\bfseries factory\+\_\+mutex}
\item 
\mbox{\Hypertarget{namespacenntrainer_a1709e60231ada08fc703cfff079c2bc4}\label{namespacenntrainer_a1709e60231ada08fc703cfff079c2bc4}} 
std\+::once\+\_\+flag {\bfseries global\+\_\+app\+\_\+context\+\_\+init\+\_\+flag}
\item 
{\footnotesize template$<$size\+\_\+t I = 0, typename V , typename... Ts$>$ }\\std\+::enable\+\_\+if$<$ I$<$ sizeof...(Ts), void $>$\+::type inline \mbox{\hyperlink{namespacenntrainer_adee2dd1c2fcdb8d0dd152a14600c9cba}{parse\+\_\+properties}}(V \&props, std\+::tuple$<$ Ts... $>$ \&tup) \{ std\+::string name=std\+::get$<$ I $>$tup);std\+::string prop=get\+Config(name);if(!prop.\+empty()) props.\+push\+\_\+back(name+\char`\"{}=\char`\"{}+prop);\mbox{\hyperlink{namespacenntrainer_adee2dd1c2fcdb8d0dd152a14600c9cba}{parse\+\_\+properties}}$<$ I+1 $>$props, tup);\}const std\+::vector$<$ std\+::string $>$ \mbox{\hyperlink{classnntrainer_1_1AppContext_a04e68fd85c56c6c926c44472a5561b3b}{App\+Context\+::get\+Properties}}(void) \{ std\+::vector$<$ std\+::string $>$ properties;auto props=std\+::tuple(\char`\"{}memory\+\_\+swap\char`\"{}, \char`\"{}memory\+\_\+swap\+\_\+path\char`\"{});parse\+\_\+properties(properties, props);return properties;\}int \mbox{\hyperlink{classnntrainer_1_1AppContext_afa231236e1ebf3e163d7befc630ee786}{App\+Context\+::register\+Layer}}(const std\+::string \&library\+\_\+path, const std\+::string \&base\+\_\+path) \{ const std\+::string full\+\_\+path=get\+Full\+Path(library\+\_\+path, base\+\_\+path);void $\ast$handle=dlopen(full\+\_\+path.\+c\+\_\+str(), R\+T\+L\+D\+\_\+\+L\+A\+ZY$\vert$R\+T\+L\+D\+\_\+\+L\+O\+C\+AL);const char $\ast$error\+\_\+msg=dlerror();$<$$<$ func\+\_\+tag$<$$<$ \char`\"{}open plugin failed, reason\+: \char`\"{}$<$$<$ error\+\_\+msg;nntrainer\+::\+Layer\+Pluggable $\ast$pluggable=reinterpret\+\_\+cast$<$ nntrainer\+::\+Layer\+Pluggable $\ast$ $>$ dlsym(handle, \char`\"{}ml\+\_\+train\+\_\+layer\+\_\+pluggable\char`\"{}));error\+\_\+msg=dlerror();auto close\+\_\+dl=\mbox{[}handle\mbox{]} \{ dlclose(handle);\};N\+N\+T\+R\+\_\+\+T\+H\+R\+O\+W\+\_\+\+I\+F\+\_\+\+C\+L\+E\+A\+N\+UP(error\+\_\+msg !=nullptr$\vert$$\vert$pluggable==nullptr, std\+::invalid\+\_\+argument, close\+\_\+dl)$<$$<$ func\+\_\+tag$<$$<$ \char`\"{}loading symbol failed, reason\+: \char`\"{}$<$$<$ error\+\_\+msg;auto layer=pluggable-\/$>$ \mbox{\hyperlink{namespacenntrainer_a771d7e0358e19bd9d648fbe1efc9fadf}{createfunc}} ()
\begin{DoxyCompactList}\small\item\em base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_a4503f2eb686fa0dfb175a3ac7da84d56}\label{namespacenntrainer_a4503f2eb686fa0dfb175a3ac7da84d56}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_a0908c0d4a1a3a6b5d597362b619b8814}\label{namespacenntrainer_a0908c0d4a1a3a6b5d597362b619b8814}} 
constexpr char {\bfseries U\+S\+E\+R\+\_\+\+D\+A\+TA} \mbox{[}$\,$\mbox{]} = \char`\"{}user\+\_\+data\char`\"{}
\item 
\mbox{\Hypertarget{namespacenntrainer_a74892cfb63370e39279e3c58d51a2178}\label{namespacenntrainer_a74892cfb63370e39279e3c58d51a2178}} 
constexpr static float {\bfseries N\+E\+G\+A\+T\+I\+V\+E\+\_\+\+S\+L\+O\+PE} = 0.\+01f
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_a542e5c87199a5988d03e7e162960d4bc}\label{namespacenntrainer_a542e5c87199a5988d03e7e162960d4bc}} 
static constexpr int {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
\mbox{\Hypertarget{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}\label{namespacenntrainer_ae465178065a4c1f1dfb69da091bf466e}} 
static constexpr size\+\_\+t {\bfseries S\+I\+N\+G\+L\+E\+\_\+\+I\+N\+O\+U\+T\+\_\+\+I\+DX} = 0
\item 
static auto {\bfseries rng}
\item 
\mbox{\Hypertarget{namespacenntrainer_a44952597e43588a84c38501d2f4573e6}\label{namespacenntrainer_a44952597e43588a84c38501d2f4573e6}} 
constexpr const unsigned int {\bfseries C\+O\+N\+V2\+D\+\_\+\+D\+IM} = 2
\item 
\mbox{\Hypertarget{namespacenntrainer_a6c87663e424b59ea1fe29575d241f396}\label{namespacenntrainer_a6c87663e424b59ea1fe29575d241f396}} 
constexpr const unsigned int {\bfseries P\+O\+O\+L\+I\+N\+G2\+D\+\_\+\+D\+IM} = 2
\item 
static auto {\bfseries rng}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
P\+R\+O\+F\+I\+LE 

\doxysubsection{Typedef Documentation}
\mbox{\Hypertarget{namespacenntrainer_acb044356c97403667b8eaf26179baf9c}\label{namespacenntrainer_acb044356c97403667b8eaf26179baf9c}} 
\index{nntrainer@{nntrainer}!VarGradSpec@{VarGradSpec}}
\index{VarGradSpec@{VarGradSpec}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{VarGradSpec}{VarGradSpec}}
{\footnotesize\ttfamily typedef std\+::tuple$<$Tensor\+Dim, Tensor\+::\+Initializer, bool, const std\+::string, \mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622d}{Tensor\+Lifespan}}$>$ \mbox{\hyperlink{namespacenntrainer_acb044356c97403667b8eaf26179baf9c}{nntrainer\+::\+Var\+Grad\+Spec}}}



Specification of the \mbox{\hyperlink{classnntrainer_1_1Var__Grad}{Var\+\_\+\+Grad}} (trainable tensor) as a tensor wrapper. 

The tuple values are dimension, initializer, need\+\_\+gradient property, the name, and lifespan of the \mbox{\hyperlink{classnntrainer_1_1Var__Grad}{Var\+\_\+\+Grad}} object. 

Definition at line 84 of file tensor\+\_\+wrap\+\_\+specs.\+h.

\mbox{\Hypertarget{namespacenntrainer_a486fa79107b2f54f85fd24a6e76a75dc}\label{namespacenntrainer_a486fa79107b2f54f85fd24a6e76a75dc}} 
\index{nntrainer@{nntrainer}!WeightSpec@{WeightSpec}}
\index{WeightSpec@{WeightSpec}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{WeightSpec}{WeightSpec}}
{\footnotesize\ttfamily typedef std\+::tuple$<$Tensor\+Dim, Tensor\+::\+Initializer, \mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58}{Weight\+Regularizer}}, float, float, float, bool, const std\+::string$>$ \mbox{\hyperlink{namespacenntrainer_a486fa79107b2f54f85fd24a6e76a75dc}{nntrainer\+::\+Weight\+Spec}}}



Specification of the \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} as a tensor wrapper. 

The tuple values are dimension, initializer, regularizer, regularizer\+\_\+constant, decay, clip gradient constant, need\+\_\+gradient property amd name of the tensor object. 

Definition at line 74 of file tensor\+\_\+wrap\+\_\+specs.\+h.



\doxysubsection{Enumeration Type Documentation}
\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210}} 
\index{nntrainer@{nntrainer}!ActivationType@{ActivationType}}
\index{ActivationType@{ActivationType}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{ActivationType}{ActivationType}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210}{nntrainer\+::\+Activation\+Type}}\hspace{0.3cm}{\ttfamily [strong]}}



Enumeration of activation function type. 

\begin{DoxyNote}{Note}
Upon changing this enum, Activation\+Type\+Info must be changed accordingly 
\end{DoxyNote}
\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_TANH@{ACT\_TANH}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_TANH@{ACT\_TANH}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a3dcec7789c3b51f06a177dda7c5fe350}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a3dcec7789c3b51f06a177dda7c5fe350}} 
A\+C\+T\+\_\+\+T\+A\+NH&tanh \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_SIGMOID@{ACT\_SIGMOID}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_SIGMOID@{ACT\_SIGMOID}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a7c1b1f51ad6e4d385248caf8a4d4d446}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a7c1b1f51ad6e4d385248caf8a4d4d446}} 
A\+C\+T\+\_\+\+S\+I\+G\+M\+O\+ID&sigmoid \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_RELU@{ACT\_RELU}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_RELU@{ACT\_RELU}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a8ec95b2ee85cd043e56193b6a04fcef3}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a8ec95b2ee85cd043e56193b6a04fcef3}} 
A\+C\+T\+\_\+\+R\+E\+LU&Re\+LU \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_SWISH@{ACT\_SWISH}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_SWISH@{ACT\_SWISH}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210aabd87a225cdb07cd03bd20573aa400e4}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210aabd87a225cdb07cd03bd20573aa400e4}} 
A\+C\+T\+\_\+\+S\+W\+I\+SH&Swish \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_SOFTMAX@{ACT\_SOFTMAX}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_SOFTMAX@{ACT\_SOFTMAX}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210ae9cd5118604618dcd2f53171727242cc}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210ae9cd5118604618dcd2f53171727242cc}} 
A\+C\+T\+\_\+\+S\+O\+F\+T\+M\+AX&softmax \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_LEAKY\_RELU@{ACT\_LEAKY\_RELU}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_LEAKY\_RELU@{ACT\_LEAKY\_RELU}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210afc8e2c2b20b653d7abbefe5c1322b82f}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210afc8e2c2b20b653d7abbefe5c1322b82f}} 
A\+C\+T\+\_\+\+L\+E\+A\+K\+Y\+\_\+\+R\+E\+LU&Leaky Re\+LU \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_NONE@{ACT\_NONE}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_NONE@{ACT\_NONE}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a3ae40c82ecfee954b2b6c49d7f703b74}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a3ae40c82ecfee954b2b6c49d7f703b74}} 
A\+C\+T\+\_\+\+N\+O\+NE&no op \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ACT\_UNKNOWN@{ACT\_UNKNOWN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ACT\_UNKNOWN@{ACT\_UNKNOWN}}}\mbox{\Hypertarget{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a668b78c00c329a286df604b8d351b90e}\label{namespacenntrainer_af6fe83a41736854a9c83e880f34f8210a668b78c00c329a286df604b8d351b90e}} 
A\+C\+T\+\_\+\+U\+N\+K\+N\+O\+WN&unknown \\
\hline

\end{DoxyEnumFields}


Definition at line 32 of file common\+\_\+properties.\+h.

\mbox{\Hypertarget{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}\label{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}} 
\index{nntrainer@{nntrainer}!AttentionParams@{AttentionParams}}
\index{AttentionParams@{AttentionParams}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{AttentionParams}{AttentionParams}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}{nntrainer\+::\+Attention\+Params}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{value@{value}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!value@{value}}}\mbox{\Hypertarget{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}\label{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}} 
value&\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000079}{Todo}}]make this property \end{DoxyRefDesc}
\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{attention\_weight@{attention\_weight}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!attention\_weight@{attention\_weight}}}\mbox{\Hypertarget{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebda361a60eafdd8e3874fb871dedf20135e}\label{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebda361a60eafdd8e3874fb871dedf20135e}} 
attention\+\_\+weight&intended comment for later use of attention\+\_\+mask \\
\hline

\end{DoxyEnumFields}


Definition at line 29 of file attention\+\_\+layer.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}\label{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}} 
\index{nntrainer@{nntrainer}!AttentionParams@{AttentionParams}}
\index{AttentionParams@{AttentionParams}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{AttentionParams}{AttentionParams}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebd}{nntrainer\+::\+Attention\+Params}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{value@{value}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!value@{value}}}\mbox{\Hypertarget{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}\label{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}} 
value&\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000079}{Todo}}]make this property \end{DoxyRefDesc}
\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{attention\_weight@{attention\_weight}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!attention\_weight@{attention\_weight}}}\mbox{\Hypertarget{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebda361a60eafdd8e3874fb871dedf20135e}\label{namespacenntrainer_a1b8fc8b5c9c2f9a1fd05d5af3ccebebda361a60eafdd8e3874fb871dedf20135e}} 
attention\+\_\+weight&intended comment for later use of attention\+\_\+mask \\
\hline

\end{DoxyEnumFields}


Definition at line 48 of file multi\+\_\+head\+\_\+attention\+\_\+layer.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78}} 
\index{nntrainer@{nntrainer}!CachePolicy@{CachePolicy}}
\index{CachePolicy@{CachePolicy}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{CachePolicy}{CachePolicy}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_aa82a5a0874fed058056879c555555d78}{nntrainer\+::\+Cache\+Policy}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{WRITE\_BACK@{WRITE\_BACK}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!WRITE\_BACK@{WRITE\_BACK}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78a3171c37231f1cb2437bd8cc0d3b502ac}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78a3171c37231f1cb2437bd8cc0d3b502ac}} 
W\+R\+I\+T\+E\+\_\+\+B\+A\+CK&invalidate will write to device \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NO\_WRITE\_BACK@{NO\_WRITE\_BACK}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!NO\_WRITE\_BACK@{NO\_WRITE\_BACK}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78a46532de34f9d0ffab044b547f659c7dd}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78a46532de34f9d0ffab044b547f659c7dd}} 
N\+O\+\_\+\+W\+R\+I\+T\+E\+\_\+\+B\+A\+CK&invalidate will not write to device \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{READ\_CONSIST@{READ\_CONSIST}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!READ\_CONSIST@{READ\_CONSIST}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78a83ce2bfb860bdb8a0b5d73673137a938}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78a83ce2bfb860bdb8a0b5d73673137a938}} 
R\+E\+A\+D\+\_\+\+C\+O\+N\+S\+I\+ST&validate will read from device \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NO\_READ\_CONSIST@{NO\_READ\_CONSIST}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!NO\_READ\_CONSIST@{NO\_READ\_CONSIST}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78a98236694e743664e4c90eddf1a937bd6}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78a98236694e743664e4c90eddf1a937bd6}} 
N\+O\+\_\+\+R\+E\+A\+D\+\_\+\+C\+O\+N\+S\+I\+ST&validate will not read from device \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ALWAYS\_SYNCED@{ALWAYS\_SYNCED}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ALWAYS\_SYNCED@{ALWAYS\_SYNCED}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78a5e8591d5727269464e9004aa77336de6}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78a5e8591d5727269464e9004aa77336de6}} 
A\+L\+W\+A\+Y\+S\+\_\+\+S\+Y\+N\+C\+ED&Always synchronized with device \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{TEMPORAL@{TEMPORAL}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!TEMPORAL@{TEMPORAL}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78a1b236e361853e16fd6718d67efafdd74}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78a1b236e361853e16fd6718d67efafdd74}} 
T\+E\+M\+P\+O\+R\+AL&Will not be synchronized with device \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{FIRST\_LAST\_SKIP@{FIRST\_LAST\_SKIP}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!FIRST\_LAST\_SKIP@{FIRST\_LAST\_SKIP}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78af118f54876084ada34d27054fbff540a}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78af118f54876084ada34d27054fbff540a}} 
F\+I\+R\+S\+T\+\_\+\+L\+A\+S\+T\+\_\+\+S\+K\+IP&Will skip first read and last write \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ITERATION\_CONSIST@{ITERATION\_CONSIST}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ITERATION\_CONSIST@{ITERATION\_CONSIST}}}\mbox{\Hypertarget{namespacenntrainer_aa82a5a0874fed058056879c555555d78a68704fb17232151a4b10b4e22ab7f0ff}\label{namespacenntrainer_aa82a5a0874fed058056879c555555d78a68704fb17232151a4b10b4e22ab7f0ff}} 
I\+T\+E\+R\+A\+T\+I\+O\+N\+\_\+\+C\+O\+N\+S\+I\+ST&Will skip first read and last write. other behaviors will be same as A\+L\+W\+A\+Y\+S\+\_\+\+S\+Y\+N\+C\+ED \\
\hline

\end{DoxyEnumFields}


Definition at line 25 of file cache\+\_\+elem.\+h.

\mbox{\Hypertarget{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12a}\label{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12a}} 
\index{nntrainer@{nntrainer}!ExecutionMode@{ExecutionMode}}
\index{ExecutionMode@{ExecutionMode}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{ExecutionMode}{ExecutionMode}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12a}{nntrainer\+::\+Execution\+Mode}}\hspace{0.3cm}{\ttfamily [strong]}}



class telling the execution mode of the model/operation 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{INFERENCE@{INFERENCE}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!INFERENCE@{INFERENCE}}}\mbox{\Hypertarget{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12aaaaae44d7a005067077df5b8c50e15357}\label{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12aaaaae44d7a005067077df5b8c50e15357}} 
I\+N\+F\+E\+R\+E\+N\+CE&Training mode, label is necessary \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{VALIDATE@{VALIDATE}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!VALIDATE@{VALIDATE}}}\mbox{\Hypertarget{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12aaca9ed3118a19ef7e8ebfbd25598dd2f3}\label{namespacenntrainer_aa198f317dacfcf7b69eabc97be6bd12aaca9ed3118a19ef7e8ebfbd25598dd2f3}} 
V\+A\+L\+I\+D\+A\+TE&Inference mode, label is optional Validate mode, label is necessary \\
\hline

\end{DoxyEnumFields}


Definition at line 22 of file execution\+\_\+mode.\+h.

\mbox{\Hypertarget{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313}\label{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313}} 
\index{nntrainer@{nntrainer}!INOUT\_INDEX@{INOUT\_INDEX}}
\index{INOUT\_INDEX@{INOUT\_INDEX}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{INOUT\_INDEX}{INOUT\_INDEX}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313}{nntrainer\+::\+I\+N\+O\+U\+T\+\_\+\+I\+N\+D\+EX}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{QUERY@{QUERY}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!QUERY@{QUERY}}}\mbox{\Hypertarget{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313a183d3f4e03a9f6f5743d3ef96a4024b2}\label{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313a183d3f4e03a9f6f5743d3ef96a4024b2}} 
Q\+U\+E\+RY&input index \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{OUTPUT@{OUTPUT}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!OUTPUT@{OUTPUT}}}\mbox{\Hypertarget{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313a6ecceff0f738c97de873722a3648e644}\label{namespacenntrainer_a81330eea50f7e95d47d3c82783f0f313a6ecceff0f738c97de873722a3648e644}} 
O\+U\+T\+P\+UT&output index \\
\hline

\end{DoxyEnumFields}


Definition at line 37 of file multi\+\_\+head\+\_\+attention\+\_\+layer.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317e}\label{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317e}} 
\index{nntrainer@{nntrainer}!InPlace@{InPlace}}
\index{InPlace@{InPlace}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{InPlace}{InPlace}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317e}{nntrainer\+::\+In\+Place}}\hspace{0.3cm}{\ttfamily [strong]}}



Enum class for the various types of inplace modes supported by layer. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{NONE@{NONE}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!NONE@{NONE}}}\mbox{\Hypertarget{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317eab50339a10e1de285ac99d4c3990b8693}\label{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317eab50339a10e1de285ac99d4c3990b8693}} 
N\+O\+NE&layer is not inplace \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RESTRICTING@{RESTRICTING}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!RESTRICTING@{RESTRICTING}}}\mbox{\Hypertarget{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317ea5e6e2c7f119226111e052ea81d59effe}\label{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317ea5e6e2c7f119226111e052ea81d59effe}} 
R\+E\+S\+T\+R\+I\+C\+T\+I\+NG&layer is in-\/place and does place restriction on layers ahead of it to be in-\/place \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NON\_RESTRICTING@{NON\_RESTRICTING}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!NON\_RESTRICTING@{NON\_RESTRICTING}}}\mbox{\Hypertarget{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317eae74dc5e1f6b6b101e21fd764685eba5b}\label{namespacenntrainer_ac07577ef715522b25f33e1ae1c2f317eae74dc5e1f6b6b101e21fd764685eba5b}} 
N\+O\+N\+\_\+\+R\+E\+S\+T\+R\+I\+C\+T\+I\+NG&layer is in-\/place and does N\+OT place restriction on the layers ahead of it to be in-\/place \\
\hline

\end{DoxyEnumFields}


Definition at line 59 of file layer\+\_\+node.\+h.

\mbox{\Hypertarget{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8cc}\label{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8cc}} 
\index{nntrainer@{nntrainer}!MoLAttentionParams@{MoLAttentionParams}}
\index{MoLAttentionParams@{MoLAttentionParams}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{MoLAttentionParams}{MoLAttentionParams}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8cc}{nntrainer\+::\+Mo\+L\+Attention\+Params}}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{value@{value}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!value@{value}}}\mbox{\Hypertarget{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}\label{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}} 
value&\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000079}{Todo}}]make this property \end{DoxyRefDesc}
\\
\hline

\end{DoxyEnumFields}


Definition at line 36 of file mol\+\_\+attention\+\_\+layer.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8}\label{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8}} 
\index{nntrainer@{nntrainer}!PrintOption@{PrintOption}}
\index{PrintOption@{PrintOption}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{PrintOption}{PrintOption}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8}{nntrainer\+::\+Print\+Option}}}



Print Options when printing layer info. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{PRINT\_INST\_INFO@{PRINT\_INST\_INFO}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!PRINT\_INST\_INFO@{PRINT\_INST\_INFO}}}\mbox{\Hypertarget{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8aa99bc1769d11098116640aea97285b5a}\label{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8aa99bc1769d11098116640aea97285b5a}} 
P\+R\+I\+N\+T\+\_\+\+I\+N\+S\+T\+\_\+\+I\+N\+FO&Option to print type \& instance address info \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRINT\_SHAPE\_INFO@{PRINT\_SHAPE\_INFO}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!PRINT\_SHAPE\_INFO@{PRINT\_SHAPE\_INFO}}}\mbox{\Hypertarget{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a262425a87a1d7bc38964b0c230782c7e}\label{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a262425a87a1d7bc38964b0c230782c7e}} 
P\+R\+I\+N\+T\+\_\+\+S\+H\+A\+P\+E\+\_\+\+I\+N\+FO&Option to print shape information, invalid before initiation \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRINT\_PROP@{PRINT\_PROP}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!PRINT\_PROP@{PRINT\_PROP}}}\mbox{\Hypertarget{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8ae8e453fa1fa0166f2cbb556c0b2fe499}\label{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8ae8e453fa1fa0166f2cbb556c0b2fe499}} 
P\+R\+I\+N\+T\+\_\+\+P\+R\+OP&Option to print properties \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRINT\_PROP\_META@{PRINT\_PROP\_META}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!PRINT\_PROP\_META@{PRINT\_PROP\_META}}}\mbox{\Hypertarget{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a4229fd85c43a78fc58f0e0cb80086844}\label{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a4229fd85c43a78fc58f0e0cb80086844}} 
P\+R\+I\+N\+T\+\_\+\+P\+R\+O\+P\+\_\+\+M\+E\+TA&Option to print properties that describe meta info e.\+g) layer activation type for non-\/activation layer. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRINT\_WEIGHTS@{PRINT\_WEIGHTS}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!PRINT\_WEIGHTS@{PRINT\_WEIGHTS}}}\mbox{\Hypertarget{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8ab381d5cb0fde9ee52c21732bb448ceb5}\label{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8ab381d5cb0fde9ee52c21732bb448ceb5}} 
P\+R\+I\+N\+T\+\_\+\+W\+E\+I\+G\+H\+TS&Option to print weights \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{PRINT\_METRIC@{PRINT\_METRIC}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!PRINT\_METRIC@{PRINT\_METRIC}}}\mbox{\Hypertarget{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a1e3da167f223b30edd207dffd9f0c74f}\label{namespacenntrainer_ad0c04a790a823410f9c7ac6b7abaffe8a1e3da167f223b30edd207dffd9f0c74f}} 
P\+R\+I\+N\+T\+\_\+\+M\+E\+T\+R\+IC&Option to print metrics (currently loss only) \\
\hline

\end{DoxyEnumFields}


Definition at line 700 of file layer\+\_\+node.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622d}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622d}} 
\index{nntrainer@{nntrainer}!TensorLifespan@{TensorLifespan}}
\index{TensorLifespan@{TensorLifespan}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{TensorLifespan}{TensorLifespan}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622d}{nntrainer\+::\+Tensor\+Lifespan}}\hspace{0.3cm}{\ttfamily [strong]}}



define the lifespan of the given tensor to reduce peak memory 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{UNMANAGED@{UNMANAGED}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!UNMANAGED@{UNMANAGED}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da9adcd06a53fb18c2e2c0a28d5bb5f3ea}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da9adcd06a53fb18c2e2c0a28d5bb5f3ea}} 
U\+N\+M\+A\+N\+A\+G\+ED&tensor with no lifespan, will not be allocated \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{FORWARD\_FUNC\_LIFESPAN@{FORWARD\_FUNC\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!FORWARD\_FUNC\_LIFESPAN@{FORWARD\_FUNC\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da6f193735a1915532364db08ff2406a34}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da6f193735a1915532364db08ff2406a34}} 
F\+O\+R\+W\+A\+R\+D\+\_\+\+F\+U\+N\+C\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must not be reset before during the forward function call, eg. temporary tensors needed during forward operations \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{CALC\_DERIV\_LIFESPAN@{CALC\_DERIV\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!CALC\_DERIV\_LIFESPAN@{CALC\_DERIV\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da7786c03b41e40c113e3bb577568908b1}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da7786c03b41e40c113e3bb577568908b1}} 
C\+A\+L\+C\+\_\+\+D\+E\+R\+I\+V\+\_\+\+L\+I\+F\+E\+S\+P\+AN&must be valid during calc\+Derivative() \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{CALC\_GRAD\_LIFESPAN@{CALC\_GRAD\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!CALC\_GRAD\_LIFESPAN@{CALC\_GRAD\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dad313a48c983c59591aa678a5d88d8de3}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dad313a48c983c59591aa678a5d88d8de3}} 
C\+A\+L\+C\+\_\+\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must be valid during calc\+Gradient() \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{CALC\_AGRAD\_LIFESPAN@{CALC\_AGRAD\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!CALC\_AGRAD\_LIFESPAN@{CALC\_AGRAD\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daa6fd61589981ed03bc38459de3ffebea}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daa6fd61589981ed03bc38459de3ffebea}} 
C\+A\+L\+C\+\_\+\+A\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must be valid during calc\+Gradient() \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{CALC\_GRAD\_DERIV\_LIFESPAN@{CALC\_GRAD\_DERIV\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!CALC\_GRAD\_DERIV\_LIFESPAN@{CALC\_GRAD\_DERIV\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da3a00727a27a5b578218b85d2f7085f95}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da3a00727a27a5b578218b85d2f7085f95}} 
C\+A\+L\+C\+\_\+\+G\+R\+A\+D\+\_\+\+D\+E\+R\+I\+V\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must not be reset before during the calc\+\_\+grad and clac\+\_\+deriv call, eg. temporary tensors needed during backward operations \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{CALC\_GRAD\_DERIV\_AGRAD\_LIFESPAN@{CALC\_GRAD\_DERIV\_AGRAD\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!CALC\_GRAD\_DERIV\_AGRAD\_LIFESPAN@{CALC\_GRAD\_DERIV\_AGRAD\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dae2ae557af6d708d49d55b61d82592ae3}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dae2ae557af6d708d49d55b61d82592ae3}} 
C\+A\+L\+C\+\_\+\+G\+R\+A\+D\+\_\+\+D\+E\+R\+I\+V\+\_\+\+A\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must not be reset before during the calc\+\_\+grad, clac\+\_\+deriv and apply gradient call, eg. temporary tensors needed during backward operations \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{FORWARD\_GRAD\_LIFESPAN@{FORWARD\_GRAD\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!FORWARD\_GRAD\_LIFESPAN@{FORWARD\_GRAD\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da2f42cb582b77d5254dc373069949e3a6}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da2f42cb582b77d5254dc373069949e3a6}} 
F\+O\+R\+W\+A\+R\+D\+\_\+\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN&Forward + grad lifespan \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{FORWARD\_GRAD\_AGRAD\_LIFESPAN@{FORWARD\_GRAD\_AGRAD\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!FORWARD\_GRAD\_AGRAD\_LIFESPAN@{FORWARD\_GRAD\_AGRAD\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dad8783650f9b5c6b7d8fa30f5c5660969}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622dad8783650f9b5c6b7d8fa30f5c5660969}} 
F\+O\+R\+W\+A\+R\+D\+\_\+\+G\+R\+A\+D\+\_\+\+A\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN&Forward + grad + apply gradient lifespan \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{FORWARD\_DERIV\_LIFESPAN@{FORWARD\_DERIV\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!FORWARD\_DERIV\_LIFESPAN@{FORWARD\_DERIV\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da7ad41d23392658992665c714c17897be}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da7ad41d23392658992665c714c17897be}} 
F\+O\+R\+W\+A\+R\+D\+\_\+\+D\+E\+R\+I\+V\+\_\+\+L\+I\+F\+E\+S\+P\+AN&Forward + deriv lifespan \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{BACKWARD\_FUNC\_LIFESPAN@{BACKWARD\_FUNC\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!BACKWARD\_FUNC\_LIFESPAN@{BACKWARD\_FUNC\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da1706ba50c10e909d84876b75fac7294f}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da1706ba50c10e909d84876b75fac7294f}} 
B\+A\+C\+K\+W\+A\+R\+D\+\_\+\+F\+U\+N\+C\+\_\+\+L\+I\+F\+E\+S\+P\+AN&Alias of C\+A\+L\+C\+\_\+\+G\+R\+A\+D\+\_\+\+D\+E\+R\+I\+V\+\_\+\+A\+G\+R\+A\+D\+\_\+\+L\+I\+F\+E\+S\+P\+AN \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{ITERATION\_LIFESPAN@{ITERATION\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!ITERATION\_LIFESPAN@{ITERATION\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da3f7a0f4f9399f0d9ec0d8d26ec59e9ec}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da3f7a0f4f9399f0d9ec0d8d26ec59e9ec}} 
I\+T\+E\+R\+A\+T\+I\+O\+N\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must not be reset until the owning layer finishes its execution in the current iteration, eg. hidden memory/cells of R\+NN \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{EPOCH\_LIFESPAN@{EPOCH\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!EPOCH\_LIFESPAN@{EPOCH\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daca0c2bc976ced58a12e3386494e15d71}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daca0c2bc976ced58a12e3386494e15d71}} 
E\+P\+O\+C\+H\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must be valid before the epoch ends \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{MAX\_LIFESPAN@{MAX\_LIFESPAN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!MAX\_LIFESPAN@{MAX\_LIFESPAN}}}\mbox{\Hypertarget{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daa9e0b1de0ff7353f28b66401c4d303bc}\label{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622daa9e0b1de0ff7353f28b66401c4d303bc}} 
M\+A\+X\+\_\+\+L\+I\+F\+E\+S\+P\+AN&tensor must not be reset until the end of the model execution, eg. layer weights \\
\hline

\end{DoxyEnumFields}


Definition at line 38 of file tensor\+\_\+wrap\+\_\+specs.\+h.

\mbox{\Hypertarget{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58}\label{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58}} 
\index{nntrainer@{nntrainer}!WeightRegularizer@{WeightRegularizer}}
\index{WeightRegularizer@{WeightRegularizer}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{WeightRegularizer}{WeightRegularizer}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58}{nntrainer\+::\+Weight\+Regularizer}}\hspace{0.3cm}{\ttfamily [strong]}}



Enumeration of \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} Regularizer. 

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000138}{Todo}}]Update to Tensor\+Regularizer \end{DoxyRefDesc}
\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{L2NORM@{L2NORM}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!L2NORM@{L2NORM}}}\mbox{\Hypertarget{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58ad927ac799e8b24f80fc80d89b2eb7131}\label{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58ad927ac799e8b24f80fc80d89b2eb7131}} 
L2\+N\+O\+RM&L2 norm regularization \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{NONE@{NONE}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!NONE@{NONE}}}\mbox{\Hypertarget{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58ab50339a10e1de285ac99d4c3990b8693}\label{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58ab50339a10e1de285ac99d4c3990b8693}} 
N\+O\+NE&no regularization \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{UNKNOWN@{UNKNOWN}!nntrainer@{nntrainer}}\index{nntrainer@{nntrainer}!UNKNOWN@{UNKNOWN}}}\mbox{\Hypertarget{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58a696b031073e74bf2cb98e5ef201d4aa3}\label{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58a696b031073e74bf2cb98e5ef201d4aa3}} 
U\+N\+K\+N\+O\+WN&Unknown \\
\hline

\end{DoxyEnumFields}


Definition at line 28 of file tensor\+\_\+wrap\+\_\+specs.\+h.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{namespacenntrainer_afc6e105048ea4ceca0fb54eba1f60115}\label{namespacenntrainer_afc6e105048ea4ceca0fb54eba1f60115}} 
\index{nntrainer@{nntrainer}!add\_default\_object@{add\_default\_object}}
\index{add\_default\_object@{add\_default\_object}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{add\_default\_object()}{add\_default\_object()}}
{\footnotesize\ttfamily static void nntrainer\+::add\+\_\+default\+\_\+object (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classnntrainer_1_1AppContext}{App\+Context}} \&}]{ac }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

\begin{DoxyNote}{Note}
all layers should be added to the app\+\_\+context to gaurantee that create\+Layer/create\+Optimizer class is created
\end{DoxyNote}
proprocess layers

register losses

Definition at line 223 of file app\+\_\+context.\+cpp.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_afc6e105048ea4ceca0fb54eba1f60115_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacenntrainer_a6fe37026a34e6f748a7f591fb78f99a1}\label{namespacenntrainer_a6fe37026a34e6f748a7f591fb78f99a1}} 
\index{nntrainer@{nntrainer}!AppContext::registerFactory$<$ ml::train::LearningRateScheduler $>$@{AppContext::registerFactory$<$ ml::train::LearningRateScheduler $>$}}
\index{AppContext::registerFactory$<$ ml::train::LearningRateScheduler $>$@{AppContext::registerFactory$<$ ml::train::LearningRateScheduler $>$}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{AppContext::registerFactory$<$ ml::train::LearningRateScheduler $>$()}{AppContext::registerFactory< ml::train::LearningRateScheduler >()}}
{\footnotesize\ttfamily const template int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{nntrainer\+::\+App\+Context\+::register\+Factory}}$<$ ml\+::train\+::\+Learning\+Rate\+Scheduler $>$ (\begin{DoxyParamCaption}\item[{const Factory\+Type$<$ ml\+::train\+::\+Learning\+Rate\+Scheduler $>$}]{factory,  }\item[{const std\+::string \&}]{key,  }\item[{const int}]{int\+\_\+key }\end{DoxyParamCaption})}



int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} 

int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} \mbox{\Hypertarget{namespacenntrainer_a1312c36a2fc5d2413128dad2b0446717}\label{namespacenntrainer_a1312c36a2fc5d2413128dad2b0446717}} 
\index{nntrainer@{nntrainer}!AppContext::registerFactory$<$ nntrainer::Layer $>$@{AppContext::registerFactory$<$ nntrainer::Layer $>$}}
\index{AppContext::registerFactory$<$ nntrainer::Layer $>$@{AppContext::registerFactory$<$ nntrainer::Layer $>$}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{AppContext::registerFactory$<$ nntrainer::Layer $>$()}{AppContext::registerFactory< nntrainer::Layer >()}}
{\footnotesize\ttfamily const template int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{nntrainer\+::\+App\+Context\+::register\+Factory}}$<$ nntrainer\+::\+Layer $>$ (\begin{DoxyParamCaption}\item[{const Factory\+Type$<$ nntrainer\+::\+Layer $>$}]{factory,  }\item[{const std\+::string \&}]{key,  }\item[{const int}]{int\+\_\+key }\end{DoxyParamCaption})}



int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} 

int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} \mbox{\Hypertarget{namespacenntrainer_a2ce4ee428c91b5efea84166a8610927a}\label{namespacenntrainer_a2ce4ee428c91b5efea84166a8610927a}} 
\index{nntrainer@{nntrainer}!AppContext::registerFactory$<$ nntrainer::Optimizer $>$@{AppContext::registerFactory$<$ nntrainer::Optimizer $>$}}
\index{AppContext::registerFactory$<$ nntrainer::Optimizer $>$@{AppContext::registerFactory$<$ nntrainer::Optimizer $>$}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{AppContext::registerFactory$<$ nntrainer::Optimizer $>$()}{AppContext::registerFactory< nntrainer::Optimizer >()}}
{\footnotesize\ttfamily const template int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{nntrainer\+::\+App\+Context\+::register\+Factory}}$<$ nntrainer\+::\+Optimizer $>$ (\begin{DoxyParamCaption}\item[{const Factory\+Type$<$ nntrainer\+::\+Optimizer $>$}]{factory,  }\item[{const std\+::string \&}]{key,  }\item[{const int}]{int\+\_\+key }\end{DoxyParamCaption})}



int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} 

int \mbox{\hyperlink{classnntrainer_1_1AppContext_a31d3828733f9e3086754b456dbc9f90e}{App\+Context\+::register\+Factory}} \mbox{\Hypertarget{namespacenntrainer_a5251bf487ffdceb6a22a3ff5221000f4}\label{namespacenntrainer_a5251bf487ffdceb6a22a3ff5221000f4}} 
\index{nntrainer@{nntrainer}!buildTrasposeString@{buildTrasposeString}}
\index{buildTrasposeString@{buildTrasposeString}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{buildTrasposeString()}{buildTrasposeString()}}
{\footnotesize\ttfamily static std\+::string nntrainer\+::build\+Traspose\+String (\begin{DoxyParamCaption}\item[{const std\+::array$<$ \mbox{\hyperlink{classnntrainer_1_1props_1_1PermuteDims}{props\+::\+Permute\+Dims}}, 3 $>$ \&}]{arr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



build\+Transpose\+String based on array 

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000084}{Todo}}]deprecate this\end{DoxyRefDesc}



\begin{DoxyParams}{Parameters}
{\em arr} & array to make a representation \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
const std\+::string string to return 
\end{DoxyReturn}


Definition at line 40 of file permute\+\_\+layer.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a1b34f5386daad474be8c71c3314a8e3d}\label{namespacenntrainer_a1b34f5386daad474be8c71c3314a8e3d}} 
\index{nntrainer@{nntrainer}!computeSpace@{computeSpace}}
\index{computeSpace@{computeSpace}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{computeSpace()}{computeSpace()}}
{\footnotesize\ttfamily static size\+\_\+t nntrainer\+::compute\+Space (\begin{DoxyParamCaption}\item[{unsigned int}]{exec\+\_\+order,  }\item[{std\+::vector$<$ \mbox{\hyperlink{structnntrainer_1_1MemoryRequest}{Memory\+Request}} $\ast$ $>$ \&}]{sorted\+\_\+req,  }\item[{std\+::vector$<$ std\+::pair$<$ size\+\_\+t, size\+\_\+t $>$$>$ \&}]{vacant }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}

T\+O\+DO\+: try this

Definition at line 48 of file optimized\+\_\+v3\+\_\+planner.\+cpp.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_a1b34f5386daad474be8c71c3314a8e3d_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacenntrainer_a04be82378b46e79b499cceeeb2dd48d5}\label{namespacenntrainer_a04be82378b46e79b499cceeeb2dd48d5}} 
\index{nntrainer@{nntrainer}!createLayerNode@{createLayerNode}}
\index{createLayerNode@{createLayerNode}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{createLayerNode()}{createLayerNode()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ nntrainer\+::create\+Layer\+Node (\begin{DoxyParamCaption}\item[{const ml\+::train\+::\+Layer\+Type \&}]{type,  }\item[{const std\+::vector$<$ std\+::string $>$ \&}]{properties = {\ttfamily \{\}} }\end{DoxyParamCaption})}



\mbox{\hyperlink{classLayer}{Layer}} factory creator with constructor. 

\mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} creator with constructor.

@params\mbox{[}in\mbox{]} type Type of the layer to be constructed @params\mbox{[}in\mbox{]} properties Properties of the layer 

Definition at line 131 of file layer\+\_\+node.\+cpp.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_a04be82378b46e79b499cceeeb2dd48d5_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_a04be82378b46e79b499cceeeb2dd48d5_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacenntrainer_a51a272801b52c00849e47687e1e05df2}\label{namespacenntrainer_a51a272801b52c00849e47687e1e05df2}} 
\index{nntrainer@{nntrainer}!createLayerNode@{createLayerNode}}
\index{createLayerNode@{createLayerNode}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{createLayerNode()}{createLayerNode()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ nntrainer\+::create\+Layer\+Node (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{type,  }\item[{const std\+::vector$<$ std\+::string $>$ \&}]{properties = {\ttfamily \{\}} }\end{DoxyParamCaption})}



\mbox{\hyperlink{classLayer}{Layer}} factory creator with constructor. 

\mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} creator with constructor.

@params\mbox{[}in\mbox{]} type Type of the layer to be constructed @params\mbox{[}in\mbox{]} properties Properties of the layer 

Definition at line 141 of file layer\+\_\+node.\+cpp.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_a51a272801b52c00849e47687e1e05df2_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacenntrainer_ab80b39d88a067bf48ad3d990eb973827}\label{namespacenntrainer_ab80b39d88a067bf48ad3d990eb973827}} 
\index{nntrainer@{nntrainer}!createLayerNode@{createLayerNode}}
\index{createLayerNode@{createLayerNode}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{createLayerNode()}{createLayerNode()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily std\+::unique\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ nntrainer\+::create\+Layer\+Node (\begin{DoxyParamCaption}\item[{std\+::unique\+\_\+ptr$<$ nntrainer\+::\+Layer $>$ \&\&}]{layer,  }\item[{const std\+::vector$<$ std\+::string $>$ \&}]{properties }\end{DoxyParamCaption})}



\mbox{\hyperlink{classLayer}{Layer}} factory creator with constructor. 

\mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} creator with constructor.

@params\mbox{[}in\mbox{]} layer Already constructed layer @params\mbox{[}in\mbox{]} properties Properties of the layer 

Definition at line 151 of file layer\+\_\+node.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a145a6299e379ef59c6470344684a6a94}\label{namespacenntrainer_a145a6299e379ef59c6470344684a6a94}} 
\index{nntrainer@{nntrainer}!fini\_global\_context\_nntrainer@{fini\_global\_context\_nntrainer}}
\index{fini\_global\_context\_nntrainer@{fini\_global\_context\_nntrainer}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{fini\_global\_context\_nntrainer()}{fini\_global\_context\_nntrainer()}}
{\footnotesize\ttfamily static void nntrainer\+::fini\+\_\+global\+\_\+context\+\_\+nntrainer (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



finialize global context 



Definition at line 219 of file app\+\_\+context.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a694f7ac37596bdfbbd332544d264ba6e}\label{namespacenntrainer_a694f7ac37596bdfbbd332544d264ba6e}} 
\index{nntrainer@{nntrainer}!grucell\_calcGradient@{grucell\_calcGradient}}
\index{grucell\_calcGradient@{grucell\_calcGradient}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{grucell\_calcGradient()}{grucell\_calcGradient()}}
{\footnotesize\ttfamily static void nntrainer\+::grucell\+\_\+calc\+Gradient (\begin{DoxyParamCaption}\item[{const unsigned int}]{unit,  }\item[{const unsigned int}]{batch\+\_\+size,  }\item[{const bool}]{disable\+\_\+bias,  }\item[{const bool}]{integrate\+\_\+bias,  }\item[{const bool}]{reset\+\_\+after,  }\item[{Acti\+Func \&}]{acti\+\_\+func,  }\item[{Acti\+Func \&}]{recurrent\+\_\+acti\+\_\+func,  }\item[{const Tensor \&}]{input,  }\item[{const Tensor \&}]{prev\+\_\+hidden\+\_\+state,  }\item[{Tensor \&}]{d\+\_\+prev\+\_\+hidden\+\_\+state,  }\item[{const Tensor \&}]{d\+\_\+hidden\+\_\+state,  }\item[{Tensor \&}]{d\+\_\+weight\+\_\+ih,  }\item[{const Tensor \&}]{weight\+\_\+hh,  }\item[{Tensor \&}]{d\+\_\+weight\+\_\+hh,  }\item[{Tensor \&}]{d\+\_\+bias\+\_\+h,  }\item[{Tensor \&}]{d\+\_\+bias\+\_\+ih,  }\item[{const Tensor \&}]{bias\+\_\+hh,  }\item[{Tensor \&}]{d\+\_\+bias\+\_\+hh,  }\item[{const Tensor \&}]{zrg,  }\item[{Tensor \&}]{d\+\_\+zrg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



gru calc\+Gradient 



Definition at line 133 of file grucell.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a824cf9c8b75f1c4d7961862a4b78ca5b}\label{namespacenntrainer_a824cf9c8b75f1c4d7961862a4b78ca5b}} 
\index{nntrainer@{nntrainer}!grucell\_forwarding@{grucell\_forwarding}}
\index{grucell\_forwarding@{grucell\_forwarding}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{grucell\_forwarding()}{grucell\_forwarding()}}
{\footnotesize\ttfamily static void nntrainer\+::grucell\+\_\+forwarding (\begin{DoxyParamCaption}\item[{const unsigned int}]{unit,  }\item[{const unsigned int}]{batch\+\_\+size,  }\item[{const bool}]{disable\+\_\+bias,  }\item[{const bool}]{integrate\+\_\+bias,  }\item[{const bool}]{reset\+\_\+after,  }\item[{Acti\+Func \&}]{acti\+\_\+func,  }\item[{Acti\+Func \&}]{recurrent\+\_\+acti\+\_\+func,  }\item[{const Tensor \&}]{input,  }\item[{const Tensor \&}]{prev\+\_\+hidden\+\_\+state,  }\item[{Tensor \&}]{hidden\+\_\+state,  }\item[{const Tensor \&}]{weight\+\_\+ih,  }\item[{const Tensor \&}]{weight\+\_\+hh,  }\item[{const Tensor \&}]{bias\+\_\+h,  }\item[{const Tensor \&}]{bias\+\_\+ih,  }\item[{const Tensor \&}]{bias\+\_\+hh,  }\item[{Tensor \&}]{zrg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



gru forwarding 



Definition at line 46 of file grucell.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_aa8da200ba973a6a00769c3872a760f6c}\label{namespacenntrainer_aa8da200ba973a6a00769c3872a760f6c}} 
\index{nntrainer@{nntrainer}!iterate\_prop@{iterate\_prop}}
\index{iterate\_prop@{iterate\_prop}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{iterate\_prop()}{iterate\_prop()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily template$<$size\+\_\+t I = 0, typename Callable , typename... Ts$>$ \\
std\+::enable\+\_\+if$<$I == sizeof...(Ts), void$>$\+::type nntrainer\+::iterate\+\_\+prop (\begin{DoxyParamCaption}\item[{Callable \&\&}]{c,  }\item[{const std\+::tuple$<$ Ts... $>$ \&}]{tup }\end{DoxyParamCaption})}



base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple 


\begin{DoxyTemplParams}{Template Parameters}
{\em I} & size of tuple(automated) \\
\hline
{\em Callable} & generic lambda to be called during iteration \\
\hline
{\em Ts} & types from tuple \\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em c} & callable generic lambda \\
\hline
{\em tup} & tuple to be iterated \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 353 of file node\+\_\+exporter.\+h.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_aa8da200ba973a6a00769c3872a760f6c_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacenntrainer_a6633c5ce26cef45d361f1c05177b2548}\label{namespacenntrainer_a6633c5ce26cef45d361f1c05177b2548}} 
\index{nntrainer@{nntrainer}!iterate\_prop@{iterate\_prop}}
\index{iterate\_prop@{iterate\_prop}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{iterate\_prop()}{iterate\_prop()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily template$<$size\+\_\+t I = 0, typename Callable , typename... Ts$>$ \\
std\+::enable\+\_\+if$<$(I $<$ sizeof...(Ts)), void$>$\+::type nntrainer\+::iterate\+\_\+prop (\begin{DoxyParamCaption}\item[{Callable \&\&}]{c,  }\item[{const std\+::tuple$<$ Ts... $>$ \&}]{tup }\end{DoxyParamCaption})}



base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple 


\begin{DoxyTemplParams}{Template Parameters}
{\em I} & size of tuple(automated) \\
\hline
{\em Callable} & generic lambda to be called during iteration \\
\hline
{\em Ts} & types from tuple \\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em c} & callable generic lambda \\
\hline
{\em tup} & tuple to be iterated \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
not used 
\end{DoxyReturn}


Definition at line 369 of file node\+\_\+exporter.\+h.

\mbox{\Hypertarget{namespacenntrainer_aebbf3d0dd40d8df3afba74234bb9bff9}\label{namespacenntrainer_aebbf3d0dd40d8df3afba74234bb9bff9}} 
\index{nntrainer@{nntrainer}!iterate\_prop@{iterate\_prop}}
\index{iterate\_prop@{iterate\_prop}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{iterate\_prop()}{iterate\_prop()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily template$<$size\+\_\+t I = 0, typename Callable , typename... Ts$>$ \\
std\+::enable\+\_\+if$<$(I $<$ sizeof...(Ts)), void$>$\+::type nntrainer\+::iterate\+\_\+prop (\begin{DoxyParamCaption}\item[{Callable \&\&}]{c,  }\item[{std\+::tuple$<$ Ts... $>$ \&}]{tup }\end{DoxyParamCaption})}



$<$size\+\_\+t I = 0, typename Callable, typename... Ts$>$ 

$<$size\+\_\+t I = 0, typename Callable, typename... Ts$>$ typename std\+::enable\+\_\+if$<$(I $<$ sizeof...(Ts)), void$>$\+::type iterate\+\_\+prop(Callable \&\&c, const std\+::tuple$<$\+Ts...$>$ \&tup) 

Definition at line 382 of file node\+\_\+exporter.\+h.

\mbox{\Hypertarget{namespacenntrainer_a1664dceadead6470231703d3ba0f019f}\label{namespacenntrainer_a1664dceadead6470231703d3ba0f019f}} 
\index{nntrainer@{nntrainer}!loadProperties@{loadProperties}}
\index{loadProperties@{loadProperties}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{loadProperties()}{loadProperties()}}
{\footnotesize\ttfamily template$<$typename Tuple $>$ \\
std\+::vector$<$std\+::string$>$ nntrainer\+::load\+Properties (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::string $>$ \&}]{string\+\_\+vector,  }\item[{Tuple \&\&}]{props }\end{DoxyParamCaption})}



load property from the api formatted string (\{\char`\"{}key=value\char`\"{}, \char`\"{}key1=value1\char`\"{}\}) 


\begin{DoxyTemplParams}{Template Parameters}
{\em Tuple} & tuple type \\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}[1]{Parameters}
 & {\em string\+\_\+vector} & api formatted string; \\
\hline
\mbox{\texttt{ out}}  & {\em props} & props to be iterated \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
std\+::vector$<$std\+::string$>$ vector of string that is not used while setting the property 
\end{DoxyReturn}


Definition at line 400 of file node\+\_\+exporter.\+h.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_a1664dceadead6470231703d3ba0f019f_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacenntrainer_a43149824cfc05351a9be002f1765ceaa}\label{namespacenntrainer_a43149824cfc05351a9be002f1765ceaa}} 
\index{nntrainer@{nntrainer}!overlap@{overlap}}
\index{overlap@{overlap}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{overlap()}{overlap()}}
{\footnotesize\ttfamily template$<$typename T $>$ \\
static bool nntrainer\+::overlap (\begin{DoxyParamCaption}\item[{T}]{s1,  }\item[{T}]{e1,  }\item[{T}]{s2,  }\item[{T}]{e2 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



check if the two given intervals overlap 


\begin{DoxyParams}{Parameters}
{\em s1} & start of interval 1 \\
\hline
{\em e1} & end of interval 1 \\
\hline
{\em s2} & start of interval 2 \\
\hline
{\em e2} & end of interval 2\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if overlap else false
\end{DoxyReturn}
\begin{DoxyNote}{Note}
overlap check assumes are start is inclusive and end is exclusive 
\end{DoxyNote}


Definition at line 194 of file memory\+\_\+pool.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_adee2dd1c2fcdb8d0dd152a14600c9cba}\label{namespacenntrainer_adee2dd1c2fcdb8d0dd152a14600c9cba}} 
\index{nntrainer@{nntrainer}!parse\_properties@{parse\_properties}}
\index{parse\_properties@{parse\_properties}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{parse\_properties()}{parse\_properties()}}
{\footnotesize\ttfamily template$<$size\+\_\+t I = 0, typename V , typename... Ts$>$ \\
std\+::enable\+\_\+if$<$I == sizeof...(Ts), void$>$\+::type nntrainer\+::parse\+\_\+properties (\begin{DoxyParamCaption}\item[{V \&}]{props,  }\item[{std\+::tuple$<$ Ts... $>$ \&}]{tup }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple 


\begin{DoxyTemplParams}{Template Parameters}
{\em I} & size of tuple(automated) \\
\hline
{\em V} & container type of properties \\
\hline
{\em Ts} & types from tuple \\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em prop} & property container to be added to \\
\hline
{\em tup} & tuple to be iterated \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 424 of file app\+\_\+context.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_ad3f6301c414ec073ee70c0400d661daa}\label{namespacenntrainer_ad3f6301c414ec073ee70c0400d661daa}} 
\index{nntrainer@{nntrainer}!propagateTimestep@{propagateTimestep}}
\index{propagateTimestep@{propagateTimestep}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{propagateTimestep()}{propagateTimestep()}}
{\footnotesize\ttfamily static void nntrainer\+::propagate\+Timestep (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $\ast$}]{node,  }\item[{unsigned int}]{time\+\_\+step,  }\item[{unsigned int}]{max\+\_\+time\+\_\+step }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



if node is of recurrent type, set time step and max time step 


\begin{DoxyParams}{Parameters}
{\em node} & node \\
\hline
{\em time\+\_\+step} & time step \\
\hline
{\em max\+\_\+time\+\_\+step} & max time step \\
\hline
\end{DoxyParams}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000010}{Todo}}]add an interface to check if a layer supports a property \end{DoxyRefDesc}


Definition at line 198 of file recurrent\+\_\+realizer.\+cpp.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_ad3f6301c414ec073ee70c0400d661daa_cgraph}
\end{center}
\end{figure}
Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacenntrainer_ad3f6301c414ec073ee70c0400d661daa_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacenntrainer_af3ae4387c29bf33d32a2b5154d4ddb81}\label{namespacenntrainer_af3ae4387c29bf33d32a2b5154d4ddb81}} 
\index{nntrainer@{nntrainer}!setInplaceSharedMemoryConfigByLayer@{setInplaceSharedMemoryConfigByLayer}}
\index{setInplaceSharedMemoryConfigByLayer@{setInplaceSharedMemoryConfigByLayer}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{setInplaceSharedMemoryConfigByLayer()}{setInplaceSharedMemoryConfigByLayer()}}
{\footnotesize\ttfamily static void nntrainer\+::set\+Inplace\+Shared\+Memory\+Config\+By\+Layer (\begin{DoxyParamCaption}\item[{const std\+::shared\+\_\+ptr$<$ \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $>$ \&}]{lnode,  }\item[{bool \&}]{shared\+\_\+var,  }\item[{bool \&}]{shared\+\_\+grad }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



Set the Inplace Shared Memory Config By \mbox{\hyperlink{classLayer}{Layer}} object. 


\begin{DoxyParams}{Parameters}
{\em lnode} & layer node object \\
\hline
{\em shared\+\_\+var} & if the variable should be shared \\
\hline
{\em shared\+\_\+grad} & if the gradient should be shared \\
\hline
\end{DoxyParams}
for multiout layer, variables are shared but gradients are not

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000042}{Todo}}]for addition layer, variables are not shared but gradients are \end{DoxyRefDesc}


\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000043}{Todo}}]for layers which support in-\/place, both variables and gradients will be shared.\end{DoxyRefDesc}


\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000044}{Todo}}]add a check here is the layer being checked here can support in-\/place or not \end{DoxyRefDesc}


Definition at line 684 of file network\+\_\+graph.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a2072d4b3a3be2bcc7097ba91c117eb55}\label{namespacenntrainer_a2072d4b3a3be2bcc7097ba91c117eb55}} 
\index{nntrainer@{nntrainer}!suffixSpec@{suffixSpec}}
\index{suffixSpec@{suffixSpec}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{suffixSpec()}{suffixSpec()}}
{\footnotesize\ttfamily static void nntrainer\+::suffix\+Spec (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structnntrainer_1_1VarGradSpecV2}{Var\+Grad\+Spec\+V2}} \&}]{spec,  }\item[{unsigned int}]{idx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



rename specification 


\begin{DoxyParams}{Parameters}
{\em spec} & spec to rename \\
\hline
{\em idx} & idx to suffix \\
\hline
\end{DoxyParams}


Definition at line 33 of file layer\+\_\+context.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}\label{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}} 
\index{nntrainer@{nntrainer}!validateIntervalOverlap@{validateIntervalOverlap}}
\index{validateIntervalOverlap@{validateIntervalOverlap}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{validateIntervalOverlap()}{validateIntervalOverlap()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}}
{\footnotesize\ttfamily static void nntrainer\+::validate\+Interval\+Overlap (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::pair$<$ unsigned int, unsigned int $>$$>$ \&}]{memory\+\_\+validity,  }\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{memory\+\_\+size,  }\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{memory\+\_\+offset,  }\item[{size\+\_\+t}]{memory\+\_\+req }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



check if validate interval is overlapping in a very naive way. 


\begin{DoxyParams}{Parameters}
{\em memory\+\_\+validity} & validity \\
\hline
{\em memory\+\_\+size} & size \\
\hline
{\em memory\+\_\+offset} & offset \\
\hline
{\em memory\+\_\+req} & request \\
\hline
\end{DoxyParams}


Definition at line 56 of file optimized\+\_\+v1\+\_\+planner.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}\label{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}} 
\index{nntrainer@{nntrainer}!validateIntervalOverlap@{validateIntervalOverlap}}
\index{validateIntervalOverlap@{validateIntervalOverlap}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{validateIntervalOverlap()}{validateIntervalOverlap()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}}
{\footnotesize\ttfamily static void nntrainer\+::validate\+Interval\+Overlap (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::pair$<$ unsigned int, unsigned int $>$$>$ \&}]{memory\+\_\+validity,  }\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{memory\+\_\+size,  }\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{memory\+\_\+offset,  }\item[{size\+\_\+t}]{memory\+\_\+req }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



check if validate interval is overlapping in a very naive way. 


\begin{DoxyParams}{Parameters}
{\em memory\+\_\+validity} & validity \\
\hline
{\em memory\+\_\+size} & size \\
\hline
{\em memory\+\_\+offset} & offset \\
\hline
{\em memory\+\_\+req} & request \\
\hline
\end{DoxyParams}


Definition at line 69 of file optimized\+\_\+v2\+\_\+planner.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}\label{namespacenntrainer_a99d0a8e20307190fb74ae352209f89e7}} 
\index{nntrainer@{nntrainer}!validateIntervalOverlap@{validateIntervalOverlap}}
\index{validateIntervalOverlap@{validateIntervalOverlap}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{validateIntervalOverlap()}{validateIntervalOverlap()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}}
{\footnotesize\ttfamily static void nntrainer\+::validate\+Interval\+Overlap (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::pair$<$ unsigned int, unsigned int $>$$>$ \&}]{memory\+\_\+validity,  }\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{memory\+\_\+size,  }\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{memory\+\_\+offset,  }\item[{size\+\_\+t}]{memory\+\_\+req }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



check if validate interval is overlapping in a very naive way. 


\begin{DoxyParams}{Parameters}
{\em memory\+\_\+validity} & validity \\
\hline
{\em memory\+\_\+size} & size \\
\hline
{\em memory\+\_\+offset} & offset \\
\hline
{\em memory\+\_\+req} & request \\
\hline
\end{DoxyParams}


Definition at line 87 of file optimized\+\_\+v3\+\_\+planner.\+cpp.



\doxysubsection{Variable Documentation}
\mbox{\Hypertarget{namespacenntrainer_a771d7e0358e19bd9d648fbe1efc9fadf}\label{namespacenntrainer_a771d7e0358e19bd9d648fbe1efc9fadf}} 
\index{nntrainer@{nntrainer}!createfunc@{createfunc}}
\index{createfunc@{createfunc}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{createfunc}{createfunc}}
{\footnotesize\ttfamily template$<$size\+\_\+t I = 0, typename V , typename... Ts$>$ \\
std\+::enable\+\_\+if$<$ I$<$sizeof...(Ts), void$>$\+::type inline \mbox{\hyperlink{namespacenntrainer_adee2dd1c2fcdb8d0dd152a14600c9cba}{parse\+\_\+properties}}(V \&props, std\+::tuple$<$Ts...$>$ \&tup) \{ std\+::string name = std\+::get$<$I$>$tup); std\+::string prop = get\+Config(name); if (!prop.\+empty()) props.\+push\+\_\+back(name + \char`\"{}=\char`\"{} + prop); \mbox{\hyperlink{namespacenntrainer_adee2dd1c2fcdb8d0dd152a14600c9cba}{parse\+\_\+properties}}$<$I + 1$>$props, tup);\}const std\+::vector$<$std\+::string$>$ \mbox{\hyperlink{classnntrainer_1_1AppContext_a04e68fd85c56c6c926c44472a5561b3b}{App\+Context\+::get\+Properties}}(void) \{ std\+::vector$<$std\+::string$>$ properties; auto props = std\+::tuple(\char`\"{}memory\+\_\+swap\char`\"{}, \char`\"{}memory\+\_\+swap\+\_\+path\char`\"{}); parse\+\_\+properties(properties, props); return properties;\}int \mbox{\hyperlink{classnntrainer_1_1AppContext_afa231236e1ebf3e163d7befc630ee786}{App\+Context\+::register\+Layer}}(const std\+::string \&library\+\_\+path, const std\+::string \&base\+\_\+path) \{ const std\+::string full\+\_\+path = get\+Full\+Path(library\+\_\+path, base\+\_\+path); void $\ast$handle = dlopen(full\+\_\+path.\+c\+\_\+str(), R\+T\+L\+D\+\_\+\+L\+A\+ZY $\vert$ R\+T\+L\+D\+\_\+\+L\+O\+C\+AL); const char $\ast$error\+\_\+msg = dlerror(); $<$$<$ func\+\_\+tag $<$$<$ \char`\"{}open plugin failed, reason\+: \char`\"{} $<$$<$ error\+\_\+msg; nntrainer\+::\+Layer\+Pluggable $\ast$pluggable = reinterpret\+\_\+cast$<$nntrainer\+::\+Layer\+Pluggable $\ast$$>$ dlsym(handle, \char`\"{}ml\+\_\+train\+\_\+layer\+\_\+pluggable\char`\"{})); error\+\_\+msg = dlerror(); auto close\+\_\+dl = \mbox{[}handle\mbox{]} \{ dlclose(handle); \}; N\+N\+T\+R\+\_\+\+T\+H\+R\+O\+W\+\_\+\+I\+F\+\_\+\+C\+L\+E\+A\+N\+UP(error\+\_\+msg != nullptr $\vert$$\vert$ pluggable == nullptr, std\+::invalid\+\_\+argument, close\+\_\+dl) $<$$<$ func\+\_\+tag $<$$<$ \char`\"{}loading symbol failed, reason\+: \char`\"{} $<$$<$ error\+\_\+msg; auto layer = pluggable-\/$>$ nntrainer\+::createfunc()}



base case of iterate\+\_\+prop, iterate\+\_\+prop iterates the given tuple 


\begin{DoxyTemplParams}{Template Parameters}
{\em I} & size of tuple(automated) \\
\hline
{\em V} & container type of properties \\
\hline
{\em Ts} & types from tuple \\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em prop} & property container to be added to \\
\hline
{\em tup} & tuple to be iterated \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
void 
\end{DoxyReturn}


Definition at line 480 of file app\+\_\+context.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_aafbad679e6628edba69bd6da79a4c898}\label{namespacenntrainer_aafbad679e6628edba69bd6da79a4c898}} 
\index{nntrainer@{nntrainer}!rng@{rng}}
\index{rng@{rng}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{rng}{rng}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily auto nntrainer\+::rng\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= [] \{}
\DoxyCodeLine{  std::mt19937 rng;}
\DoxyCodeLine{  rng.seed(getSeed());}
\DoxyCodeLine{  \textcolor{keywordflow}{return} rng;}
\DoxyCodeLine{\}()}

\end{DoxyCode}


Definition at line 36 of file util\+\_\+func.\+cpp.

\mbox{\Hypertarget{namespacenntrainer_aafbad679e6628edba69bd6da79a4c898}\label{namespacenntrainer_aafbad679e6628edba69bd6da79a4c898}} 
\index{nntrainer@{nntrainer}!rng@{rng}}
\index{rng@{rng}!nntrainer@{nntrainer}}
\doxysubsubsection{\texorpdfstring{rng}{rng}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily auto nntrainer\+::rng\hspace{0.3cm}{\ttfamily [static]}}

{\bfseries Initial value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{= [] \{}
\DoxyCodeLine{  std::mt19937 rng;}
\DoxyCodeLine{  rng.seed(getSeed());}
\DoxyCodeLine{  \textcolor{keywordflow}{return} rng;}
\DoxyCodeLine{\}()}

\end{DoxyCode}


Definition at line 89 of file tensor.\+cpp.

