标签:err 合作 概念 数据 结束 领域 bsp 大量 width
按照专业解释神经网络是:一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。
神经网络是智能控制技术的主要分支之一。本书的主要内容有:神经网络的概念,神经网络的分类与学习方法,前向神经网络模型及其算法,改进的BP网络及其控制、辨识建模,基于遗传算法的神经网络,基于模糊理论的神经网络,RBF网络及其在混沌背景下对微弱信号的测量与控制,反馈网络,Hopfield网络及其在字符识别中的应用,支持向量机及其故障诊断,小波神经网络及其在控制与辨识中的应用。
准备制作硬件,包括网络学习算法的研究。这方面的工作也称为技术模型研究。
public override double Compute(double[] input) { if (input.Length != InputsCount) throw new ArgumentException("输入向量的长度错误。"); double sum = 0.0; for (int i = 0; i < Weights.Length; i++) { sum += Weights[i] * input[i]; } sum += Threshold; double output = ActivationFunction.Function(sum); Output = output; return output; }
public ActivationNetwork(IActivationFunction function, int inputsCount, params int[] neuronsCount) : base(inputsCount, neuronsCount.Length) { // neuronsCount 指定神经网络每层中的神经元数量。 for (int i = 0; i < Layers.Length; i++) { Layers[i] = new ActivationLayer( neuronsCount[i], // 每个神经元只有一个输出,上一层有多少个神经元也就有多少个输出,也就是这一层需要有多少输入 (i == 0) ? inputsCount : neuronsCount[i - 1], function); } }
/// <summary> /// 神经网络层 /// </summary> /// <param name="neuronsCount">该层神经元的个数</param> /// <param name="inputsCount">该层的输入个数</param> /// <param name="function">激活函数</param> public ActivationLayer(int neuronsCount, int inputsCount, IActivationFunction function) : base(neuronsCount, inputsCount) { for (int i = 0; i < Neurons.Length; i++) Neurons[i] = new ActivationNeuron(inputsCount, function); } public void SetActivationFunction(IActivationFunction function) { for (int i = 0; i < Neurons.Length; i++) { ((ActivationNeuron)Neurons[i]).ActivationFunction = function; } }
/// 单个训练样本 /// </summary> /// <param name="input"></param> /// <param name="output"></param> /// <returns></returns> public double Run(double[] input, double[] output) { // 网络对单个输入拿到对应的输出值 double[] networkOutput = _network.Compute(input); Layer layer = _network.Layers[0]; // 统计总误差 double error = 0.0; // 了感知器(感知机)算法 for (int j = 0; j < layer.Neurons.Length; j++) { // 误差值,用已知的值减去网络计算出来的值 double e = output[j] - networkOutput[j]; // 如果存在误差,那么更新权重 if (e != 0) { ActivationNeuron perceptron = (ActivationNeuron)layer.Neurons[j]; for (int i = 0; i < perceptron.Weights.Length; i++) { // 用学习率乘以误差乘以输入值更新值 perceptron.Weights[i] += _learningRate * e * input[i]; } perceptron.Threshold += _learningRate * e; error += Math.Abs(e); } } return error; }
/// <summary> /// 单个训练样本 /// </summary> /// <param name="input"></param> /// <param name="output"></param> /// <returns></returns> public double Run(double[] input, double[] output) { double[] networkOutput = _network.Compute(input); Layer layer = _network.Layers[0]; // 统计总误差 double error = 0.0; for (int j = 0; j < layer.Neurons.Length; j++) { // 误差值,用已知的值减去网络计算出来的值 double e = output[j] - networkOutput[j]; // 如果存在误差,那么更新权重 if (e != 0) { ActivationNeuron perceptron = (ActivationNeuron)layer.Neurons[j]; for (int i = 0; i < perceptron.Weights.Length; i++) { perceptron.Weights[i] = RandRange.GetRan(); } perceptron.Threshold = RandRange.GetRan(); error += Math.Abs(e); } } return error; }
标签:err 合作 概念 数据 结束 领域 bsp 大量 width
原文地址:https://www.cnblogs.com/shiningleo007/p/12345507.html