\hypertarget{classnntrainer_1_1TfOpNode}{}\doxysection{nntrainer\+::Tf\+Op\+Node Class Reference}
\label{classnntrainer_1_1TfOpNode}\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}}


tensorflow operational node representation. This class contains, information to build operation flatbuffer  




{\ttfamily \#include $<$tflite\+\_\+opnode.\+h$>$}

\doxysubsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a197703bb4433fa279162c4c0b5f7a305}\label{classnntrainer_1_1TfOpNode_a197703bb4433fa279162c4c0b5f7a305}} 
using {\bfseries Variables} = std\+::vector$<$ const Tensor $\ast$ $>$
\item 
\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a00f80da1010fd3314e13d87b59f6cdcc}\label{classnntrainer_1_1TfOpNode_a00f80da1010fd3314e13d87b59f6cdcc}} 
using {\bfseries Transform\+Fn} = std\+::function$<$ std\+::vector$<$ Tensor $>$(std\+::vector$<$ const Tensor $\ast$ $>$ \&)$>$
\end{DoxyCompactItemize}
\doxysubsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classnntrainer_1_1TfOpNode_a096df3dffe64c6cdb91f4af589cb6742}{Tf\+Op\+Node}} ()
\begin{DoxyCompactList}\small\item\em Construct a new Tf object. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a0d1946ab95ffee0326c3ee2ce6e0ae75}{finalize}} ()
\begin{DoxyCompactList}\small\item\em finalize tf op node will be transformed to required variables in this phase, weights are merged into inputs \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_adfca2724d617cba26f2ede53f3a27eb5}{set\+Layer\+Node}} (const \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} \&layer)
\begin{DoxyCompactList}\small\item\em Set common informations from layer node. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a80aa9a72c0c96756470e89a9e8bfd0fc}{set\+Weight\+Transform\+Fn}} (Transform\+Fn fn)
\begin{DoxyCompactList}\small\item\em Set the \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} Transform Fn object. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a214bdb64cc233b510449bc2136bb8e01}{set\+Input\+Transform\+Fn}} (Transform\+Fn fn)
\begin{DoxyCompactList}\small\item\em Set the Input Transform Fn object. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a29ddcd9ecb5490b17c5bc61b2a452079}{set\+Op\+Type}} (tflite\+::\+Builtin\+Operator op\+\_\+type\+\_\+)
\begin{DoxyCompactList}\small\item\em Set the \mbox{\hyperlink{classOp}{Op}} Type object. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a9f013501571da4806072f6e29673ead7}{set\+Builtin\+Options}} (tflite\+::\+Builtin\+Options builtin\+\_\+option\+\_\+type\+\_\+, const flatbuffers\+::\+Offset$<$ void $>$ \&builtin\+\_\+ops\+\_\+)
\begin{DoxyCompactList}\small\item\em Set the Builtin Options object,. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a57f50e1d078d783c32740a626b5da113}{set\+Need\+Reorder\+Weight}} ()
\begin{DoxyCompactList}\small\item\em Set the Need Reorder \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} object. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_aa65668e01618ec1aa8636b148125e2f2}{set\+Trainable}} (bool trainable)
\begin{DoxyCompactList}\small\item\em Set the Trainable object. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a9f773426e28f15d5a1da2e65327b731d}{weight\+Reorder}} (unsigned int node\+\_\+count)
\begin{DoxyCompactList}\small\item\em Reorder \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} in case of N\+C\+HW -\/-\/$>$ N\+H\+WC. \end{DoxyCompactList}\item 
Variables \& \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a4ce4718adcb78f57cbdca055b0a51098}{get\+Inputs}} ()
\begin{DoxyCompactList}\small\item\em Get the Inputs object. \end{DoxyCompactList}\item 
const Variables \& \mbox{\hyperlink{classnntrainer_1_1TfOpNode_ae19a5b2cd2bd55a757a4394af7123443}{get\+Weights}} () const
\begin{DoxyCompactList}\small\item\em Get the weights object. \end{DoxyCompactList}\item 
Variables \& \mbox{\hyperlink{classnntrainer_1_1TfOpNode_aa0ca69fc8d06ccbf426b8faf82c47d38}{get\+Weights}} ()
\begin{DoxyCompactList}\small\item\em Get the weights object. \end{DoxyCompactList}\item 
const Variables \& \mbox{\hyperlink{classnntrainer_1_1TfOpNode_afdb770ee45d64fce276b9df2fbf8ff37}{get\+Inputs}} () const
\begin{DoxyCompactList}\small\item\em Get the Inputs object. \end{DoxyCompactList}\item 
Variables \& \mbox{\hyperlink{classnntrainer_1_1TfOpNode_af2c791676588815784e5528fa3a0fd62}{get\+Outputs}} ()
\begin{DoxyCompactList}\small\item\em Get the Outputs object. \end{DoxyCompactList}\item 
const Variables \& \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a1b3c3b79f10bea72e24fb3072957003d}{get\+Outputs}} () const
\begin{DoxyCompactList}\small\item\em Get the Outputs object. \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{classnntrainer_1_1TfOpNode_ac9842de7a5e07f6374a56687363b0e05}{is\+Input\+Node}} () const
\begin{DoxyCompactList}\small\item\em check if this op node is model input \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a14869f5792d1e625a65d30189c683f52}{is\+Output\+Node}} () const
\begin{DoxyCompactList}\small\item\em check if this op node is model output \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{classnntrainer_1_1TfOpNode_ab181a7aba8d761ece2f63d7316c8cf00}{is\+Virtual\+Node}} () const
\begin{DoxyCompactList}\small\item\em check if this op node is virtual node \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a47d6c4b9d49dfa67d12a4ab342cf2ca3}{is\+Need\+Reorder}} () const
\begin{DoxyCompactList}\small\item\em check if this layer need to reorder \end{DoxyCompactList}\item 
bool \mbox{\hyperlink{classnntrainer_1_1TfOpNode_af122e39faa729f2c959aff55c171d274}{is\+Trainable}} () const
\begin{DoxyCompactList}\small\item\em check if this layer is trainable \end{DoxyCompactList}\item 
const tflite\+::\+Builtin\+Operator \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a2971de4a53e2b09e2064f6498de9678a}{get\+Op\+Type}} () const
\begin{DoxyCompactList}\small\item\em Get the \mbox{\hyperlink{classOp}{Op}} Type object. \end{DoxyCompactList}\item 
const tflite\+::\+Builtin\+Options \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a93820f98cade2010766c95a43e683583}{get\+Option\+Type}} () const
\begin{DoxyCompactList}\small\item\em Get the \mbox{\hyperlink{classOp}{Op}} Type object. \end{DoxyCompactList}\item 
flatbuffers\+::\+Offset$<$ void $>$ \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a6d36149b061297b809483e24674157ff}{get\+Builtin\+Ops}} () const
\begin{DoxyCompactList}\small\item\em Get the \mbox{\hyperlink{classOp}{Op}} Options object. \end{DoxyCompactList}\item 
const std\+::vector$<$ \mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} $\ast$ $>$ \& \mbox{\hyperlink{classnntrainer_1_1TfOpNode_ae8390b9e1187aa01089eeee29b552d82}{get\+Input\+Nodes}} () const
\begin{DoxyCompactList}\small\item\em Get input nodes. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_af3a0c9787620c7cd41460d3f022475dd}{arity}} (size\+\_\+t \mbox{\hyperlink{namespacenntrainer_a41fadbe61bee85682a61d2251b89f8ccaa7b575b9206729df489556c378b86544}{value}})
\begin{DoxyCompactList}\small\item\em Set arity. \end{DoxyCompactList}\item 
const unsigned \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a76fb0b21a8961cb09dd7e0e4231d8a00}{arity}} () const
\begin{DoxyCompactList}\small\item\em Get arity. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a3e30d5fd548b510b704aed6bc0fb5cb5}{set\+Arg}} (size\+\_\+t index, \mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} $\ast$node)
\begin{DoxyCompactList}\small\item\em Set n-\/th argument of the node. \end{DoxyCompactList}\item 
\mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} $\ast$ \mbox{\hyperlink{classnntrainer_1_1TfOpNode_a4192507aed990ade8e7f074d3ac0bb57}{arg}} (size\+\_\+t index) const
\begin{DoxyCompactList}\small\item\em Get n-\/th argument of the node. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
tensorflow operational node representation. This class contains, information to build operation flatbuffer 



