博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单单层bp神经网络
阅读量:6256 次
发布时间:2019-06-22

本文共 1798 字,大约阅读时间需要 5 分钟。

单层bp神经网络是解决线性可回归问题的。

该代码是论文:

的实现

代码是python,有注释,非常容易看懂。

#-*- coding: UTF-8 -*-from numpy import exp,array,random,dotclass NeuralNetwork():    def __init__(self):        # 生成随机数种子        random.seed(1)        # 对每个神经元建模,含有三个输入和一个输出连接        # 对3 * 1的矩阵赋予随机权重值,范围[-1,1],平均数为0        self.synaptic_weights = 2 * random.random((3,1)) - 1    # sigmoid 函数    # 正规化操作,使得每个元素都是0~1    def __sigmoid(self,x):        return 1 / (1 + exp(-x))    # sigmoid 函数求导    # sigmoid 函数梯度    # 表示我们对当前权重的置信程度    def __sigmoid_derivative(self,x):        return x * (1-x)    # 神经网络——思考    def think(self,inputs):        # 把输入传递给神经网络        return self.__sigmoid(dot(inputs,self.synaptic_weights))    # 神经网络    def train(self,training_set_inputs,training_set_outputs,number_of_training):        for iteration in xrange(number_of_training):            # 训练集导入神经网络            output = self.think(training_set_inputs)            # 计算误差            error  = training_set_outputs - output            # 将误差、输入和S曲线相乘            # 对于置信程度低的权重,调整程度也越大            # 为0的输入值不会影响权重            adjustment = dot(training_set_inputs.T,error * self.__sigmoid_derivative(output))            # 调整权重            self.synaptic_weights += adjustmentif __name__ == "__main__":    # 初始化神经网络    neuralnetwork = NeuralNetwork()    print "训练前的权重"    print neuralnetwork.synaptic_weights    # 训练集,四个样本,3个输入,1个输出    training_set_inputs = array([[0,0,1],                                 [1,1,1],                                 [1,0,1],                                 [0,1,1]])    training_set_outputs = array([[0,1,1,0]]).T    # 训练神经网络    # 10000次训练    neuralnetwork.train(training_set_inputs,training_set_outputs,10000)    print "训练后的权重"    print neuralnetwork.synaptic_weights    # 新数据测试    print "考虑[1,0,0]"    print neuralnetwork.think(array([1,0,0]))

转载地址:http://igjsa.baihongyu.com/

你可能感兴趣的文章
基于 OAuth 安全协议的 Java 应用编程1
查看>>
使用Golang利用ectd实现一个分布式锁
查看>>
javaweb学习总结五(内省、beanUtils工具包)
查看>>
An easy to use android color picker library
查看>>
iOS10全新推送功能的实现
查看>>
C#中容易被忽视的细节整理
查看>>
php内核分析(二)-ZTS和zend_try
查看>>
获取form对象
查看>>
不确定人数的抽奖方法
查看>>
win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
查看>>
sh脚本——#!/bin/bash
查看>>
MYSQL-innodb性能优化几个点
查看>>
什么是Mixin模式:带实现的协议
查看>>
Oracle SID爆破工具SidGuess
查看>>
escape、encodeURI以及encodeURIComponent
查看>>
UIView加入手势 然后UITableView 加入进这个View 导致UITableView 的单元格点击事件无效...
查看>>
Vertex and FragmentShader顶点与片段着色器
查看>>
.Net中的AOP系列之《将AOP作为架构工具》
查看>>
谈谈站桩
查看>>
使用 VisualVM 进行性能分析及调优
查看>>