My Project
Classes | Typedefs | Functions
unified_optimization.hpp File Reference
#include "iteration_recorder.hpp"
#include "network_wrapper.hpp"
#include "seed.hpp"
#include <Eigen/Core>
#include <algorithm>
#include <chrono>
#include <fstream>
#include <iostream>
#include <memory>
#include <string>
#include <type_traits>
#include <vector>
#include "minimizer/gd.hpp"
#include "minimizer/lbfgs.hpp"
#include "minimizer/s_gd.hpp"
#include "minimizer/s_lbfgs.hpp"
Include dependency graph for unified_optimization.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  UnifiedConfig
 Configuration parameters for training experiments. More...
 
struct  UnifiedDataset
 Container for training and test data. More...
 
class  UnifiedOptimizer< CpuBackend >
 Specialization for CPU Backend. More...
 
class  UnifiedGD_CPU
 Standard Gradient Descent implementation for CPU. More...
 
class  UnifiedLBFGS_CPU
 L-BFGS implementation for CPU. More...
 
class  UnifiedSGD_CPU
 Stochastic Gradient Descent implementation for CPU (Optimized with Batch Matrix Ops). More...
 
class  UnifiedSLBFGS_CPU
 Stochastic L-BFGS implementation for CPU. More...
 

Typedefs

template<typename Backend >
using UnifiedGD = typename std::conditional< std::is_same< Backend, CpuBackend >::value, UnifiedGD_CPU, void >::type
 Unified alias for Gradient Descent (CPU & CUDA). More...
 
template<typename Backend >
using UnifiedLBFGS = typename std::conditional< std::is_same< Backend, CpuBackend >::value, UnifiedLBFGS_CPU, void >::type
 Unified alias for L-BFGS (CPU & CUDA). More...
 
template<typename Backend >
using UnifiedSGD = typename std::conditional< std::is_same< Backend, CpuBackend >::value, UnifiedSGD_CPU, void >::type
 Unified alias for Stochastic Gradient Descent (CPU & CUDA). More...
 
template<typename Backend >
using UnifiedSLBFGS = typename std::conditional< std::is_same< Backend, CpuBackend >::value, UnifiedSLBFGS_CPU, void >::type
 Unified alias for Stochastic L-BFGS (CPU ONLY). Triggers compile-time error if used with CudaBackend. More...
 

Functions

std::string cpu_log_filename (const UnifiedConfig &config)
 
void write_cpu_history_csv (const std::string &filename, const IterationRecorder< CpuBackend > &recorder, int log_interval)
 
void run_full_batch_cpu (NetworkWrapper< CpuBackend > &net, const UnifiedDataset &data, cpu_mlp::FullBatchMinimizer< Eigen::VectorXd, Eigen::MatrixXd > &minimizer)
 

Typedef Documentation

◆ UnifiedGD

template<typename Backend >
using UnifiedGD = typename std::conditional<std::is_same<Backend, CpuBackend>::value, UnifiedGD_CPU, void >::type

Unified alias for Gradient Descent (CPU & CUDA).

◆ UnifiedLBFGS

template<typename Backend >
using UnifiedLBFGS = typename std::conditional<std::is_same<Backend, CpuBackend>::value, UnifiedLBFGS_CPU, void >::type

Unified alias for L-BFGS (CPU & CUDA).

◆ UnifiedSGD

template<typename Backend >
using UnifiedSGD = typename std::conditional<std::is_same<Backend, CpuBackend>::value, UnifiedSGD_CPU, void >::type

Unified alias for Stochastic Gradient Descent (CPU & CUDA).

◆ UnifiedSLBFGS

template<typename Backend >
using UnifiedSLBFGS = typename std::conditional<std::is_same<Backend, CpuBackend>::value, UnifiedSLBFGS_CPU, void >::type

Unified alias for Stochastic L-BFGS (CPU ONLY). Triggers compile-time error if used with CudaBackend.

Function Documentation

◆ cpu_log_filename()

std::string cpu_log_filename ( const UnifiedConfig config)
inline
Here is the caller graph for this function:

◆ run_full_batch_cpu()

void run_full_batch_cpu ( NetworkWrapper< CpuBackend > &  net,
const UnifiedDataset data,
cpu_mlp::FullBatchMinimizer< Eigen::VectorXd, Eigen::MatrixXd > &  minimizer 
)
inline
Here is the call graph for this function:
Here is the caller graph for this function:

◆ write_cpu_history_csv()

void write_cpu_history_csv ( const std::string &  filename,
const IterationRecorder< CpuBackend > &  recorder,
int  log_interval 
)
inline
Here is the call graph for this function:
Here is the caller graph for this function: