* @brief NNTrainer Node exporter
* @see https://github.com/nnstreamer/nntrainer
* @author Jihoon Lee <jhoon.it.lee@samsung.com>
+ * @author Donghak Park <donghak.park@samsung.com>
* @bug No known bugs except for NYI items
*/
#include <node_exporter.h>
template <>
void Exporter::saveTflResult(
+ const std::tuple<props::Epsilon, props::BNPARAMS_MU_INIT,
+ props::BNPARAMS_VAR_INIT, props::BNPARAMS_BETA_INIT,
+ props::BNPARAMS_GAMMA_INIT, props::Momentum, props::Axis,
+ props::WeightDecay, props::BiasDecay> &props,
+ const BatchNormalizationLayer *self) {
+ createIfNull(tf_node);
+
+ auto epsilon = std::get<props::Epsilon>(props).get();
+ tf_node->AppendAdditionalProps(epsilon);
+
+ tf_node->setOpType(tflite::BuiltinOperator_MUL);
+ auto options =
+ tflite::CreateMulOptions(*fbb, tflite::ActivationFunctionType_NONE).Union();
+ tf_node->setBuiltinOptions(tflite::BuiltinOptions_MulOptions, options);
+}
+
+template <>
+void Exporter::saveTflResult(
const std::tuple<props::FilterSize, std::array<props::KernelSize, CONV2D_DIM>,
std::array<props::Stride, CONV2D_DIM>, props::Padding2D,
std::array<props::Dilation, CONV2D_DIM>> &props,
auto options = tflite::CreateConv2DOptions(*fbb, tflite_padding(padding),
strides.at(0), strides.at(1))
.Union();
+
+ tf_node->AppendProps(tflite_padding(padding));
+ tf_node->AppendProps(strides.at(0));
+ tf_node->AppendProps(strides.at(1));
+
tf_node->setBuiltinOptions(tflite::BuiltinOptions_Conv2DOptions, options);
}
* @brief NNTrainer Node exporter
* @see https://github.com/nnstreamer/nntrainer
* @author Jihoon Lee <jhoon.it.lee@samsung.com>
+ * @author Donghak Park <donghak.park@samsung.com>
* @bug No known bugs except for NYI items
*/
#ifndef __NODE_EXPORTER_H__
#include <base_properties.h>
#include <common.h>
#include <common_properties.h>
+#include <layer.h>
#include <nntrainer_error.h>
#include <util_func.h>
class ClipGradByGlobalNorm;
class DisableBias;
class Activation;
+class BatchNormalization;
} // namespace props
class LayerNode;
props::ClipGradByGlobalNorm> &props,
const LayerNode *self);
+class BatchNormalizationLayer;
+/**
+ * @copydoc template <typename PropsType, typename NodeType> void
+ * Exporter::saveTflResult(const PropsType &props, const NodeType *self);
+ */
+template <>
+void Exporter::saveTflResult(
+ const std::tuple<props::Epsilon, props::BNPARAMS_MU_INIT,
+ props::BNPARAMS_VAR_INIT, props::BNPARAMS_BETA_INIT,
+ props::BNPARAMS_GAMMA_INIT, props::Momentum, props::Axis,
+ props::WeightDecay, props::BiasDecay> &props,
+ const BatchNormalizationLayer *self);
+
class LayerImpl;
/**