Definition at line 33 of file tflite\+\_\+opnode.\+h.



\doxysubsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a096df3dffe64c6cdb91f4af589cb6742}\label{classnntrainer_1_1TfOpNode_a096df3dffe64c6cdb91f4af589cb6742}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!TfOpNode@{TfOpNode}}
\index{TfOpNode@{TfOpNode}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{TfOpNode()}{TfOpNode()}}
{\footnotesize\ttfamily nntrainer\+::\+Tf\+Op\+Node\+::\+Tf\+Op\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



Construct a new Tf object. 



Definition at line 22 of file tflite\+\_\+opnode.\+cpp.



\doxysubsection{Member Function Documentation}
\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a4192507aed990ade8e7f074d3ac0bb57}\label{classnntrainer_1_1TfOpNode_a4192507aed990ade8e7f074d3ac0bb57}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!arg@{arg}}
\index{arg@{arg}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{arg()}{arg()}}
{\footnotesize\ttfamily \mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}}$\ast$ nntrainer\+::\+Tf\+Op\+Node\+::arg (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{index }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get n-\/th argument of the node. 

\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} $\ast$input\+\_\+nodes.at(index) 
\end{DoxyReturn}


Definition at line 248 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a76fb0b21a8961cb09dd7e0e4231d8a00}\label{classnntrainer_1_1TfOpNode_a76fb0b21a8961cb09dd7e0e4231d8a00}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!arity@{arity}}
\index{arity@{arity}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{arity()}{arity()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily const unsigned nntrainer\+::\+Tf\+Op\+Node\+::arity (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get arity. 

\begin{DoxyReturn}{Returns}
const unsigned input\+\_\+nodes.\+size() 
\end{DoxyReturn}


Definition at line 233 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_af3a0c9787620c7cd41460d3f022475dd}\label{classnntrainer_1_1TfOpNode_af3a0c9787620c7cd41460d3f022475dd}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!arity@{arity}}
\index{arity@{arity}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{arity()}{arity()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::arity (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set arity. 


\begin{DoxyParams}{Parameters}
{\em value} & value to set \\
\hline
\end{DoxyParams}


Definition at line 226 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a0d1946ab95ffee0326c3ee2ce6e0ae75}\label{classnntrainer_1_1TfOpNode_a0d1946ab95ffee0326c3ee2ce6e0ae75}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!finalize@{finalize}}
\index{finalize@{finalize}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{finalize()}{finalize()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::finalize (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



finalize tf op node will be transformed to required variables in this phase, weights are merged into inputs 

basically, result.\+size() == v.\+size() except Input\+Layer because a Transpose operator is added for converting nchw to nhwc \begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000024}{Todo}}]comment out below codes. \mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} needs to have \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} pointer \end{DoxyRefDesc}


