
\begin{DoxyRefList}
\item[File \mbox{\hyperlink{concat__layer_8cpp}{concat\+\_\+layer.cpp}} ]\label{todo__todo000058}%
\Hypertarget{todo__todo000058}%
merge concat and split layer to a common implementation  
\item[File \mbox{\hyperlink{flatten__layer_8cpp}{flatten\+\_\+layer.cpp}} ]\label{todo__todo000067}%
\Hypertarget{todo__todo000067}%
Update flatten to work in-\/place properly. 

\label{todo__todo000090}%
\Hypertarget{todo__todo000090}%
Update flatten to work in-\/place properly.  
\item[Class \mbox{\hyperlink{classLayer}{Layer}} ]\label{todo__todo000069}%
\Hypertarget{todo__todo000069}%
Check the caller of the get\+Tensor() and set restrictions on the tensors to be accessed based on which function is requesting it.  
\item[File \mbox{\hyperlink{layer__node_8h}{layer\+\_\+node.h}} ]\label{todo__todo000078}%
\Hypertarget{todo__todo000078}%
Add print\+Preset support 
\item[File \mbox{\hyperlink{memory__pool_8h}{memory\+\_\+pool.h}} ]\label{todo__todo000114}%
\Hypertarget{todo__todo000114}%
Support an external allocator for different backends and alignment 

Support release\+Memory(token) -\/ this need not release actual memory until deallocate 

Support maximum memory size for the memory pool as an argument 

support late memory request without optimization  
\item[File \mbox{\hyperlink{network__graph_8h}{network\+\_\+graph.h}} ]\label{todo__todo000037}%
\Hypertarget{todo__todo000037}%
Support multi-\/input graph.  
\item[File \mbox{\hyperlink{nnstreamer__layer_8cpp}{nnstreamer\+\_\+layer.cpp}} ]\label{todo__todo000083}%
\Hypertarget{todo__todo000083}%
\+: provide input/output dimensions to nnstreamer for certain frameworks 

\+: support transposing the data to support N\+C\+HW nntrainer data to N\+H\+WC nnstreamer data  
\item[Member \mbox{\hyperlink{namespacenntrainer_a5251bf487ffdceb6a22a3ff5221000f4}{nntrainer::build\+Traspose\+String}} (const std\+::array$<$ props\+::\+Permute\+Dims, 3 $>$ \&arr)]\label{todo__todo000084}%
\Hypertarget{todo__todo000084}%
deprecate this 
\item[Member \mbox{\hyperlink{classnntrainer_1_1DirDataProducer_af83efcbbc49c0614714c8cb11f589bd2}{nntrainer::Dir\+Data\+Producer::finalize}} (const std\+::vector$<$ Tensor\+Dim $>$ \&input\+\_\+dims, const std\+::vector$<$ Tensor\+Dim $>$ \&label\+\_\+dims, void $\ast$user\+\_\+data=nullptr) override]\label{todo__todo000028}%
\Hypertarget{todo__todo000028}%
expand this to non onehot case  
\item[Member \mbox{\hyperlink{classnntrainer_1_1DirDataProducer_a87527ec9a3698e3dadbb3f94b7660d91}{nntrainer::Dir\+Data\+Producer::is\+Multi\+Thread\+Safe}} () const override]\label{todo__todo000027}%
\Hypertarget{todo__todo000027}%
make this true, it is needed to test multiple worker scenario  
\item[Member \mbox{\hyperlink{classnntrainer_1_1FlatBufferOpNode_a8224f9f204fe8558fc64188a7be8e169}{nntrainer::Flat\+Buffer\+Op\+Node::set\+Layer\+Node}} (const \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} \&layer)]\label{todo__todo000002}%
\Hypertarget{todo__todo000002}%
Now support only mse, cross  
\item[Member \mbox{\hyperlink{classnntrainer_1_1GraphCompiler_ada1e44b77fc700d1d13ef2a1b4cdfc7a}{nntrainer::Graph\+Compiler::compile}} (std\+::shared\+\_\+ptr$<$ const Graph\+Representation $>$ representation)=0]\label{todo__todo000001}%
\Hypertarget{todo__todo000001}%
consider adding delegates argument here when implementing it for real. 
\item[Member \mbox{\hyperlink{classnntrainer_1_1GraphRealizer_a841b81262ea06e58655b512c3a0d05a9}{nntrainer::Graph\+Realizer::realize}} (const Graph\+Representation \&reference)=0]\label{todo__todo000008}%
\Hypertarget{todo__todo000008}%
consider void Graph\+Representation \&  
\item[Member \mbox{\hyperlink{classnntrainer_1_1IniGraphInterpreter_ab5089d3b2bb64a694b112ce629d04b48}{nntrainer::Ini\+Graph\+Interpreter::deserialize}} (const std\+::string \&in) override]\label{todo__todo000003}%
\Hypertarget{todo__todo000003}%
\+: this will be changed to a general way to add a graph 

