单神经元感知机代码
来源:互联网 发布:省份的三级联动数据库 编辑:程序博客网 时间:2024/04/30 16:40
这两天在看神经网络设计(中文版),有些地方不是很懂。因此自己动手写代码以加深理解。
顺便把代码贴上来,大家一起看看。c#写的。代码中已经有详细解释了。
付一个效果图
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace neuralNetworks
{
/// <summary>
/// 参考文献:神经网络设计_中文版 第4章
/// 乐子:2008-11-25
/// </summary>
class singlePerceptron
{
//
int R, S;//r是输入向量的维数,s是输出向量的维数,这里取s=1;
public double[,] W;//权值矩阵=int[s,r]
public double[,] B;//偏置向量b=[s,1]
public singlePerceptron(int inputDimension,int outputDimension)
{
R = inputDimension ;
S = outputDimension;
init();
}
private void init()
{
//初始化感知器
W = new double[S, R];
B = new double[S,1];
//W[0, 0] = 0.5;
//W[0, 1] = -1;
//W[0, 2] = -0.5;
//B[0, 0] = 0.5;
}
public void train(double[,] inputs,int[] outputs)
{
//训练感知器,参考p42页
int sampleCount = inputs.GetLength(0);//训练集样本个数
bool error=true;//出现计算结果和目标不一致
double sum;
int e;
while (error)
{
//用训练集迭代更新W,B
error=false ;
for (int j = 0; j < sampleCount; j++)
{
for (int i = 0; i < S; i++)
{
//W[i]*inputs[j]+B[i],W[i]是R维的,B[i]是1维的
//这里以后写个矩阵运算函数进行规范,先直接用for语句
sum=0;
for (int h = 0; h < R; h++)
{
sum = sum + W[i, h] * inputs[j, h];
}
sum = sum + B[i,0];
//传输函数
//计算e值
e =outputs[j]- transmissionFun.hardlim(sum,0);
//修正权值
if (e != 0)
{
error = true;
for (int h = 0; h < R; h++)
{
W[i,h] =W[i, h]+e * inputs[j, h];
}
B[i, 0] = B[i, 0] + e;
}
//
}
}
}
}
public int sim(double[] input)
{
double sum = 0;
for (int i = 0; i < S; i++)
{
for (int h = 0; h < R; h++)
{
sum = sum + W[i, h] * input[h];
}
sum = sum + B[i, 0];
}
return transmissionFun.hardlim(sum,0);
}
public void ToString()
{
}
}
static class transmissionFun
{
static public int hardlim(double v,double thresh)
{
if (v >= thresh)
return 1;
return 0;
}
}
}
- 单神经元感知机代码
- 神经网络(上):神经元与感知机
- 神经网络单神经元感知器的MATLAB实现
- 感知机 代码实现
- 感知机 Python代码
- 神经网络与深度学习 笔记1 感知机 S型神经元
- 神经元
- 【机器学习系列】感知机学习代码
- 感知机c/c++代码实现
- 感知机算法原理及代码实现
- 感知机算法(二)---代码实现
- 【Matlab】自编代码实现感知机
- 感知机简介及python代码简介
- MXnet代码实战之多层感知机
- 感知机 MATLAB实现(数据+代码)
- 统计学习方法---感知机算法实现代码
- 单层感知机及其代码实现
- 神经网络—神经元和神经网络MATBLE代码
- 汇编语言学习六
- dataset 像客户端输出xml
- 三色交替的下拉列表框
- ArcGis Server 9.2下载和全套License
- DebuggerStepThrough特性节省Debug时间
- 单神经元感知机代码
- linux打开ssh服务
- List in NamedQuery
- 一个数组对象的排序
- Java程序的内存分配
- 在ASP.NET中上传图片并生成缩略图的C#源码
- Test for trackback
- Windows Mobile、IPHONE、Nokia n73刷机体验
- 守护进程的调试方法