25 template <
typename Optimizer>
31 using type = torch::optim::AdagradOptions;
36 using type = torch::optim::AdamOptions;
41 using type = torch::optim::AdamWOptions;
46 using type = torch::optim::LBFGSOptions;
51 using type = torch::optim::SGDOptions;
56 using type = torch::optim::RMSpropOptions;
67 const torch::optim::AdagradOptions &obj) {
68 at::optional<std::string> name_ = c10::demangle(
typeid(obj).name());
72 if (name_->find(
"struct ") == 0) {
73 name_->erase(name_->begin(), name_->begin() + 7);
74 }
else if (name_->find(
"class ") == 0) {
75 name_->erase(name_->begin(), name_->begin() + 6);
79 os << *name_ <<
"(\nlr = " << obj.lr()
80 <<
", lr_decay = " << obj.lr_decay()
81 <<
", weight_decay = " << obj.weight_decay()
82 <<
", initial_accumulator_value = " << obj.initial_accumulator_value()
83 <<
", eps = " << obj.eps()
91 const torch::optim::AdamOptions &obj) {
92 at::optional<std::string> name_ = c10::demangle(
typeid(obj).name());
96 if (name_->find(
"struct ") == 0) {
97 name_->erase(name_->begin(), name_->begin() + 7);
98 }
else if (name_->find(
"class ") == 0) {
99 name_->erase(name_->begin(), name_->begin() + 6);
103 os << *name_ <<
"(\nlr = " << obj.lr()
104 <<
", betas = [" << std::get<0>(obj.betas()) <<
", " << std::get<1>(obj.betas()) <<
"]"
105 <<
", weight_decay = " << obj.weight_decay()
106 <<
", eps = " << obj.eps()
107 <<
", amsgrad = " << obj.amsgrad()
115 const torch::optim::AdamWOptions &obj) {
116 at::optional<std::string> name_ = c10::demangle(
typeid(obj).name());
120 if (name_->find(
"struct ") == 0) {
121 name_->erase(name_->begin(), name_->begin() + 7);
122 }
else if (name_->find(
"class ") == 0) {
123 name_->erase(name_->begin(), name_->begin() + 6);
127 os << *name_ <<
"(\nlr = " << obj.lr()
128 <<
", betas = [" << std::get<0>(obj.betas()) <<
", " << std::get<1>(obj.betas()) <<
"]"
129 <<
", weight_decay = " << obj.weight_decay()
130 <<
", eps = " << obj.eps()
131 <<
", amsgrad = " << obj.amsgrad()
139 const torch::optim::LBFGSOptions &obj) {
140 at::optional<std::string> name_ = c10::demangle(
typeid(obj).name());
144 if (name_->find(
"struct ") == 0) {
145 name_->erase(name_->begin(), name_->begin() + 7);
146 }
else if (name_->find(
"class ") == 0) {
147 name_->erase(name_->begin(), name_->begin() + 6);
151 os << *name_ <<
"(\nlr = " << obj.lr()
152 <<
", max_iter = " << obj.max_iter()
153 <<
", max_eval = " << (obj.max_eval().has_value() ? std::to_string(*obj.max_eval()) :
"undefined")
154 <<
", tolerance_grad = " << obj.tolerance_grad()
155 <<
", tolerance_change = " << obj.tolerance_change()
156 <<
", history_size = " << obj.history_size()
157 <<
", line_search_fn = " << (obj.line_search_fn().has_value() ? *obj.line_search_fn() :
"undefined")
165 const torch::optim::RMSpropOptions &obj) {
166 at::optional<std::string> name_ = c10::demangle(
typeid(obj).name());
170 if (name_->find(
"struct ") == 0) {
171 name_->erase(name_->begin(), name_->begin() + 7);
172 }
else if (name_->find(
"class ") == 0) {
173 name_->erase(name_->begin(), name_->begin() + 6);
177 os << *name_ <<
"(\nlr = " << obj.lr()
178 <<
", alpha = " << obj.alpha()
179 <<
", eps = " << obj.eps()
180 <<
", weight_decay = " << obj.weight_decay()
181 <<
", momentum = " << obj.momentum()
182 <<
", centered = " << obj.centered()
190 const torch::optim::SGDOptions &obj) {
191 at::optional<std::string> name_ = c10::demangle(
typeid(obj).name());
195 if (name_->find(
"struct ") == 0) {
196 name_->erase(name_->begin(), name_->begin() + 7);
197 }
else if (name_->find(
"class ") == 0) {
198 name_->erase(name_->begin(), name_->begin() + 6);
202 os << *name_ <<
"(\nlr = " << obj.lr()
203 <<
", momentum = " << obj.momentum()
204 <<
", dampening = " << obj.dampening()
205 <<
", weight_decay = " << obj.weight_decay()
206 <<
", nesterov = " << obj.nesterov()
Concept to identify template parameters that are derived from torch::optim::Optimizer.
Definition optimizer.hpp:21
Definition boundary.hpp:22
torch::optim::AdamWOptions type
Definition optimizer.hpp:41
torch::optim::SGDOptions type
Definition optimizer.hpp:51
torch::optim::LBFGSOptions type
Definition optimizer.hpp:46
torch::optim::RMSpropOptions type
Definition optimizer.hpp:56
torch::optim::AdagradOptions type
Definition optimizer.hpp:31
torch::optim::AdamOptions type
Definition optimizer.hpp:36
Type trait for the optimizer options type.
Definition optimizer.hpp:27
std::ostream & operator<<(std::ostream &os, const torch::optim::AdagradOptions &obj)
Print (as string) a torch::optim::AdagradOptions object.
Definition optimizer.hpp:66
Definition optimizer.hpp:62