Skip to content
Snippets Groups Projects
NeuralNetworkSerialization.h 2.75 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>
    
    Martin Beseda's avatar
    Martin Beseda committed
            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;
    
    
                ar & nn.___ind1;
                ar & nn.___ind2;
                ar & nn.___ind_m1;
                ar & nn.___ind_m2;
                ar & nn.___val_m1;
    
    
    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>
    
    Martin Beseda's avatar
    Martin Beseda committed
            void serialize(Archive& ar,
                           lib4neuro::NeuralNetwork& nn,
                           const unsigned int version) {
                lib4neuro::NeuralNetwork::access::serialize(ar,
                                                            nn,
                                                            version);
    
    #endif //LIB4NEURO_NEURALNETWORKSERIALIZATION_H