\label{todo__todo000004}%
\Hypertarget{todo__todo000004}%
if graph Model Type is of recurrent\+\_\+wrapper, parse model and realize before return  
\item[Class \mbox{\hyperlink{classnntrainer_1_1IniSection}{nntrainer::Ini\+Section}} ]\label{todo__todo000141}%
\Hypertarget{todo__todo000141}%
consider A\+PI style set\+Entry function 
\item[Member \mbox{\hyperlink{classnntrainer_1_1InitLayerContext_a2281f458a9b5e1c37488c6320c34dcb4}{nntrainer::Init\+Layer\+Context::request\+Tensor}} (const Tensor\+Dim \&dim, const std\+::string \&name, const Tensor\+::\+Initializer init=Tensor\+::\+Initializer\+::\+N\+O\+NE, bool trainable=false, Tensor\+Lifespan lifespan=\mbox{\hyperlink{namespacenntrainer_a7bd666a3854202ea94feb44a15ad622da3f7a0f4f9399f0d9ec0d8d26ec59e9ec}{Tensor\+Lifespan\+::\+I\+T\+E\+R\+A\+T\+I\+O\+N\+\_\+\+L\+I\+F\+E\+S\+P\+AN}}, bool private\+\_\+=true)]\label{todo__todo000072}%
\Hypertarget{todo__todo000072}%
Consider providing a guarantee that the returned indices will always start from 0 and will always be incremental.  
\item[Member \mbox{\hyperlink{classnntrainer_1_1InitLayerContext_a6e9d822912f1f19078e03e44511e7e56}{nntrainer::Init\+Layer\+Context::request\+Tensor}} (const Tensor\+Spec \&spec)]\label{todo__todo000073}%
\Hypertarget{todo__todo000073}%
Consider providing a guarantee that the returned indices will always start from 0 and will always be incremental.  
\item[Member \mbox{\hyperlink{classnntrainer_1_1InitLayerContext_aa5fe2bb148fe39afffe99ddc5a28e834}{nntrainer::Init\+Layer\+Context::request\+Weight}} (const Tensor\+Dim \&dim, const Tensor\+::\+Initializer init, const Weight\+Regularizer reg, const float reg\+\_\+const, const float decay, const std\+::string \&name, bool trainable=true)]\label{todo__todo000070}%
\Hypertarget{todo__todo000070}%
Consider providing a guarantee that the returned indices will always start from 0 and will always be incremental.  
\item[Member \mbox{\hyperlink{classnntrainer_1_1InitLayerContext_aac595bb42ee3ea96e6d83cfeb9b9cfc5}{nntrainer::Init\+Layer\+Context::request\+Weight}} (const Weight\+Spec \&spec)]\label{todo__todo000071}%
\Hypertarget{todo__todo000071}%
Consider providing a guarantee that the returned indices will always start from 0 and will always be incremental.  
\item[Class \mbox{\hyperlink{classnntrainer_1_1IterationQueue}{nntrainer::Iteration\+Queue}} ]\label{todo__todo000029}%
\Hypertarget{todo__todo000029}%
apply this to the databuffer 