Definition at line 177 of file tflite\+\_\+opnode.\+cpp.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a6d36149b061297b809483e24674157ff}\label{classnntrainer_1_1TfOpNode_a6d36149b061297b809483e24674157ff}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getBuiltinOps@{getBuiltinOps}}
\index{getBuiltinOps@{getBuiltinOps}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getBuiltinOps()}{getBuiltinOps()}}
{\footnotesize\ttfamily flatbuffers\+::\+Offset$<$ void $>$ nntrainer\+::\+Tf\+Op\+Node\+::get\+Builtin\+Ops (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const}



Get the \mbox{\hyperlink{classOp}{Op}} Options object. 


\begin{DoxyParams}{Parameters}
{\em f} & Flatbuffer Builder \\
\hline
\end{DoxyParams}

\begin{DoxyRetVals}{Return values}
{\em const} & tflite\+::\+Offset$<$void$>$ \\
\hline
\end{DoxyRetVals}


Definition at line 201 of file tflite\+\_\+opnode.\+cpp.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_ae8390b9e1187aa01089eeee29b552d82}\label{classnntrainer_1_1TfOpNode_ae8390b9e1187aa01089eeee29b552d82}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getInputNodes@{getInputNodes}}
\index{getInputNodes@{getInputNodes}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getInputNodes()}{getInputNodes()}}
{\footnotesize\ttfamily const std\+::vector$<$\mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} $\ast$$>$\& nntrainer\+::\+Tf\+Op\+Node\+::get\+Input\+Nodes (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get input nodes. 

\begin{DoxyReturn}{Returns}
const std\+::vector$<$\+Tf\+Op\+Node $\ast$$>$ \&input\+\_\+nodes 
\end{DoxyReturn}


Definition at line 219 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a4ce4718adcb78f57cbdca055b0a51098}\label{classnntrainer_1_1TfOpNode_a4ce4718adcb78f57cbdca055b0a51098}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getInputs@{getInputs}}
\index{getInputs@{getInputs}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getInputs()}{getInputs()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Variables\& nntrainer\+::\+Tf\+Op\+Node\+::get\+Inputs (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the Inputs object. 

\begin{DoxyReturn}{Returns}
Variables\& inputs 
\end{DoxyReturn}


Definition at line 115 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_afdb770ee45d64fce276b9df2fbf8ff37}\label{classnntrainer_1_1TfOpNode_afdb770ee45d64fce276b9df2fbf8ff37}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getInputs@{getInputs}}
\index{getInputs@{getInputs}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getInputs()}{getInputs()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const Variables\& nntrainer\+::\+Tf\+Op\+Node\+::get\+Inputs (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the Inputs object. 

\begin{DoxyReturn}{Returns}
const Variables\& inputs 
\end{DoxyReturn}


Definition at line 136 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a93820f98cade2010766c95a43e683583}\label{classnntrainer_1_1TfOpNode_a93820f98cade2010766c95a43e683583}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getOptionType@{getOptionType}}
\index{getOptionType@{getOptionType}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getOptionType()}{getOptionType()}}
{\footnotesize\ttfamily const tflite\+::\+Builtin\+Options nntrainer\+::\+Tf\+Op\+Node\+::get\+Option\+Type (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the \mbox{\hyperlink{classOp}{Op}} Type object. 

\begin{DoxyReturn}{Returns}
const tflite\+::\+Builtin\+Operator 
\end{DoxyReturn}


Definition at line 203 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a2971de4a53e2b09e2064f6498de9678a}\label{classnntrainer_1_1TfOpNode_a2971de4a53e2b09e2064f6498de9678a}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getOpType@{getOpType}}
\index{getOpType@{getOpType}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getOpType()}{getOpType()}}
{\footnotesize\ttfamily const tflite\+::\+Builtin\+Operator nntrainer\+::\+Tf\+Op\+Node\+::get\+Op\+Type (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the \mbox{\hyperlink{classOp}{Op}} Type object. 

\begin{DoxyReturn}{Returns}
const tflite\+::\+Builtin\+Operator 
\end{DoxyReturn}


Definition at line 196 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_af2c791676588815784e5528fa3a0fd62}\label{classnntrainer_1_1TfOpNode_af2c791676588815784e5528fa3a0fd62}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getOutputs@{getOutputs}}
\index{getOutputs@{getOutputs}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getOutputs()}{getOutputs()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Variables\& nntrainer\+::\+Tf\+Op\+Node\+::get\+Outputs (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the Outputs object. 

\begin{DoxyReturn}{Returns}
Variables\& 
\end{DoxyReturn}


Definition at line 143 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a1b3c3b79f10bea72e24fb3072957003d}\label{classnntrainer_1_1TfOpNode_a1b3c3b79f10bea72e24fb3072957003d}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getOutputs@{getOutputs}}
\index{getOutputs@{getOutputs}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getOutputs()}{getOutputs()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const Variables\& nntrainer\+::\+Tf\+Op\+Node\+::get\+Outputs (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the Outputs object. 

\begin{DoxyReturn}{Returns}
const Variables\& outputs 
\end{DoxyReturn}


Definition at line 150 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_aa0ca69fc8d06ccbf426b8faf82c47d38}\label{classnntrainer_1_1TfOpNode_aa0ca69fc8d06ccbf426b8faf82c47d38}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getWeights@{getWeights}}
\index{getWeights@{getWeights}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getWeights()}{getWeights()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily Variables\& nntrainer\+::\+Tf\+Op\+Node\+::get\+Weights (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Get the weights object. 

\begin{DoxyReturn}{Returns}
Variables\& weights 
\end{DoxyReturn}


Definition at line 129 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_ae19a5b2cd2bd55a757a4394af7123443}\label{classnntrainer_1_1TfOpNode_ae19a5b2cd2bd55a757a4394af7123443}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!getWeights@{getWeights}}
\index{getWeights@{getWeights}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{getWeights()}{getWeights()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily const Variables\& nntrainer\+::\+Tf\+Op\+Node\+::get\+Weights (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Get the weights object. 

\begin{DoxyReturn}{Returns}
const Variables\& weights 
\end{DoxyReturn}


Definition at line 122 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_ac9842de7a5e07f6374a56687363b0e05}\label{classnntrainer_1_1TfOpNode_ac9842de7a5e07f6374a56687363b0e05}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!isInputNode@{isInputNode}}
\index{isInputNode@{isInputNode}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{isInputNode()}{isInputNode()}}
{\footnotesize\ttfamily bool nntrainer\+::\+Tf\+Op\+Node\+::is\+Input\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



check if this op node is model input 


\begin{DoxyRetVals}{Return values}
{\em true} & if op node is model input \\
\hline
{\em false} & if op node is not model input \\
\hline
\end{DoxyRetVals}


Definition at line 158 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a47d6c4b9d49dfa67d12a4ab342cf2ca3}\label{classnntrainer_1_1TfOpNode_a47d6c4b9d49dfa67d12a4ab342cf2ca3}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!isNeedReorder@{isNeedReorder}}
\index{isNeedReorder@{isNeedReorder}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{isNeedReorder()}{isNeedReorder()}}
{\footnotesize\ttfamily bool nntrainer\+::\+Tf\+Op\+Node\+::is\+Need\+Reorder (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



check if this layer need to reorder 

\begin{DoxyReturn}{Returns}
true if weight need to reorder 

false if reordering is not required 
\end{DoxyReturn}


Definition at line 181 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a14869f5792d1e625a65d30189c683f52}\label{classnntrainer_1_1TfOpNode_a14869f5792d1e625a65d30189c683f52}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!isOutputNode@{isOutputNode}}
\index{isOutputNode@{isOutputNode}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{isOutputNode()}{isOutputNode()}}
{\footnotesize\ttfamily bool nntrainer\+::\+Tf\+Op\+Node\+::is\+Output\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



check if this op node is model output 


\begin{DoxyRetVals}{Return values}
{\em true} & if op node is model output \\
\hline
{\em false} & if op node is not model output \\
\hline
\end{DoxyRetVals}


Definition at line 166 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_af122e39faa729f2c959aff55c171d274}\label{classnntrainer_1_1TfOpNode_af122e39faa729f2c959aff55c171d274}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!isTrainable@{isTrainable}}
\index{isTrainable@{isTrainable}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{isTrainable()}{isTrainable()}}
{\footnotesize\ttfamily bool nntrainer\+::\+Tf\+Op\+Node\+::is\+Trainable (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



check if this layer is trainable 

\begin{DoxyReturn}{Returns}
true if layer(\+Op\+Node) trainable 

false if layer(\+Op\+Node) non-\/trainable 
\end{DoxyReturn}


Definition at line 189 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_ab181a7aba8d761ece2f63d7316c8cf00}\label{classnntrainer_1_1TfOpNode_ab181a7aba8d761ece2f63d7316c8cf00}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!isVirtualNode@{isVirtualNode}}
\index{isVirtualNode@{isVirtualNode}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{isVirtualNode()}{isVirtualNode()}}
{\footnotesize\ttfamily bool nntrainer\+::\+Tf\+Op\+Node\+::is\+Virtual\+Node (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



check if this op node is virtual node 

virtual node is a node that will not be exported 

Definition at line 173 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a3e30d5fd548b510b704aed6bc0fb5cb5}\label{classnntrainer_1_1TfOpNode_a3e30d5fd548b510b704aed6bc0fb5cb5}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setArg@{setArg}}
\index{setArg@{setArg}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setArg()}{setArg()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Arg (\begin{DoxyParamCaption}\item[{size\+\_\+t}]{index,  }\item[{\mbox{\hyperlink{classnntrainer_1_1TfOpNode}{Tf\+Op\+Node}} $\ast$}]{node }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set n-\/th argument of the node. 


\begin{DoxyParams}{Parameters}
{\em index} & argument index to set \\
\hline
{\em node} & the node to be argument \\
\hline
\end{DoxyParams}


Definition at line 241 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a9f013501571da4806072f6e29673ead7}\label{classnntrainer_1_1TfOpNode_a9f013501571da4806072f6e29673ead7}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setBuiltinOptions@{setBuiltinOptions}}
\index{setBuiltinOptions@{setBuiltinOptions}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setBuiltinOptions()}{setBuiltinOptions()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Builtin\+Options (\begin{DoxyParamCaption}\item[{tflite\+::\+Builtin\+Options}]{builtin\+\_\+option\+\_\+type\+\_\+,  }\item[{const flatbuffers\+::\+Offset$<$ void $>$ \&}]{builtin\+\_\+ops\+\_\+ }\end{DoxyParamCaption})}



