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

📄 centerneuron.h

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

#include "Neuron.h"

namespace annie
{

/** A center-neuron, the building block of a Radial basis function network.
  * Neurons of this type have a "center" which is a D-dimensional point in space,
  * where D = the number of inputs taken by the neuron.
  * The activation of this neuron is the euclidean distance between the input 
  * vector and the center point.
  * The output of this neuron is typically the result of the gaussian distribution
  * function applied to the activation
  * \todo Implement gradient-descent rule based updation of center-point
  */
class CenterNeuron : public Neuron
{
protected:
	/// The center point
	real *_center;

	/// The dimension of the center point = the size of the input vector
	int _dimension;

	/// @see Neuron::_recacheOutput
	virtual void _recacheOutput();

	/// @see Neuron::_recacheError
	virtual void _recacheError();
	
	/** Derivative of the activation function. 
	  * Used for gradient descent rule based updation of weights and
	  * centers. Not yet implemented
	  */
	ActivationFunction _dActivationFunction;

public:
	/** Constructs a center with the given label and with the 
	  * center point a random point in the given dimensional space.
	  * @param label The label to be given to the neuron
	  * @param dimension The dimension of the center-point = size of input vector
	  */
	CenterNeuron(int label, int dimension);

	/** Constructs a center with the given label and given center
	  * @param label The label to be given to the neuron
	  * @param center The center point
	  */
	CenterNeuron(int label, VECTOR center);

	/** Constructs a center with the given label and given center
	  * @param label The label to be given to the neuron
	  * @param dimension The dimension of the center-point = size of input vector
	  * @param center The center point
	  */
	CenterNeuron(int label, int dimension, real center[]);
	virtual ~CenterNeuron();

	/// Returns the center point
	VECTOR getCenter();

	/// Sets the center point
	virtual void setCenter(VECTOR center);

	/// Sets the center point
	virtual void setCenter(real center[]);
	
	/// Sets the center-neuron to receive as input the output of the given neuron
	virtual void connect(Neuron *from);
	
	/// @see Neuron::toString
	virtual std::string toString();

	/// Returns "CenterNeuron"
	virtual const char *getClassName();
	
	/** Sets the activation function of the neuron and its derivative
	  * @param f The activation function to be used (gaussian by default)
	  * @param df The derivative of the activation function (dgaussian by default).
	  *				Required for gradient descent training which is NOT YET IMPLEMENTED
	  */
	virtual void setActivationFunction(ActivationFunction f, ActivationFunction df);

	/// The dimension of the center
	virtual int getDimension();
};

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

⌨️ 快捷键说明

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