diff --git a/libs/ml/include/psemek/ml/neural_net/error.hpp b/libs/ml/include/psemek/ml/neural_net/error.hpp new file mode 100644 index 00000000..9274e1fb --- /dev/null +++ b/libs/ml/include/psemek/ml/neural_net/error.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include +#include + +namespace psemek::ml +{ + + struct neural_net_error + : std::runtime_error + { + using runtime_error::runtime_error; + }; + + struct empty_neural_net_error + : neural_net_error + { + empty_neural_net_error(); + }; + + struct wrong_activation_types_count_error + : neural_net_error + { + wrong_activation_types_count_error(std::size_t expected, std::size_t actual); + }; + + struct wrong_neural_net_input_size + : neural_net_error + { + wrong_neural_net_input_size(std::size_t expected, std::size_t actual); + }; + + struct wrong_neural_net_output_size + : neural_net_error + { + wrong_neural_net_output_size(std::size_t expected, std::size_t actual); + }; + +} diff --git a/libs/ml/include/psemek/ml/neural_net/evaluator.hpp b/libs/ml/include/psemek/ml/neural_net/evaluator.hpp index 6143f7a1..6bd3bf7c 100644 --- a/libs/ml/include/psemek/ml/neural_net/evaluator.hpp +++ b/libs/ml/include/psemek/ml/neural_net/evaluator.hpp @@ -2,17 +2,9 @@ #include -#include - namespace psemek::ml { - struct wrong_neural_net_input_size - : std::runtime_error - { - wrong_neural_net_input_size(std::size_t expected, std::size_t actual); - }; - // A class that stores temporary data to facilitate // allocation-free multiple evaluations of a neural net template diff --git a/libs/ml/include/psemek/ml/neural_net/neural_net.hpp b/libs/ml/include/psemek/ml/neural_net/neural_net.hpp index 9b44f504..d0663fa6 100644 --- a/libs/ml/include/psemek/ml/neural_net/neural_net.hpp +++ b/libs/ml/include/psemek/ml/neural_net/neural_net.hpp @@ -1,26 +1,14 @@ #pragma once #include +#include #include #include -#include namespace psemek::ml { - struct empty_neural_net_error - : std::exception - { - char const * what() noexcept; - }; - - struct wrong_activation_types_count_error - : std::runtime_error - { - wrong_activation_types_count_error(std::size_t expected, std::size_t actual); - }; - namespace detail { diff --git a/libs/ml/source/neural_net/error.cpp b/libs/ml/source/neural_net/error.cpp new file mode 100644 index 00000000..0393a951 --- /dev/null +++ b/libs/ml/source/neural_net/error.cpp @@ -0,0 +1,24 @@ +#include + +#include + +namespace psemek::ml +{ + + empty_neural_net_error::empty_neural_net_error() + : neural_net_error("neural net must have at least a single layer") + {} + + wrong_activation_types_count_error::wrong_activation_types_count_error(std::size_t expected, std::size_t actual) + : neural_net_error(util::to_string("wrong number of activation types: expected ", expected, ", got ", actual)) + {} + + wrong_neural_net_input_size::wrong_neural_net_input_size(std::size_t expected, std::size_t actual) + : neural_net_error(util::to_string("wrong neural net input size: expected ", expected, ", got ", actual)) + {} + + wrong_neural_net_output_size::wrong_neural_net_output_size(std::size_t expected, std::size_t actual) + : neural_net_error(util::to_string("wrong neural net output size: expected ", expected, ", got ", actual)) + {} + +} diff --git a/libs/ml/source/neural_net/evaluator.cpp b/libs/ml/source/neural_net/evaluator.cpp index 433fb004..34c59116 100644 --- a/libs/ml/source/neural_net/evaluator.cpp +++ b/libs/ml/source/neural_net/evaluator.cpp @@ -1,14 +1,8 @@ #include -#include - namespace psemek::ml { - wrong_neural_net_input_size::wrong_neural_net_input_size(std::size_t expected, std::size_t actual) - : std::runtime_error(util::to_string("wrong neural net input size: expected ", expected, ", got ", actual)) - {} - template struct neural_net_evaluator; template struct neural_net_evaluator; diff --git a/libs/ml/source/neural_net/neural_net.cpp b/libs/ml/source/neural_net/neural_net.cpp index 4d10ef54..83395064 100644 --- a/libs/ml/source/neural_net/neural_net.cpp +++ b/libs/ml/source/neural_net/neural_net.cpp @@ -5,15 +5,6 @@ namespace psemek::ml { - char const * empty_neural_net_error::what() noexcept - { - return "neural net must have at least a single layer"; - } - - wrong_activation_types_count_error::wrong_activation_types_count_error(std::size_t expected, std::size_t actual) - : std::runtime_error(util::to_string("wrong number of activation types: expected ", expected, ", got ", actual)) - {} - template struct neural_net; template struct neural_net;