Set the Builtin Options object,. 

\begin{DoxyNote}{Note}
this can go private, export from a layer and fill this out
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em builtin\+\_\+option\+\_\+type\+\_\+} & builtin option type \\
\hline
{\em builtin\+\_\+ops\+\_\+} & flatbuffer offset of builtin\+\_\+ops \\
\hline
\end{DoxyParams}


Definition at line 218 of file tflite\+\_\+opnode.\+cpp.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a214bdb64cc233b510449bc2136bb8e01}\label{classnntrainer_1_1TfOpNode_a214bdb64cc233b510449bc2136bb8e01}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setInputTransformFn@{setInputTransformFn}}
\index{setInputTransformFn@{setInputTransformFn}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setInputTransformFn()}{setInputTransformFn()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Input\+Transform\+Fn (\begin{DoxyParamCaption}\item[{Transform\+Fn}]{fn }\end{DoxyParamCaption})}



Set the Input Transform Fn object. 


\begin{DoxyParams}{Parameters}
{\em fn} & fn will be called before get \\
\hline
\end{DoxyParams}


Definition at line 118 of file tflite\+\_\+opnode.\+cpp.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_adfca2724d617cba26f2ede53f3a27eb5}\label{classnntrainer_1_1TfOpNode_adfca2724d617cba26f2ede53f3a27eb5}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setLayerNode@{setLayerNode}}
\index{setLayerNode@{setLayerNode}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setLayerNode()}{setLayerNode()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Layer\+Node (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classnntrainer_1_1LayerNode}{Layer\+Node}} \&}]{layer }\end{DoxyParamCaption})}