handle error case\+: 1. when Scoped\+View$<$\+Sample$>$ has met throw
\begin{DoxyEnumerate}
\item when Scoped\+View$<$\+Iteration$>$ has met throw  
\end{DoxyEnumerate}
\item[Member \mbox{\hyperlink{classnntrainer_1_1LossRealizer_aa9fa0708ed82c3c76fd994d58326f293}{nntrainer::Loss\+Realizer::realize}} (const Graph\+Representation \&reference) override]\label{todo__todo000007}%
\Hypertarget{todo__todo000007}%
support more loss layers  
\item[Member \mbox{\hyperlink{classnntrainer_1_1profile_1_1Profiler_a588e2d3debc628e707c98e579af5d306}{nntrainer::profile::Profiler::end}} (const int time\+\_\+item)]\label{todo__todo000142}%
\Hypertarget{todo__todo000142}%
\+: consider race condition  
\item[Member \mbox{\hyperlink{namespacenntrainer_ad3f6301c414ec073ee70c0400d661daa}{nntrainer::propagate\+Timestep}} (\mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} $\ast$node, unsigned int time\+\_\+step, unsigned int max\+\_\+time\+\_\+step)]\label{todo__todo000010}%
\Hypertarget{todo__todo000010}%
add an interface to check if a layer supports a property  
\item[Member \mbox{\hyperlink{classnntrainer_1_1props_1_1Loss_a3a237ef6bed6514871292beecee9cd54}{nntrainer::props::Loss::is\+Valid}} (const float \&v) const override]\label{todo__todo000077}%
\Hypertarget{todo__todo000077}%
detect when loss becomes Nan is useful. But it will need dedicated throw  
\item[Class \mbox{\hyperlink{classnntrainer_1_1props_1_1NumClass}{nntrainer::props::Num\+Class}} ]\label{todo__todo000057}%
\Hypertarget{todo__todo000057}%
deprecate this  
\item[Member \mbox{\hyperlink{classnntrainer_1_1RandomDataOneHotProducer_a5bb09f729be6f57a5a37951a12156e5c}{nntrainer::Random\+Data\+One\+Hot\+Producer::finalize}} (const std\+::vector$<$ Tensor\+Dim $>$ \&input\+\_\+dims, const std\+::vector$<$ Tensor\+Dim $>$ \&label\+\_\+dims, void $\ast$user\+\_\+data=nullptr) override]\label{todo__todo000034}%
\Hypertarget{todo__todo000034}%
expand this to non onehot case 

\label{todo__todo000035}%
\Hypertarget{todo__todo000035}%
move this to higher order component  
\item[Member \mbox{\hyperlink{classnntrainer_1_1RandomDataOneHotProducer_a1258d8dc1bc034a127f3273b455bee98}{nntrainer::Random\+Data\+One\+Hot\+Producer::is\+Multi\+Thread\+Safe}} () const override]\label{todo__todo000033}%
\Hypertarget{todo__todo000033}%
make this true, it is needed to test multiple worker scenario  
\item[Member \mbox{\hyperlink{classnntrainer_1_1RawFileDataProducer_a3c5c60d51266364b97e89fc3cad97f84}{nntrainer::Raw\+File\+Data\+Producer::pixel\+\_\+size}} ]\label{todo__todo000036}%
\Hypertarget{todo__todo000036}%
make this a configurable type  
\item[Member \mbox{\hyperlink{classnntrainer_1_1RecurrentRealizer_abc5fe66a0915b122b423c568375ceff0}{nntrainer::Recurrent\+Realizer::realize}} (const Graph\+Representation \&reference) override]\label{todo__todo000012}%
\Hypertarget{todo__todo000012}%
have axis in concat layer 

