Skip to content
Snippets Groups Projects
NeuralNetworkSerialization.h 2.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • 
    #ifndef LIB4NEURO_NEURALNETWORKSERIALIZATION_H
    #define LIB4NEURO_NEURALNETWORKSERIALIZATION_H
    
    
    #include <boost/random/mersenne_twister.hpp>
    #include <boost/random/uniform_real_distribution.hpp>
    #include <boost/archive/text_oarchive.hpp>
    #include <boost/archive/text_iarchive.hpp>
    #include <boost/serialization/list.hpp>
    #include <boost/serialization/string.hpp>
    #include <boost/serialization/export.hpp>
    #include <boost/serialization/vector.hpp>
    #include <boost/serialization/utility.hpp>
    
    #include <boost/serialization/shared_ptr.hpp>
    
    
    #include "NeuralNetwork.h"
    #include "Neuron/NeuronSerialization.h"
    #include "Neuron/NeuronBinarySerialization.h"
    #include "Neuron/NeuronConstantSerialization.h"
    #include "Neuron/NeuronLinearSerialization.h"
    #include "Neuron/NeuronLogisticSerialization.h"
    #include "NetConnection/ConnectionFunctionGeneralSerialization.h"
    #include "NetConnection/ConnectionFunctionIdentitySerialization.h"
    
    
    namespace lib4neuro {
        struct NeuralNetwork::access {
            template<class Archive>
            static void serialize(Archive &ar, NeuralNetwork &nn, const unsigned int version) {
                ar & nn.neurons;
                ar & nn.input_neuron_indices;
                ar & nn.output_neuron_indices;
                ar & nn.connection_list;
                ar & nn.neuron_biases;
                ar & nn.neuron_bias_indices;
                ar & nn.neuron_potentials;
                ar & nn.connection_weights;
                ar & nn.inward_adjacency;
                ar & nn.outward_adjacency;
                ar & nn.neuron_layers_feedforward;
                ar & nn.neuron_layers_feedbackward;
                ar & nn.layers_analyzed;
                ar & nn.delete_weights;
                ar & nn.delete_biases;
    
                ar & nn.normalization_strategy;
    
    
    namespace boost {
        namespace serialization {
    
            /**
             * Serialization function
             * @tparam Archive Boost library template
             * @param ar Boost parameter - filled automatically during serialization!
             * @param ds NeuralNetwork instance
             * @param version Boost parameter - filled automatically during serialization!
             */
            template<class Archive>
    
            void serialize(Archive & ar, lib4neuro::NeuralNetwork & nn, const unsigned int version)
    
                lib4neuro::NeuralNetwork::access::serialize(ar, nn, version);
    
    #endif //LIB4NEURO_NEURALNETWORKSERIALIZATION_H