📄 neuralnet.h
字号:
// NeuralNet.h: interface for the CNeuralNet class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_NEURALNET_H__B2919797_A46A_40AD_81FE_C67E4BBD03EE__INCLUDED_)
#define AFX_NEURALNET_H__B2919797_A46A_40AD_81FE_C67E4BBD03EE__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <vector>
#include <time.h>
#include <math.h>
#include "GenAlg.h"
using namespace std;
struct SNeuron
{
//输入到神经网络的输入数的数目
int m_NumInputs;
//每一个输入对应的权值
vector<double> m_vecWeight;
//构造函数
SNeuron(int NumInputs);
};
struct SNeuronLayer
{
//该层的神经元的数目
int m_NumNeurons;
//每一个神经元,其元素是神经元结构体
vector<SNeuron> m_vecNeurons;
//构造函数
SNeuronLayer(int NumNeurons,
int NumInputsPerNeuron);
};
class CNeuralNet
{
private:
int m_NumInputs;
int m_NumOutputs;
int m_NumHiddenLayers;
int m_NeuronsPerHiddenLyr;
//储存所有层的容器,每一个元素是一个SNeuronLayer结构体
vector<SNeuronLayer> m_vecLayers;
public:
int m_Weights;//记录着基因的总长度(要进化的所有权值的个数)
CNeuralNet();
void CreateNet();
//从神经网络里面获得权值
vector<double> GetWeights()const;
//计算出基因交叉时,交叉点的位置,放进一个容器里面,同时初始化
vector<int> CalculateSplitPoints();
//用新的权值更新旧的权值
void PutWeights(vector<double> &weights);
//通过输入,计算输出
vector<double> Update(vector<double> inputs);
//sigmoid (s型)响应曲线
inline double Sigmoid(double activation, double response) const;
};
#endif // !defined(AFX_NEURALNET_H__B2919797_A46A_40AD_81FE_C67E4BBD03EE__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -