📄 cell.h
字号:
#ifndef __NERVE_CELL_INCLUDE
#define __NERVE_CELL_INCLUDE
#include <windows.h>
#include <vector>
#include <map>
/*
每个神经元的输出是下一个神经元的输入
每个神经元保存前一层神经元和它连线的权重值
虚拟神经元没有输入只有输出,并且每次迭代的输出都是-1
*/
class CNerve_cell
{
public:
enum {INPUT_TYPE = 0, HIDE_TYPE, VIRTUAL_TYPE, OUTPUT_TYPE};
typedef std::map<int, double> WEIGHT_MAP;
public:
CNerve_cell( int ntype )
{
db_output_val = 0.0;
db_grads = 0.0;
db_input_val = 0.0;
db_old_input = 0.0;
cell_type = ntype;
if ( ntype == VIRTUAL_TYPE)
db_output_val = db_input_val = -1;
}
int cell_type; //神经元类型
double db_grads; //所求的梯度值
//输入值
void Put_input_value ( int pos, std::vector <CNerve_cell *> & vec_cell);
void Put_input_value ( double x );
//根据公式计算输出
void Calculate();
double Get_output_value (); //返回计算结果
double Get_old_input (); //返回上次输入的值
void Put_weight ( int pos, double dbw ); //修改j层神经元与i层神经元的权重
double Get_weight (int pos); //返回某个神经元的权重
void Update_weight (int pos, double diffw);
double Get_diff_w (int pos);
void Put_diff_w ( int pos, double w);
private:
double db_output_val; //根据公式计算的输出值
double db_input_val; //输入值
double db_old_input; //保存上次输入的值
WEIGHT_MAP map_weight;
WEIGHT_MAP map_diff_w;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -