⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trainingset.h

📁 基于VC开发的神经网络工具箱
💻 H
字号:
#ifndef _TRAININGSET_H
#define _TRAININGSET_H

#include "Neuron.h"
#include "Network.h"

namespace annie
{

/** This is an abstraction for the set of patterns which are used to
  * "train" a network. It will contain sets of input and corresponding
  * desired-output vectors which will be used by the training algorithms
  * of supervised networks, such as the MultiLayerNetwork and RadialBasisNetwork
  *
  * You can save TrainingSets into a file. The file can be text, a simple format
  * so that you can construct the file from other programs as well, or the file
  * can be a binary file which is understood only by this library. Binary files
  * are generally smaller and quicker to load.
  *
  * You can use utilities provided with the library distribution to convert
  * from one format to the other.
  */
class TrainingSet
{
protected:
	/// The set of input vectors
	std::vector< VECTOR > _inputs;

	/// The set of corresponding desired output vectors
	std::vector< VECTOR > _outputs;

	/// An iterator through the input vectors
	std::vector< VECTOR >::iterator _inputIter;

	/// Iterator through the output vectors
	std::vector< VECTOR >::iterator _outputIter;

	/// Size of an input vector
	int _nInputs;

	/// Size of an output vector
	int _nOutputs;

	/// Save the training set in binary format to the given filename
	void save_binary(const char *filename);

	/// Save the file in text format to the given filename
	void save_text(const char *filename);

	/// Load from a binary file
	void load_binary(const char *filename);

	/// Load from a text file
	void load_text(const char *filename);
public:
	/** Create an empty training set
	  * @param in The size of an input vector
	  * @param out The size of an output vector
	  */
	TrainingSet(int in,int out);

	/** Create a tranining set from a file.
	  * @param filename The name of the file
	  * @param file_type The type of the file (annie::BINARY_FILE) or (annie::TEXT_FILE). TEXT_FILE by default
	  */
	TrainingSet(const char *filename,int file_type = TEXT_FILE);

	virtual ~TrainingSet();

	/// Add an input and correspoding output vector
	void addIOpair(real *input,real *output);

	/** Add an input and corresponding output vector
	  * @throws Exception If the input vector size is not the same as getInputSize()
	  *					or the output vector size is not the same as getOutputSize()
	  */
	void addIOpair(VECTOR input,VECTOR output);

	/** Initialize the training set so that the first call to
	  * getNextPair() gives the first I/O pair stored.
	  * @see getNextPair
	  */
	virtual void initialize();

	/** Has a cycle through all input/output pairs been completed?
	  * @return true if all input/output pairs have been seen through getNextPair
	  * @see getNextPair
	  * @see initialize
	  */
	virtual bool epochOver();

	/// The number of input/desired-output vector pairs in the training set
	virtual int getSize();

	/// The size of an input vector
	virtual int getInputSize();

	/// The size of an output vector
	virtual int getOutputSize();

	/** Returns the next input/output vector pair.
	  * You would typically use this in a fashion somewhat like:
	  * \code
	  * TrainingSet T("trset_file");
	  * T.initialize();
	  * VECTOR in,out;
	  * while (!T.epochOver())
	  * {
	  *		T.getNextPair(in,out);
	  *		// do what you need to with in and out
	  * }
	  * \endcode
	  * @param input The input vector is returned here
	  * @param desired The corresponding desired output vector is returned here
	  */
	virtual void getNextPair(VECTOR &input, VECTOR &desired);

	/// Allows you to print the TrainingSet onto a stream
	friend std::ostream& operator << (std::ostream& s, TrainingSet &T);
	
	/** Saves the training set to a file.
	  * @param filename The name of the file to save the training set to
	  * @param file_type The type of file to generate (annie::BINARY_FILE) or (annie::TEXT_FILE). Default is TEXT_FILE
	  */
	virtual void save(const char *filename, int file_type = TEXT_FILE);

	/// Returns "TrainingSet"
	virtual const char *getClassName();
};

}; //namespace annie
#endif // define _TRAININGSET_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -