Line data Source code
1 : // SPDX-License-Identifier: Apache-2.0
2 : /**
3 : * Copyright (C) 2020 Jijoong Moon <jijoong.moon@samsung.com>
4 : *
5 : * @file flatten_layer.h
6 : * @date 16 June 2020
7 : * @see https://github.com/nnstreamer/nntrainer
8 : * @author Jijoong Moon <jijoong.moon@samsung.com>
9 : * @bug No known bugs except for NYI items
10 : * @brief This is Flatten Layer Class for Neural Network
11 : *
12 : */
13 :
14 : #ifndef __FLATTEN_LAYER_H__
15 : #define __FLATTEN_LAYER_H__
16 : #ifdef __cplusplus
17 :
18 : #include <reshape_layer.h>
19 :
20 : namespace nntrainer {
21 :
22 : /**
23 : * @class Flatten Layer
24 : * @brief Flatten Layer
25 : */
26 : class FlattenLayer : public ReshapeLayer {
27 : public:
28 : /**
29 : * @brief Constructor of Flatten Layer
30 : */
31 160 : FlattenLayer() :
32 : ReshapeLayer(),
33 480 : flatten_props(props::StartDimension(), props::EndDimension()) {}
34 :
35 : /**
36 : * @brief Destructor of Flatten Layer
37 : */
38 320 : ~FlattenLayer() = default;
39 :
40 : /**
41 : * @brief Move constructor of FlattenLayer.
42 : * @param[in] FlattenLayer &&
43 : */
44 : FlattenLayer(FlattenLayer &&rhs) noexcept = default;
45 :
46 : /**
47 : * @brief Move assignment operator.
48 : * @parma[in] rhs FlattenLayer to be moved.
49 : */
50 : FlattenLayer &operator=(FlattenLayer &&rhs) = default;
51 :
52 : /**
53 : * @copydoc Layer::finalize(InitLayerContext &context)
54 : */
55 : void finalize(InitLayerContext &context) override;
56 :
57 : /**
58 : * @copydoc Layer::setProperty(const std::vector<std::string> &values)
59 : */
60 : void setProperty(const std::vector<std::string> &values) override;
61 :
62 : /**
63 : * @copydoc Layer::exportTo(Exporter &exporter, ml::train::ExportMethods
64 : * method)
65 : */
66 : void exportTo(Exporter &exporter,
67 : const ml::train::ExportMethods &method) const override;
68 :
69 : /**
70 : * @copydoc Layer::getType()
71 : */
72 3808 : const std::string getType() const override { return FlattenLayer::type; };
73 :
74 : static constexpr const char *type = "flatten";
75 :
76 : std::tuple<props::StartDimension, props::EndDimension> flatten_props;
77 : };
78 :
79 : } // namespace nntrainer
80 :
81 : #endif /* __cplusplus */
82 : #endif /* __FLATTEN_LAYER_H__ */
|