Set common informations from layer node. 


\begin{DoxyParams}{Parameters}
{\em layer} & node layer node \\
\hline
\end{DoxyParams}
\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000022}{Todo}}]support more loss layers \end{DoxyRefDesc}


set to graph output node if output connection of the node includes loss layer string \begin{DoxyNote}{Note}
this is workaround because it cannot be guaranteed that a loss layer always has a loss type in its name.
\end{DoxyNote}
There are two ways to pass {\ttfamily Graph\+Representation} parameters to {\ttfamily serialize} method.


\begin{DoxyEnumerate}
\item with loss layer at the end of the graph
\item without loss layer but last node has loss layer output connection
\end{DoxyEnumerate}

Loss layer of the first case is removed by {\ttfamily \mbox{\hyperlink{classnntrainer_1_1LossRealizer}{Loss\+Realizer}}} and the previous layer of the loss layer is set as the output node. And, the below logic is for the second case.

assume that loss layers have single output

\begin{DoxyRefDesc}{Todo}
\item[\mbox{\hyperlink{todo__todo000023}{Todo}}]support more virtual nodes \end{DoxyRefDesc}


Q1) Why convert from N\+C\+HW to N\+H\+WC? A1) the tflite uses N\+H\+WC format; nntrainer uses N\+C\+HW

