21 std::vector<Parameter> parameters();
25 template<
typename Ret,
typename... Args>
26 Ret forward(Args&&... ) {
27 LMP_INTERNAL_ASSERT(
false) <<
"Not Implemented";
30 template<
typename Ret,
typename... Args>
31 Ret operator()(Args&&... args) {
32 return forward<Ret>(std::forward<Args>(args)...);
37 T& register_parameter(
const std::string& name, T&& param) {
38 params_[name] = std::forward<T>(param);
43 T& register_module(
const std::string& name, T&& module) {
44 modules_[name] = std::make_unique<T>(std::forward<T>(module));
45 return *
static_cast<T*
>(modules_[name].get());
49 bool trainable_ =
true;
50 std::unordered_map<std::string, std::unique_ptr<ModuleImpl>> modules_;
51 std::unordered_map<std::string, Parameter> params_;