单层感知器神经网络
来源:互联网 发布:苹果mac解压rar 编辑:程序博客网 时间:2024/09/21 08:58
/***********************************************************************/ /* 文件:MC_Neuron.h *//* 版权: 转载请注明来自mni2005的博客[http://blog.csdn.net/mni2005] *//* 作者: 莫问 */ /* 日期: 2014-06-04 *//* 描述:单层感知器神经网络头文件 *//***********************************************************************/ #ifndef _AFX_MC_NEURON_INCLUDE_H_#define _AFX_MC_NEURON_INCLUDE_H_ class Neuron{public:Neuron();public:bool Train(float expect, float mX1, float mX2);float Compute(float mX1, float mX2);void GetWeight(float &mX1, float &mX2);private:float ActivateFunc(float fSum);private:float m_Weight[2]; //权值向量float m_Bias; //偏差float m_alpha; //学习速率 };#endif //_AFX_MC_NEURON_INCLUDE_H_
/***********************************************************************/ /* 文件:MC_Neuron.cpp *//* 版权: 转载请注明来自mni2005的博客[http://blog.csdn.net/mni2005] *//* 作者: 莫问 */ /* 日期: 2014-06-04 *//* 描述: 单层感知器神经网络实现 *//***********************************************************************/ #include "MC_Neuron.h"Neuron::Neuron(){m_Weight[0] = 0.01f;m_Weight[1] = 0.01f;m_Bias = 0.01f;m_alpha = 0.01f;}//激活函数float Neuron::ActivateFunc(float Yn){if(Yn >=0.0f) { return 1.0f; }else{return 0.0f;}}float Neuron::Compute(float mX0, float mX1){float Yn = m_Bias*1.0f + m_Weight[0]*mX0 + m_Weight[1]* mX1;return ActivateFunc(Yn);}void Neuron::GetWeight(float &mX1, float &mX2){mX1 = m_Weight[0];mX2 = m_Weight[1];}bool Neuron::Train(float expect, float mX0, float mX1){float Yn = Compute(mX0, mX1);//调整权值感知器向量if( Yn != expect ){m_Weight[0] += ( m_alpha * (expect - Yn) * mX0 );m_Weight[1] += ( m_alpha * (expect - Yn) * mX1 ); m_Bias += ( m_alpha * (expect - Yn) * 1.0f ); return false;}return true;}
/***********************************************************************/ /* 文件:NeuronTest.cpp *//* 版权: 转载请注明来自mni2005的博客[http://blog.csdn.net/mni2005] *//* 作者: 莫问 */ /* 日期: 2014-06-04 *//* 描述: 用逻辑与或运算,完成单层感知器神经网络测试 *//***********************************************************************/ #include <stdio.h>#include <stdlib.h>#include "MC_Neuron.h"int main(int argc, char* argv[]){ /*//逻辑与 训练样本 float slps[][3] = { {1.0, 1.0, 1.0}, {0.0, 1.0, 0.0}, {1.0, 0.0, 0.0}, {0.0, 0.0, 0.0}, }; *///逻辑或 训练样本 float slps[][3] = { {1.0, 1.0, 1.0}, {0.0, 1.0, 1.0}, {1.0, 0.0, 1.0}, {0.0, 0.0, 0.0}, }; Neuron neuron;bool bOK;//开始训练do{bOK = true;for (int i=0; i<4; i++){ float* pSlp = slps[i]; if(!neuron.Train(pSlp[2], pSlp[0], pSlp[1])) { bOK = false; }}}while(!bOK);//训练结束,输出权值float weight1, weight2;neuron.GetWeight(weight1, weight2);printf("weight1=%f, weight2=%f\n", weight1, weight2);//验证感知器训练结果for (int i=0; i<4; i++){ float* pSlp = slps[i];float fvalue = neuron.Compute(pSlp[0], pSlp[1]);printf("value=%f, expect=%f\n", fvalue, pSlp[2]);}system("pause");return 0;}
0 0
- 单层感知器神经网络
- 神经网络学习之单层感知器
- 人工神经网络(二)单层感知器
- 人工神经网络(二)单层感知器
- 使用nntool神经网络工具箱建立单层感知器
- 文本分类算法之--单层感知器的神经网络
- 神经网络之单层感知器网络(人工智能)
- 人工神经网络(三)单层感知器代码实现
- 人工神经网络(三)单层感知器代码实现
- 单层感知器
- 单层感知器
- 单层感知器
- 单层感知器-学习实践
- 单层感知器、线性神经网络、几种数据结构算法的学习报告
- 【摘要与笔记1】-单层感知器,两层神经网络与深度学习
- 神经网络学习笔记(一) 单层感知机
- 单层感知机与多层前馈神经网络
- 单层神经网络、多层感知机、深度学习的总结
- wamp环境的搭建
- epoll详解
- PHP翻转抽奖程序
- 三大框架:使用数据源dbcp注意
- 将字符串中的空格用 代替
- 单层感知器神经网络
- 服务器内存问题总结
- google可用地址
- 数据库设计三大范式
- AAC ADTS格式分析
- 贝塞尔曲线 总结
- iOS—SQLite 3封装库FMDB
- 昨天又面试失败,但是我要屡败屡战
- JVectorMap是一个优秀的兼容性强的jQuery地图插件。