Shortcuts

Program Listing for File named_any.h

Return to documentation for file (torch/csrc/api/include/torch/nn/modules/container/named_any.h)

#pragma once

#include <torch/nn/modules/container/any.h>
#include <torch/types.h>

#include <memory>
#include <type_traits>
#include <utility>

namespace torch::nn {

class NamedAnyModule {
 public:
  template <typename ModuleType>
  NamedAnyModule(std::string name, std::shared_ptr<ModuleType> module_ptr)
      : NamedAnyModule(std::move(name), AnyModule(std::move(module_ptr))) {}

  // NOTE: We need to use `std::remove_reference_t<M>` to get rid of
  // any reference components for make_unique.
  template <typename M, typename = torch::detail::enable_if_module_t<M>>
  NamedAnyModule(std::string name, M&& module)
      : NamedAnyModule(
            std::move(name),
            std::make_shared<std::remove_reference_t<M>>(
                std::forward<M>(module))) {}

  template <typename M>
  NamedAnyModule(std::string name, const ModuleHolder<M>& module_holder)
      : NamedAnyModule(std::move(name), module_holder.ptr()) {}

  NamedAnyModule(std::string name, AnyModule any_module)
      : name_(std::move(name)), module_(std::move(any_module)) {}

  const std::string& name() const noexcept {
    return name_;
  }

  AnyModule& module() noexcept {
    return module_;
  }

  const AnyModule& module() const noexcept {
    return module_;
  }

 private:
  std::string name_;
  AnyModule module_;
};

} // namespace torch::nn

Docs

Access comprehensive developer documentation for PyTorch

View Docs

Tutorials

Get in-depth tutorials for beginners and advanced developers

View Tutorials

Resources

Find development resources and get your questions answered

View Resources