python神经网络库_使用Python scikit-learn 库实现神经网络算法

本文介绍了神经网络算法的基础知识,特别是多层向前神经网络,强调了Backpropagation算法的工作原理。通过Python实现了一个简单的神经网络类NeuralNetwork,并展示了如何用它来解决XOR问题和手写数字识别。此外,还讨论了scikit-learn中的BernoulliRBM在手写数字识别任务中的应用。
摘要由CSDN通过智能技术生成

1:神经网络算法简介

2:Backpropagation算法详细介绍

3:非线性转化方程举例

4:自己实现神经网络算法NeuralNetwork

5:基于NeuralNetwork的XOR实例

6:基于NeuralNetwork的手写数字识别实例

7:scikit-learn中BernoulliRBM使用实例

8:scikit-learn中的手写数字识别实例

一:神经网络算法简介

1:背景

以人脑神经网络为启发,历史上出现过很多版本,但最著名的是backpropagation

2:多层向前神经网络(Multilayer Feed-Forward Neural Network)

Center

多层向前神经网络组成部分

输入层(input layer),隐藏层(hiddenlayer),输出层(output layer)

每层由单元(units)组成

输入层(input layer)是由训练集的实例特征向量传入

经过连接结点的权重(weight)传入下一层,一层的输出是下一层的输入

隐藏层的个数是任意的,输出层和输入层只有一个

每个单元(unit)也可以被称作神经结点,根据生物学来源定义

上图称为2层的神经网络(输入层不算)

一层中加权的求和,然后根据非线性的方程转化输出

作为多层向前神经网络,理论上,如果有足够多的隐藏层(hidden layers)和足够大的训练集,可以模拟出任何方程

3:设计神经网络结构

3.1使用神经网络训练数据之前,必须确定神经网络层数,以及每层单元个数

3.2特征向量在被传入输入层时通常被先标准化(normalize)和0和1之间(为了加强学习过程)

3.3离散型变量可以被编码成每一个输入单元对应一个特征可能赋的值

比如:特征值A可能取三个值(a0,a1,a2),可以使用三个输入单元来代表A

如果A=a0,那么代表a0的单元值就取1,其他取0

如果A=a1,那么代表a1的单元值就取1,其他取0,以此类推

3.4神经网络即可以用来做分类(classification)问题,也可以解决回归(regression)问题

3.4.1对于分类问题,如果是2类,可以用一个输入单元表示(0和1分别代表2类)

如果多于两类,每一个类别用一个输出单元表示

所以输入层的单元数量通常等于类别的数量

3.4.2没有明确的规则来设计最好有多少个隐藏层

3.4.2.1根据实验测试和误差,以及准确度来实验并改进

4:算法验证——交叉验证法(Cross- Validation)

Center

解读: 有一组输入集A,B,可以分成三组,第一次以第一组为训练集,求出一个准确度,第二次以第二组作为训练集,求出一个准确度,求出准确度,第三次以第三组作为训练集,求出一个准确度,然后对三个准确度求平均值

二:Backpropagation算法详细介绍

Center

1:通过迭代性来处理训练集中的实例

2:输入层输入数

经过权重计算得到第一层的数据,第一层的数据作为第二层的输入,再次经过权重计算得到结果,结果和真实值之间是存在误差的,然后根据误差,反向的更新每两个连接之间的权重

3:算法详细介绍

输入:D : 数据集,| 学习率(l

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值