00001 #ifndef _NETWORK_H 00002 #define _NETWORK_H 00003 00004 #include "Neuron.h" 00005 #include "InputNeuron.h" 00006 #include "Link.h" 00007 #include <vector> 00008 #include <string> 00009 00010 namespace annie 00011 { 00012 00023 class Network 00024 { 00025 protected: 00029 uint _nInputs; 00030 00032 uint _nOutputs; 00033 00035 std::string _metaData; 00036 public: 00042 Network(int inputs,int outputs); 00043 00045 Network(Network &); 00046 00047 virtual ~Network(); 00048 00057 virtual Vector getOutput(const Vector &input)=0; 00058 00060 virtual Vector getOutput(real *input); 00061 00066 virtual void setMetaData(const char *metaData); 00067 00072 virtual void setMetaData(std::string metaData); 00073 00075 virtual std::string getMetaData(); 00076 00078 virtual uint getInputCount() const; 00079 00081 virtual uint getOutputCount() const; 00082 00087 virtual const char* getClassName() const =0; 00088 00090 static std::string getNetworkClassName(const char *filename); 00091 00096 virtual void save(const std::string &filename)=0; 00097 }; 00098 00099 }; //namespace annie 00100 #endif // define _NETWORK_H 00101