Q2) Why are only output tensors reshaped? A2) the tflite needs only one tensor between nodes. Therefore, basically, outputs are used for tflite tensors

Definition at line 38 of file tflite\+\_\+opnode.\+cpp.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classnntrainer_1_1TfOpNode_adfca2724d617cba26f2ede53f3a27eb5_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a57f50e1d078d783c32740a626b5da113}\label{classnntrainer_1_1TfOpNode_a57f50e1d078d783c32740a626b5da113}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setNeedReorderWeight@{setNeedReorderWeight}}
\index{setNeedReorderWeight@{setNeedReorderWeight}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setNeedReorderWeight()}{setNeedReorderWeight()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Need\+Reorder\+Weight (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set the Need Reorder \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} object. 



Definition at line 95 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a29ddcd9ecb5490b17c5bc61b2a452079}\label{classnntrainer_1_1TfOpNode_a29ddcd9ecb5490b17c5bc61b2a452079}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setOpType@{setOpType}}
\index{setOpType@{setOpType}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setOpType()}{setOpType()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Op\+Type (\begin{DoxyParamCaption}\item[{tflite\+::\+Builtin\+Operator}]{op\+\_\+type\+\_\+ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set the \mbox{\hyperlink{classOp}{Op}} Type object. 


\begin{DoxyParams}{Parameters}
{\em op\+\_\+type\+\_\+} & operation type \\
\hline
\end{DoxyParams}


Definition at line 79 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_aa65668e01618ec1aa8636b148125e2f2}\label{classnntrainer_1_1TfOpNode_aa65668e01618ec1aa8636b148125e2f2}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setTrainable@{setTrainable}}
\index{setTrainable@{setTrainable}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setTrainable()}{setTrainable()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Trainable (\begin{DoxyParamCaption}\item[{bool}]{trainable }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



Set the Trainable object. 



Definition at line 101 of file tflite\+\_\+opnode.\+h.

\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a80aa9a72c0c96756470e89a9e8bfd0fc}\label{classnntrainer_1_1TfOpNode_a80aa9a72c0c96756470e89a9e8bfd0fc}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!setWeightTransformFn@{setWeightTransformFn}}
\index{setWeightTransformFn@{setWeightTransformFn}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{setWeightTransformFn()}{setWeightTransformFn()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::set\+Weight\+Transform\+Fn (\begin{DoxyParamCaption}\item[{Transform\+Fn}]{fn }\end{DoxyParamCaption})}



Set the \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} Transform Fn object. 


\begin{DoxyParams}{Parameters}
{\em fn} & fn will be called before get \\
\hline
\end{DoxyParams}


Definition at line 116 of file tflite\+\_\+opnode.\+cpp.

Here is the caller graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classnntrainer_1_1TfOpNode_a80aa9a72c0c96756470e89a9e8bfd0fc_icgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{classnntrainer_1_1TfOpNode_a9f773426e28f15d5a1da2e65327b731d}\label{classnntrainer_1_1TfOpNode_a9f773426e28f15d5a1da2e65327b731d}} 
\index{nntrainer::TfOpNode@{nntrainer::TfOpNode}!weightReorder@{weightReorder}}
\index{weightReorder@{weightReorder}!nntrainer::TfOpNode@{nntrainer::TfOpNode}}
\doxysubsubsection{\texorpdfstring{weightReorder()}{weightReorder()}}
{\footnotesize\ttfamily void nntrainer\+::\+Tf\+Op\+Node\+::weight\+Reorder (\begin{DoxyParamCaption}\item[{unsigned int}]{node\+\_\+count }\end{DoxyParamCaption})}



Reorder \mbox{\hyperlink{classnntrainer_1_1Weight}{Weight}} in case of N\+C\+HW -\/-\/$>$ N\+H\+WC. 


\begin{DoxyParams}{Parameters}
{\em node\+\_\+count} & \\
\hline
\end{DoxyParams}


Definition at line 120 of file tflite\+\_\+opnode.\+cpp.

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{classnntrainer_1_1TfOpNode_a9f773426e28f15d5a1da2e65327b731d_cgraph}
\end{center}
\end{figure}


The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
compiler/\mbox{\hyperlink{tflite__opnode_8h}{tflite\+\_\+opnode.\+h}}\item 
compiler/\mbox{\hyperlink{tflite__opnode_8cpp}{tflite\+\_\+opnode.\+cpp}}\end{DoxyCompactItemize}
