深度学习之感知器AND(与)实现C++代码
来源:互联网 发布:淘宝千人千面刷单 编辑:程序博客网 时间:2024/06/08 06:26
利用深度学习的感知器算法实现AND(与)操作
感知器类头文件:
#include <vector>#include <iostream>using namespace std;class Perceptron//感知器{public: Perceptron(){} Perceptron(const vector<vector<double>> &input, const int times, const double rate); double UsePerceptron(const vector<double> &input);//使用生成的权值进行计算 void CheckWeight();//打印权值private: vector<double> weightOutput;//计算出的权值向量 double bias;//偏置量 double Func(double x);//激活函数(阶跃函数)};
感知器类实现文件:
#include "Perceptron.h"Perceptron::Perceptron(const vector<vector<double>> &input, const int times, const double rate){ int sampleNum = input.size();//共有多少组数据 int weightNum = input[0].size() - 1;//每组数据自变量个数(最后一个为该组结果) for (int i = 0; i < weightNum; i++) { weightOutput.push_back(0); } bias = 0;//初始化 for (int trainNum = 0; trainNum < times; trainNum++)//训练次数 { for (int i = 0; i < sampleNum; i++) { double sum = bias; for (int j = 0; j < weightNum; j++) { sum += input[i][j] * weightOutput[j]; } sum = Func(sum);//每次迭代的结果 sum = input[i][weightNum] - sum;//与真实值的差 for (int j = 0; j < weightNum; j++) { weightOutput[j] += rate*sum*input[i][j]; } bias += rate*sum;//更新权值 } }}double Perceptron::Func(double x)//激活函数{ if (x > 0) return 1; else return 0;}double Perceptron::UsePerceptron(const vector<double> &input){ double output = bias; for (unsigned int i = 0; i < input.size(); i++) output += input[i] * weightOutput[i]; return Func(output);}void Perceptron::CheckWeight(){ for (unsigned i = 0; i < weightOutput.size(); i++) cout << "W: "<<weightOutput[i] << " " << endl; cout << "bias: "<<bias << endl;}
主函数测试感知器:
#include <iostream>#include "Perceptron.h"using namespace std;int main(){ vector<vector<double>> AND = { { 0, 0, 0 }, { 0, 1, 0 }, { 1, 0, 0 }, { 1, 1, 1 } }; Perceptron Cand(AND, 10, 0.1); Cand.CheckWeight(); vector<double> test = { 1, 1 }; cout << Cand.UsePerceptron(test) << endl;}
结果显示:
阅读全文
0 0
- Office 2016激活教程(附KMS激活软件)
- 深度学习论文笔记(七)---Deconvolution network-2016年(Learning Deconvolution Network for Semantic Segmentation )
- 前端基础进阶(八):详细图解jQuery对象,以及如何扩展jQuery插件
- zeppelin源码分析——server端
- Navicat for MySQL 查看BLOB字段内容
- 深度学习之感知器AND(与)实现C++代码
- Hadoop集群搭建过程问题总结
- 二叉排序树
- hdoj 1180 诡异的楼梯 bfs bfs bfs
- 深入解析ThreadLocal类
- greenplum(五) 性能小结记录
- HashSet源码解析
- Recurrent Entity Network笔记
- POJ 2891 Strange Way to Express Integers