\label{todo__todo000013}%
\Hypertarget{todo__todo000013}%
this has to be wrapped with identity layer as \#1793  
\item[Member \mbox{\hyperlink{classnntrainer_1_1RecurrentRealizer_ad2faaf81c0aa8afeb9035a50d70f7830}{nntrainer::Recurrent\+Realizer::Recurrent\+Realizer}} (const char $\ast$ini, const std\+::vector$<$ std\+::string $>$ \&external\+\_\+input\+\_\+layers)]\label{todo__todo000011}%
\Hypertarget{todo__todo000011}%
delegate to \mbox{\hyperlink{classnntrainer_1_1RecurrentRealizer}{Recurrent\+Realizer}}(  
\item[Member \mbox{\hyperlink{classnntrainer_1_1RecurrentRealizer_a30882ff2bf2ed38f4f481c93fd2b457e}{nntrainer::Recurrent\+Realizer::Recurrent\+Realizer}} (const std\+::vector$<$ std\+::string $>$ \&properties, const std\+::vector$<$ Connection $>$ \&input\+\_\+conns, const std\+::vector$<$ Connection $>$ \&end\+\_\+conns)]\label{todo__todo000009}%
\Hypertarget{todo__todo000009}%
Deal as sequence as proper connection with identity layer  
\item[Member \mbox{\hyperlink{namespacenntrainer_af3ae4387c29bf33d32a2b5154d4ddb81}{nntrainer::set\+Inplace\+Shared\+Memory\+Config\+By\+Layer}} (const std\+::shared\+\_\+ptr$<$ Layer\+Node $>$ \&lnode, bool \&shared\+\_\+var, bool \&shared\+\_\+grad)]\label{todo__todo000042}%
\Hypertarget{todo__todo000042}%
for addition layer, variables are not shared but gradients are 

\label{todo__todo000043}%
\Hypertarget{todo__todo000043}%
for layers which support in-\/place, both variables and gradients will be shared.

\label{todo__todo000044}%
\Hypertarget{todo__todo000044}%
add a check here is the layer being checked here can support in-\/place or not  
\item[Member \mbox{\hyperlink{structnntrainer_1_1TensorSpecV2_a49b004c0e4cc4e08a18ab1ec2c50af56}{nntrainer::Tensor\+Spec\+V2::additional\+\_\+exec\+\_\+order}} ]\label{todo__todo000139}%
\Hypertarget{todo__todo000139}%
make this as an opaque information with P\+I\+M\+PL  
\item[Member \mbox{\hyperlink{classnntrainer_1_1TfliteInterpreter_ad6af4f59bfe69011f02785082f9a31f8}{nntrainer::Tflite\+Interpreter::serialize}} (const Graph\+Representation \&representation, const std\+::string \&out) override]\label{todo__todo000014}%
\Hypertarget{todo__todo000014}%
check if graph is finalized \& initialized and ready to serialize.  
\item[Member \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a0d1946ab95ffee0326c3ee2ce6e0ae75}{nntrainer::Tf\+Op\+Node::finalize}} ()]\label{todo__todo000024}%
\Hypertarget{todo__todo000024}%
comment out below codes. \mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} needs to have \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} pointer  
\item[Member \mbox{\hyperlink{classnntrainer_1_1TfOpNode_adfca2724d617cba26f2ede53f3a27eb5}{nntrainer::Tf\+Op\+Node::set\+Layer\+Node}} (const \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} \&layer)]\label{todo__todo000022}%
\Hypertarget{todo__todo000022}%
support more loss layers 

\label{todo__todo000023}%
\Hypertarget{todo__todo000023}%
support more virtual nodes  
\item[Member \mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}{nntrainer::value}} ]\label{todo__todo000079}%
\Hypertarget{todo__todo000079}%
make this property  
\item[Member \mbox{\hyperlink{classnntrainer_1_1Var__Grad_ac2b6a637ee4b632417d2203cf2ad3f7b}{nntrainer::Var\+\_\+\+Grad::Var\+\_\+\+Grad}} (const Tensor\+Dim \&dim, const Tensor\+::\+Initializer init=Tensor\+::\+Initializer\+::\+N\+O\+NE, bool ng=true, bool alloc\+\_\+now=false, const std\+::string \&name=\char`\"{}\char`\"{})]\label{todo__todo000140}%
\Hypertarget{todo__todo000140}%
gradient initializer should be none, and then they should be set zero right before using by the user itself.  
\item[Member \mbox{\hyperlink{namespacenntrainer_a9b456193e005bc14834eb1ecc03a7d58}{nntrainer::Weight\+Regularizer}} ]\label{todo__todo000138}%
\Hypertarget{todo__todo000138}%
Update to Tensor\+Regularizer  
\item[File \mbox{\hyperlink{split__layer_8h}{split\+\_\+layer.h}} ]\label{todo__todo000091}%
\Hypertarget{todo__todo000091}%
Add support for uneven splits. For now, this can be acheived with combination of split and concat layers.  
\item[File \mbox{\hyperlink{tensor_8h}{tensor.h}} ]\label{todo__todo000134}%
\Hypertarget{todo__todo000134}%
deprecate new tensor allocation for out of place operations.  
\item[File \mbox{\hyperlink{tensor__pool_8cpp}{tensor\+\_\+pool.cpp}} ]\label{todo__todo000135}%
\Hypertarget{todo__todo000135}%
add checks for request/updates that finalize is not done 

check before allocate that finalize is done 
\end{DoxyRefList}