📄 hfneuron.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 + -