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

📄 hfneuron.h

📁 人工神经网络的源码编程
💻 H
字号:
#ifndef _PUBLIC_ANN_HOPFIELD_HFNEURON_H
#define _PUBLIC_ANN_HOPFIELD_HFNEURON_H
/*
 * public/ann/hopfield/hfneuron.h
 * 2004-05-28 by ShanLanshan
 */
#include "public/ann/annbase.h"
#include "public/ann/neuron.h"
#include "public/ann/neuron_group.h"
#include "public/ann/interface.h"

namespace ann {
	
	/* 向量元素值的读取 */
	class VectorElementValue: public IValue {
	private:
		IAnnVector *m_vec;
		ann_int m_off;
	public:
		VectorElementValue();
		VectorElementValue(IAnnVector *vec, ann_int off);
		bool set_vector_element(IAnnVector *vec, ann_int off);
		virtual ann_float get_value();
		virtual void set_value(ann_float v);
	};

	/* 神经元探针 */
	class NeuronProbe {
	private:
		IValue *m_value;
		ann_uint32 m_flag;
	public:
		static const ann_uint32 PROB_FLAG_INPUT = 0x00000001;
		static const ann_uint32 PROB_FLAG_OUTPUT = 0x00000002;
		static const ann_uint32 PROB_FLAG_DYNAMIC = 0x00000004;
		friend class Neuron;
	public:
		NeuronProbe();
		~NeuronProbe();
		void set_value(IValue *v) {m_value = v;};
		void set_value(IValue *v, ann_uint32 f) {m_value = v; m_flag = f;};
		IValue* get_value() {return m_value;};
		void set_flag(ann_uint32 f) {m_flag = f;};
		ann_uint32 get_flag() {return m_flag;};
	};

	class HFNeuron: public Neuron {
	private:
		//ann_float m_old_value;
		ann_float m_adjust;
		NeuronProbe m_input_probe;
		NeuronProbe m_output_probe;

	public:
		void set_adjust(ann_float v) {m_adjust = v;};
		ann_float get_adjust() {return m_adjust;};
		HFNeuron();
		~HFNeuron();
		/* 计算神经元的响应值 */
		virtual void respond();
	};

	class HFSimpleGroup: public NeuronSimpleGroup {
	protected:
		bool m_forget_power;
		ann_float m_learn_rate;
		bool m_regular_input_power;
		bool m_learn_adjust;
	public:
		void set_forget_power() {m_forget_power = true;};
		void set_learn_rate(ann_float v) {m_learn_rate = v;};
		void set_regular_input_power() {m_regular_input_power = true;};
		void set_learn_adjust() {m_learn_adjust = true;};

		bool get_forget_power() {return m_forget_power;};
		ann_float get_learn_rate() {return m_learn_rate;};
		bool get_regular_input_power() {return m_regular_input_power;};
		bool get_learn_adjust() {return m_learn_adjust;};
	public:
		HFSimpleGroup();
		HFSimpleGroup(int size);
		~HFSimpleGroup();
		bool init(int size);
		bool mutual_conn();
		bool mutual_conn(HFSimpleGroup &hfg);
		void learn();
		void restart();
		void work() {respond(); output(); learn();};
	};

}// namespace ann

#endif /* !_PUBLIC_ANN_HOPFIELD_HFNEURON_H */

⌨️ 快捷键说明

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