/usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/optim
NameSizeModeActions
schedulers/-0755rm
adagrad.h32390644editdlrm
adam.h29510644editdlrm
adamw.h29730644editdlrm
lbfgs.h35600644editdlrm
optimizer.h74420644editdlrm
rmsprop.h29480644editdlrm
serialize.h109350644editdlrm
sgd.h26670644editdlrm
Edit: /usr/local/lib64/python3.6/site-packages/torch/include/torch/csrc/api/include/torch/optim/lbfgs.h (3560B)
#pragma once #include #include #include #include #include #include #include #include namespace torch { namespace optim { struct TORCH_API LBFGSOptions : public OptimizerCloneableOptions { LBFGSOptions(double lr = 1); TORCH_ARG(double, lr) = 1; TORCH_ARG(int64_t, max_iter) = 20; TORCH_ARG(c10::optional, max_eval) = c10::nullopt; TORCH_ARG(double, tolerance_grad) = 1e-7; TORCH_ARG(double, tolerance_change) = 1e-9; TORCH_ARG(int64_t, history_size) = 100; TORCH_ARG(c10::optional, line_search_fn) = c10::nullopt; public: void serialize(torch::serialize::InputArchive& archive) override; void serialize(torch::serialize::OutputArchive& archive) const override; TORCH_API friend bool operator==(const LBFGSOptions& lhs, const LBFGSOptions& rhs); ~LBFGSOptions() override = default; double get_lr() const override; void set_lr(const double lr) override; }; // NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init) struct TORCH_API LBFGSParamState : public OptimizerCloneableParamState { TORCH_ARG(int64_t, func_evals) = 0; TORCH_ARG(int64_t, n_iter) = 0; TORCH_ARG(double, t); TORCH_ARG(double, prev_loss); TORCH_ARG(Tensor, d) = {}; TORCH_ARG(Tensor, H_diag) = {}; TORCH_ARG(Tensor, prev_flat_grad) = {}; TORCH_ARG(std::deque, old_dirs); TORCH_ARG(std::deque, old_stps); TORCH_ARG(std::deque, ro); TORCH_ARG(c10::optional>, al) = c10::nullopt; public: void serialize(torch::serialize::InputArchive& archive) override; void serialize(torch::serialize::OutputArchive& archive) const override; TORCH_API friend bool operator==(const LBFGSParamState& lhs, const LBFGSParamState& rhs); ~LBFGSParamState() override = default; }; class TORCH_API LBFGS : public Optimizer { public: explicit LBFGS(std::vector param_groups, LBFGSOptions defaults = {}) : Optimizer(std::move(param_groups), std::make_unique(defaults)) { TORCH_CHECK(param_groups_.size() == 1, "LBFGS doesn't support per-parameter options (parameter groups)"); if (defaults.max_eval() == c10::nullopt) { auto max_eval_val = (defaults.max_iter() * 5) / 4; static_cast(param_groups_[0].options()).max_eval(max_eval_val); static_cast(*defaults_.get()).max_eval(max_eval_val); } _numel_cache = c10::nullopt; } explicit LBFGS( std::vector params, // NOLINTNEXTLINE(performance-move-const-arg) LBFGSOptions defaults = {}) : LBFGS({std::move(OptimizerParamGroup(params))}, defaults) {} Tensor step(LossClosure closure) override; void save(serialize::OutputArchive& archive) const override; void load(serialize::InputArchive& archive) override; private: c10::optional _numel_cache; int64_t _numel(); Tensor _gather_flat_grad(); void _add_grad(const double step_size, const Tensor& update); std::tuple _directional_evaluate( const LossClosure& closure, const std::vector& x, double t, const Tensor& d); void _set_param(const std::vector& params_data); std::vector _clone_param(); template static void serialize(Self& self, Archive& archive) { _TORCH_OPTIM_SERIALIZE_WITH_TEMPLATE_ARG(LBFGS); } }; } // namespace optim } // namespace torch