www.pudn.com > 基于VC的神经网络开发程序包(源码).rar > Network.h
#ifndef _NETWORK_H #define _NETWORK_H #include "Neuron.h" #include "InputNeuron.h" #include "Link.h" #include#include namespace annie { /** Another core class of the annie library, a generic template for a neural network. * This class is not instantiable itself. Different types of networks must be derived * from this class. * * The common information held by each network is the number of inputs (i.e., * values that are obtained from the environment), the number of outputs (i.e., * values that are given to the environment) and a string of meta data than can * be used by users as pleased. * \todo The copy constructor */ class Network { protected: /** Number of inputs taken in by the network. * There should be these many InputNeurons in the network */ int _nInputs; /// Number of outputs given by the network int _nOutputs; /// A string of meta data, can be used by users as pleased std::string _metaData; public: /** Default constructor. * * @param inputs Number of inputs taken in by the network * @param outputs Number of outputs given out by the network */ Network(int inputs,int outputs); /** Copy constructor. NOT YET IMPLEMENTED */ Network(Network &); virtual ~Network(); /** The output of the network given a stimulus * * Note that instantiable sub-classes of Network must * define this function. How the network determines the output * given the input is what characterizes it. * @param input The input given to the network, a VECTOR of size getInputCount() * @return The corresponding output vector (size = getOutputCount()) */ virtual VECTOR getOutput(VECTOR &input)=0; /** Wrapper function, calls getOutput(VECTOR &input) */ virtual VECTOR getOutput(real *input); /** Sets the meta data of the network * Meta data is arbitrary text that you may want to tag the network * with. This has no effect on the network output etc */ virtual void setMetaData(const char *metaData); /** Sets the meta data of the network * Meta data is arbitrary text that you may want to tag the network * with. This has no effect on the network output etc */ virtual void setMetaData(std::string metaData); /// Returns the meta data string virtual std::string getMetaData(); /// Number of inputs taken in by the network virtual int getInputCount(); /// Number of outputs given by the network virtual int getOutputCount(); /** For reflection. * All sub-classes MUST implement this method, which should * just return class name */ virtual const char* getClassName()=0; /// Finds the name of the network class from the given file static std::string getNetworkClassName(const char *filename); /** Save the network structure to the given text file. * The file format is quite simple and is commented. * @param filename Name of the file to save network information into */ virtual void save(const char *filename)=0; }; }; //namespace annie #endif // define _NETWORK_H