#pragma once #include #include #include #include "utils.hpp" namespace fmri { class LayerInfo { public: enum class Type { Input, Convolutional, ReLU, Pooling, InnerProduct, DropOut, LRN, Split, Softmax, Other }; LayerInfo(std::string_view name, std::string_view type, const std::vector>> ¶meters); const std::string& name() const; Type type() const; const std::vector>>& parameters() const; static Type typeByName(std::string_view name); static std::string_view nameByType(Type type); private: std::vector>> parameters_; Type type_; std::string name_; const static std::unordered_map NAME_TYPE_MAP; }; std::ostream& operator<<(std::ostream& out, LayerInfo::Type type); }