Move neural net errors to a separate file

This commit is contained in:
Nikita Lisitsa 2022-01-20 20:07:36 +03:00
parent 2f1afc368e
commit 11b2d002ba
6 changed files with 64 additions and 36 deletions

View file

@ -0,0 +1,39 @@
#pragma once
#include <stdexcept>
#include <cstddef>
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);
};
}

View file

@ -2,17 +2,9 @@
#include <psemek/ml/neural_net/neural_net.hpp>
#include <stdexcept>
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 <typename T>

View file

@ -1,26 +1,14 @@
#pragma once
#include <psemek/ml/neural_net/activation.hpp>
#include <psemek/ml/neural_net/error.hpp>
#include <psemek/util/span.hpp>
#include <vector>
#include <stdexcept>
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
{

View file

@ -0,0 +1,24 @@
#include <psemek/ml/neural_net/error.hpp>
#include <psemek/util/to_string.hpp>
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))
{}
}

View file

@ -1,14 +1,8 @@
#include <psemek/ml/neural_net/evaluator.hpp>
#include <psemek/util/to_string.hpp>
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<float>;
template struct neural_net_evaluator<double>;

View file

@ -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<float>;
template struct neural_net<double>;