Loading...
Searching...
No Matches
opennn::Loss Class Reference

#include <opennn/training/loss.h>

Classes

struct  EvaluationResult
 

Public Types

enum class  Error {
  MeanSquaredError , MeanAbsoluteError , NormalizedSquaredError , WeightedSquaredError ,
  CrossEntropy , CrossEntropy3d , MinkowskiError , Yolo
}
 
enum class  Regularization { L1 , L2 , NoRegularization }
 

Public Member Functions

 Loss (Network *=nullptr, Dataset *=nullptr)
 
virtual ~Loss ()=default
 
const Network * get_network () const noexcept
 
Network * get_network ()
 
const Dataset * get_dataset () const noexcept
 
Dataset * get_dataset ()
 
void set (Network *=nullptr, Dataset *=nullptr)
 
void set_network (Network *new_network)
 
virtual void set_dataset (Dataset *new_dataset)
 
string get_regularization_method () const
 
void set_regularization (const string &new_regularization_method)
 
void set_regularization (Regularization new_regularization)
 
void set_regularization_weight (const float new_regularization_weight)
 
void set_minkowski_parameter (const float new_minkowski_parameter)
 
void set_normalization_coefficient ()
 
EvaluationResult calculate_error (const Batch &, const ForwardPropagation &) const
 
void set_error (const Error &)
 
void set_error (const string &)
 
Error get_error () const noexcept
 
vector< Index > get_output_delta_layer_indices () const
 
bool output_delta_overwrites_outputs () const
 
void back_propagate (const Batch &, ForwardPropagation &, BackPropagation &) const
 
bool supports_device_epoch_metrics () const
 
bool back_propagate_device_metrics (const Batch &, ForwardPropagation &, BackPropagation &, float *, float *) const
 
bool calculate_error_device_metrics (const Batch &, const ForwardPropagation &, float *, float *) const
 
float calculate_regularization (const VectorR &) const
 
float calculate_regularization (const TensorView &) const
 
void add_regularization_gradient (BackPropagation &) const
 
void add_regularization_gradient (const TensorView &) const
 
void from_JSON (const JsonDocument &)
 
void to_JSON (JsonWriter &) const
 
void regularization_from_JSON (const JsonDocument &)
 
void regularization_to_JSON (JsonWriter &) const
 
const string & get_name () const noexcept
 
void set_yolo_lambda_noobj (float v)
 
void set_yolo_lambda_class (float v)
 
void set_yolo_lambda_giou (float v)
 
void set_yolo_lambda_dfl (float v)
 
void set_yolo_focal_gamma (float v)
 
void set_yolo_obj_focal_gamma (float v)
 

Static Public Member Functions

static const EnumMap< Regularization > & regularization_map ()
 
static const string & regularization_to_string (Regularization regularization)
 
static Regularization string_to_regularization (const string &name)
 

Protected Attributes

Error error = Error::MeanSquaredError
 
float normalization_coefficient = 1.0f
 
float positives_weight = 1.0f
 
float negatives_weight = 1.0f
 
Index weighted_samples_number = 0
 
float minkowski_parameter = 1.5f
 
float yolo_lambda_giou = 5.0f
 
float yolo_lambda_dfl = 1.5f
 
float yolo_lambda_noobj = 0.5f
 
float yolo_lambda_class = 1.0f
 
float yolo_focal_gamma = 0.0f
 
float yolo_obj_focal_gamma = 0.0f
 
Regularization regularization_method = Regularization::NoRegularization
 
float regularization_weight = 0.001f
 
Network * network = nullptr
 
Dataset * dataset = nullptr
 
string name = "Loss"
 

Member Enumeration Documentation

◆ Error

enum class opennn::Loss::Error
strong
Enumerator
MeanSquaredError 
MeanAbsoluteError 
NormalizedSquaredError 
WeightedSquaredError 
CrossEntropy 
CrossEntropy3d 
MinkowskiError 
Yolo 

◆ Regularization

enum class opennn::Loss::Regularization
strong
Enumerator
L1 
L2 
NoRegularization 

Constructor & Destructor Documentation

◆ Loss()

opennn::Loss::Loss ( Network * = nullptr,
Dataset * = nullptr )
explicit

◆ ~Loss()

virtual opennn::Loss::~Loss ( )
virtualdefault

Member Function Documentation

◆ add_regularization_gradient() [1/2]

void opennn::Loss::add_regularization_gradient ( BackPropagation & ) const

◆ add_regularization_gradient() [2/2]

void opennn::Loss::add_regularization_gradient ( const TensorView & ) const

◆ back_propagate()

void opennn::Loss::back_propagate ( const Batch & ,
ForwardPropagation & ,
BackPropagation &  ) const

◆ back_propagate_device_metrics()

bool opennn::Loss::back_propagate_device_metrics ( const Batch & ,
ForwardPropagation & ,
BackPropagation & ,
float * ,
float *  ) const

◆ calculate_error()

EvaluationResult opennn::Loss::calculate_error ( const Batch & ,
const ForwardPropagation &  ) const

◆ calculate_error_device_metrics()

bool opennn::Loss::calculate_error_device_metrics ( const Batch & ,
const ForwardPropagation & ,
float * ,
float *  ) const

◆ calculate_regularization() [1/2]

float opennn::Loss::calculate_regularization ( const TensorView & ) const

