42 static const vector<pair<Regularization, string>> entries = {
136#ifdef OPENNN_HAS_CUDA
138 bool supports_device_epoch_metrics()
const;
141 bool back_propagate_device_metrics(
const Batch&,
144 float* error_sum_device,
145 float* accuracy_sum_device)
const;
148 bool calculate_error_device_metrics(
const Batch&,
150 float* error_sum_device,
151 float* accuracy_sum_device)
const;
176 void check_neural_network()
const
179 throw runtime_error(
"Loss error: neural network is not set.");
182 void check_dataset()
const
185 throw runtime_error(
"Loss error: dataset is not set.");
188 void add_regularization(BackPropagation&)
const;
190 float get_weighted_coefficient(
const Batch&)
const;
192 void calculate_layers_error_gradient(
const Batch&,
194 BackPropagation&)
const;
196 void back_propagate_layers(ForwardPropagation&,
197 BackPropagation&)
const;
199 void add_regularization_gradient(BackPropagation&)
const;
201 void calculate_output_deltas(
const Batch&,
202 const ForwardPropagation&,
203 BackPropagation&)
const;
215#ifdef OPENNN_HAS_CUDA
Abstract base class for OpenNN datasets, owning samples, variables, and metadata.
Definition dataset.h:61
static Regularization string_to_regularization(const string &name)
Parses a regularization name (accepts both "NoRegularization" and "None") back to the enum.
Definition loss.h:59
float negatives_weight
Definition loss.h:212
float normalization_coefficient
Definition loss.h:210
NeuralNetwork * get_neural_network()
Definition loss.h:77
NeuralNetwork * neural_network
Definition loss.h:227
Regularization regularization_method
Definition loss.h:224
float calculate_regularization(const VectorR &) const
Returns the regularization penalty (L1, L2, or ElasticNet) for the given parameter vector.
float positives_weight
Definition loss.h:211
void set_regularization(const string &new_regularization_method)
Definition loss.h:99
void from_JSON(const JsonDocument &)
Restores loss configuration (error type, regularization, weights) from a JSON document.
void regularization_from_JSON(const JsonDocument &)
Restores the regularization sub-configuration from JSON.
static float calculate_h(const float)
Returns the finite-difference step size h tuned for the given parameter value.
Dataset * get_dataset()
Definition loss.h:87
static const string & regularization_to_string(Regularization regularization)
Returns the canonical string name for a Regularization value.
Definition loss.h:53
Error error
Definition loss.h:207
void print() const
Prints a human-readable description of the loss (no-op default).
Definition loss.h:172
float regularization_weight
Definition loss.h:225
Dataset * dataset
Definition loss.h:228
virtual void set_dataset(Dataset *new_dataset)
Definition loss.h:97
void set(NeuralNetwork *=nullptr, Dataset *=nullptr)
Resets the bound neural network and dataset pointers.
void set_normalization_coefficient()
Recomputes the normalization coefficient (used by NormalizedSquaredError) from the dataset.
void regularization_to_JSON(JsonWriter &) const
Serializes the regularization sub-configuration to JSON.
string name
Definition loss.h:230
static const EnumMap< Regularization > & regularization_map()
Returns the static string<->enum map used to (de)serialize regularization types.
Definition loss.h:40
void back_propagate(const Batch &, ForwardPropagation &, BackPropagation &) const
Performs the full backward pass: output deltas, layer gradients, and regularization gradient.
void set_error(const string &)
Selects the error function variant from its string name.
void set_neural_network(NeuralNetwork *new_neural_network)
Definition loss.h:95
EvaluationResult calculate_error(const Batch &, const ForwardPropagation &) const
Computes the loss for one batch using the cached forward-pass outputs.
void to_JSON(JsonWriter &) const
Serializes the loss configuration (error type, regularization, weights) to JSON.
Error get_error() const
Definition loss.h:126
Loss(NeuralNetwork *=nullptr, Dataset *=nullptr)
Constructs a Loss bound to an optional neural network and dataset.
Regularization
Parameter regularization method applied on top of the base loss.
Definition loss.h:37
@ NoRegularization
Definition loss.h:37
@ ElasticNet
Definition loss.h:37
const string & get_name() const
Definition loss.h:167
void set_error(const Error &)
Selects the error function variant.
const Dataset * get_dataset() const
Definition loss.h:82
void set_regularization_weight(const float new_regularization_weight)
Definition loss.h:101
Error
Error function selector used to dispatch the loss kernel.
Definition loss.h:29
@ CrossEntropy3d
Definition loss.h:33
@ CrossEntropy
Definition loss.h:32
@ MinkowskiError
Definition loss.h:34
@ NormalizedSquaredError
Definition loss.h:30
@ MeanSquaredError
Definition loss.h:29
@ WeightedSquaredError
Definition loss.h:31
float minkowski_parameter
Definition loss.h:213
void set_regularization(Regularization new_regularization)
Definition loss.h:100
const NeuralNetwork * get_neural_network() const
Definition loss.h:72
Container of layers forming a feed-forward neural network, with parameter storage and I/O.
Definition neural_network.h:20
Definition adaptive_moment_estimation.h:14
@ CUDA
Definition configuration.h:17
Matrix< float, Dynamic, 1 > VectorR
Definition pch.h:181
Workspace holding parameter gradients and per-layer deltas during a backward pass.
Definition back_propagation.h:21
Minibatch container holding pinned host/device buffers and views into a Dataset.
Definition batch.h:19
Owning raw byte buffer that lives on CPU or CUDA memory, with aligned (re)allocation.
Definition tensor_utilities.h:166
Workspace holding the activations of every layer during a forward pass.
Definition forward_propagation.h:20
Result of calculate_error; accuracy and active_tokens_count are populated only by classification loss...
Definition loss.h:108
float accuracy
Definition loss.h:110
Index active_tokens_count
Definition loss.h:111
float error
Definition loss.h:109