◆ calculate_regularization() [2/2]

float opennn::Loss::calculate_regularization ( const VectorR & ) const

◆ from_JSON()

void opennn::Loss::from_JSON ( const JsonDocument & )

◆ get_dataset() [1/2]

Dataset * opennn::Loss::get_dataset ( )
inline

◆ get_dataset() [2/2]

const Dataset * opennn::Loss::get_dataset ( ) const
inlinenoexcept

◆ get_error()

Error opennn::Loss::get_error ( ) const
inlinenoexcept

◆ get_name()

const string & opennn::Loss::get_name ( ) const
inlinenoexcept

◆ get_network() [1/2]

Network * opennn::Loss::get_network ( )
inline

◆ get_network() [2/2]

const Network * opennn::Loss::get_network ( ) const
inlinenoexcept

◆ get_output_delta_layer_indices()

vector< Index > opennn::Loss::get_output_delta_layer_indices ( ) const

◆ get_regularization_method()

string opennn::Loss::get_regularization_method ( ) const
inline

◆ output_delta_overwrites_outputs()

bool opennn::Loss::output_delta_overwrites_outputs ( ) const

◆ regularization_from_JSON()

void opennn::Loss::regularization_from_JSON ( const JsonDocument & )

◆ regularization_map()

static const EnumMap< Regularization > & opennn::Loss::regularization_map ( )
inlinestatic

◆ regularization_to_JSON()

void opennn::Loss::regularization_to_JSON ( JsonWriter & ) const

◆ regularization_to_string()

static const string & opennn::Loss::regularization_to_string ( Regularization regularization)
inlinestatic

◆ set()

void opennn::Loss::set ( Network * = nullptr,
Dataset * = nullptr )

◆ set_dataset()

virtual void opennn::Loss::set_dataset ( Dataset * new_dataset)
inlinevirtual

◆ set_error() [1/2]

void opennn::Loss::set_error ( const Error & )

◆ set_error() [2/2]

void opennn::Loss::set_error ( const string & )

◆ set_minkowski_parameter()

void opennn::Loss::set_minkowski_parameter ( const float new_minkowski_parameter)
inline

◆ set_network()

void opennn::Loss::set_network ( Network * new_network)
inline

◆ set_normalization_coefficient()

void opennn::Loss::set_normalization_coefficient ( )

◆ set_regularization() [1/2]

void opennn::Loss::set_regularization ( const string & new_regularization_method)
inline

◆ set_regularization() [2/2]

void opennn::Loss::set_regularization ( Regularization new_regularization)
inline

◆ set_regularization_weight()

void opennn::Loss::set_regularization_weight ( const float new_regularization_weight)
inline

◆ set_yolo_focal_gamma()

void opennn::Loss::set_yolo_focal_gamma ( float v)
inline

◆ set_yolo_lambda_class()

void opennn::Loss::set_yolo_lambda_class ( float v)
inline

◆ set_yolo_lambda_dfl()

void opennn::Loss::set_yolo_lambda_dfl ( float v)
inline

◆ set_yolo_lambda_giou()

void opennn::Loss::set_yolo_lambda_giou ( float v)
inline

◆ set_yolo_lambda_noobj()

void opennn::Loss::set_yolo_lambda_noobj ( float v)
inline

◆ set_yolo_obj_focal_gamma()

void opennn::Loss::set_yolo_obj_focal_gamma ( float v)
inline

◆ string_to_regularization()

static Regularization opennn::Loss::string_to_regularization ( const string & name)
inlinestatic

◆ supports_device_epoch_metrics()

bool opennn::Loss::supports_device_epoch_metrics ( ) const

◆ to_JSON()

void opennn::Loss::to_JSON ( JsonWriter & ) const

Member Data Documentation

◆ dataset

Dataset* opennn::Loss::dataset = nullptr
protected

◆ error

Error opennn::Loss::error = Error::MeanSquaredError
protected

◆ minkowski_parameter

float opennn::Loss::minkowski_parameter = 1.5f
protected

◆ name

string opennn::Loss::name = "Loss"
protected

◆ negatives_weight

float opennn::Loss::negatives_weight = 1.0f
protected

◆ network

Network* opennn::Loss::network = nullptr
protected

◆ normalization_coefficient

float opennn::Loss::normalization_coefficient = 1.0f
protected

◆ positives_weight

float opennn::Loss::positives_weight = 1.0f
protected

◆ regularization_method

Regularization opennn::Loss::regularization_method = Regularization::NoRegularization
protected

◆ regularization_weight

float opennn::Loss::regularization_weight = 0.001f
protected

◆ weighted_samples_number

Index opennn::Loss::weighted_samples_number = 0
protected

◆ yolo_focal_gamma

float opennn::Loss::yolo_focal_gamma = 0.0f
protected

◆ yolo_lambda_class

float opennn::Loss::yolo_lambda_class = 1.0f
protected

◆ yolo_lambda_dfl

float opennn::Loss::yolo_lambda_dfl = 1.5f
protected

◆ yolo_lambda_giou

float opennn::Loss::yolo_lambda_giou = 5.0f
protected

◆ yolo_lambda_noobj

float opennn::Loss::yolo_lambda_noobj = 0.5f
protected

◆ yolo_obj_focal_gamma

float opennn::Loss::yolo_obj_focal_gamma = 0.0f
protected