python bp神经网络分类预测结果图_深度学习入门(四)BP神经网络——数字分类...

采用的是python中机器学习库sklearn图片数据

sklearn简要介绍:

#sklearn是Python中的一个机器学习包

from sklearn.datasets import load_digits #载入Sklearn

import pylab as pl

digits=load_digits()#载入数据集(都是数字图片)

print(digits.data.shape)

#一共有1797张图片

#把8*8的图片以64列排放

pl.gray()#灰度化图片

pl.matshow(digits.images[0])

pl.show()

结果:

数字识别代码部分:

import numpy as np

from sklearn.datasets import load_digits#载入Sklearn

from sklearn.preprocessing import LabelBinarizer#标签二值化

from sklearn.cross_validation import train_test_split#切分数据,把数据切分为训练数据与测试数据

#激活函数 目前新的神经网络已经不用此激活函数了,太旧了

def sigmoid(x):

return 1/(1+np.exp(-x))

def dsigmoid(x):#激活函数的倒数

return x*(1-x)

return x*(1-x)

class NeuralNetwork:#定义神经元类

def __init__(self,layers):##(64,100,10) 输入,隐藏层,输出层

#权值的初始化,范围-1到1

self.V = np.random.random((layers[0]+1,layers[1]+1))*2-1#"+1"是偏置

self.W = np.random.random((layers[1]+1,layers[2]))*2-1

def train(self,X,y,lr=0.11,epochs=10000):#输入,标签,学习率,迭代次数

#添加偏置

temp = np.ones([X.shape[0],X.shape[1]+1])

#添加偏置

temp = np.ones([X.shape[0],X.shape[1]+1])#构建一个比X多一列的矩阵,矩阵元素值均为1

temp[:,0:-1] = X

X = temp

#训练思想

#10000个数据分成100个批次训练,每次训练100个,可以加快训练速度

for n in range(epochs+1):

i = np.random.randint(X.shape[0]) #随机选取训练集里面的一行,即一个数据

x = [X[i]]

x = np.atleast_2d(x)#转为2维数据

L1 = sigmoid(np.dot(x,self.V))#隐层输出

L2 = sigmoid(np.dot(L1,self.W))#输出层输出

#L2的倒数=理想输出-实际输出*L2经过激活函数的倒数 i代表标签

#L1的倒数=L2的倒数*权值(上一层的反馈)*L1进过激活函数的倒数

L2_delta = (y[i]-L2)*dsigmoid(L2)

L1_delta= L2_delta.dot(self.W.T)*dsigmoid(L1)

self.W += lr*L1.T.dot(L2_delta)

self.V += lr*x.T.dot(L1_delta)

#每训练1000次预测一次准确率

if n%1000==0:

predictions = []

for j in range(X_test.shape[0]):

o = self.predict(X_test[j])

predictions.append(np.argmax(o))#获取预测结果

accuracy = np.mean(np.equal(predictions,y_test))#求平均

print('epoch:',n,'accuracy:',accuracy)#打印循环周期和准确率

def predict(self,x):

#添加偏置

temp = np.ones(x.shape[0]+1)#构建一个比X多一列的矩阵,矩阵元素值均为1

temp[0:-1] = x

x = temp

x = np.atleast_2d(x)#转为2维数据

L1 = sigmoid(np.dot(x,self.V))#隐层输出

L2 = sigmoid(np.dot(L1,self.W))#输出层输出

return L2

#主程序开始

#载入数据

digits = load_digits()#载入数据

X = digits.data#数据

y = digits.target#标签

#输入数据归一化

X -= X.min()#X的数据都减去X的最小值  然后/最大值 把X归一化到0-1之间

X /= X.max()

nm = NeuralNetwork([64,100,10])#创建网络

X_train,X_test,y_train,y_test = train_test_split(X,y) #分割数据1/4为测试数据,3/4为训练数据

labels_train = LabelBinarizer().fit_transform(y_train)#标签二值化     0,8,6   0->1000000000  3->0001000000

labels_test = LabelBinarizer().fit_transform(y_test)#标签二值化

print('start')

nm.train(X_train,labels_train,epochs=20000)

print('end')

结果:迭代20000次,准确率的变化

start

epoch: 0 accuracy: 0.0822222222222

epoch: 1000 accuracy: 0.697777777778

epoch: 2000 accuracy: 0.82

epoch: 3000 accuracy: 0.891111111111

epoch: 4000 accuracy: 0.895555555556

epoch: 5000 accuracy: 0.924444444444

epoch: 6000 accuracy: 0.931111111111

epoch: 7000 accuracy: 0.931111111111

epoch: 8000 accuracy: 0.944444444444

epoch: 9000 accuracy: 0.94

epoch: 10000 accuracy: 0.957777777778

epoch: 11000 accuracy: 0.942222222222

epoch: 12000 accuracy: 0.955555555556

epoch: 13000 accuracy: 0.957777777778

epoch: 14000 accuracy: 0.955555555556

epoch: 15000 accuracy: 0.962222222222

epoch: 16000 accuracy: 0.953333333333

epoch: 17000 accuracy: 0.953333333333

epoch: 18000 accuracy: 0.966666666667

epoch: 19000 accuracy: 0.96

epoch: 20000 accuracy: 0.964444444444

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Koa框架

一、认识Koa 前面我们已经学习了express,另外一个非常流行的Node Web服务器框架就是Koa。 Koa官方的介绍: koa:next generation web framework for node.js;koa:node.js的下一代web框架; 事实上&#x…

SPOJ GSS2 Can you answer these queries II (线段树离线) - xgtao -

Can you answer these queries II 这是一道线段树的题目&#xff0c;维护历史版本&#xff0c;给出N(<100000)个数字(-100000<x<100000),要求求出在[l,r]区间里面的连续序列的最大值&#xff0c;并且重复的数字可以加入序列但是值不能再计算。 本题明显使用线段树,它只…

Node使用MySQL

一、认识mysql2 如何可以在Node的代码中执行SQL语句来&#xff0c;这里我们可以借助于两个库&#xff1a; mysql&#xff1a;最早的Node连接MySQL的数据库驱动&#xff1b;mysql2&#xff1a;在mysql的基础之上&#xff0c;进行了很多的优化、改进&#xff1b;目前相对来说&a…

java安装后在哪里打开_冷却塔声屏障安装后降噪效果不理想,原因出在哪里?...

现有冷却塔大部分产品都不能满足噪音环保标准&#xff0c;只有少数几种低吨位超低噪声型号的冷却塔可以满足少部分区域噪声标准要求。在一些商住混合区&#xff0c;冷却塔的出风口强烈的噪声和热气往往干扰附近居民不得安宁&#xff0c;所以冷却塔的噪声问题成为环境投诉的热点…

iOS10 权限崩溃问题

iOS10 权限崩溃问题 原文: http://blog.csdn.net/runleelrg/article/details/51673025 今天 手机升级了 iOS10 Beta&#xff0c;然后用正在开发的项目 装了个ipa包&#xff0c;发现点击有关 权限访问 直接Crash了&#xff0c;并在控制台输出了一些信息&#xff1a; This app h…

Koa框架——coderhub实战

https://github.com/zep03/koa-coderhub/commits/main 一、coderhub功能接口说明 Coderhub旨在创建一个程序员分享生活动态的平台。 完整的项目接口包括&#xff1a; 面向用户的业务接口&#xff1b;面向企业或者内部的后台管理接口&#xff1b; 完成的功能如下&#xff1a;…

python 协程_Python多任务协程

协程协程&#xff0c;又称微线程&#xff0c;纤程。英文名Coroutine。协程是python个中另外一种实现多任务的方式&#xff0c;只不过比线程更小占用更小执行单元(理解为需要的资源)。为啥说它是一个执行单元&#xff0c;因为它自带CPU上下文。这样只要在合适的时机&#xff0c;…

python局域网大文件_[源码]Python简易http服务器(内网渗透大文件传输含下载命令)...

Python简易http服务器源码import SimpleHTTPServerimport SocketServerimport sysPORT 80if len(sys.argv) ! 2:print("use: web.exe port")else:PORT int(sys.argv[1])Handler SimpleHTTPServer.SimpleHTTPRequestHandlerhttpd SocketServer.TCPServer(("&…

CoderHub接口文档

CoderHub接口文档 Coderhub旨在创建一个程序员分享生活动态的平台。 完成的功能如下&#xff1a; 用户管理系统 内容管理系统 内容评论管理 内容标签管理 文件管理系统 接口完整请求示例&#xff1a;http://127.0.0.1:8000/users github仓库&#xff1a;https://github.com…

Spring 概况

网站&#xff1a;http://spring.io/ http://projects.spring.io/spring-framework Spring是一个开源框架&#xff0c;为了解决企业应用开发的复杂性而创建的&#xff0c;但现在已经不止应用于企业应用。 是一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面&#xff…

属于python应用领域的有数据可视化_Python数据可视化

译者序前 言第1章 数据可视化概念框架11.1 数据、信息、知识和观点21.1.1 数据21.1.2 信息21.1.3 知识31.1.4 数据分析和观点31.2 数据转换41.2.1 数据转换为信息41.2.2 信息转换为知识71.2.3 知识转换为观点71.3 数据可视化历史81.4 可视化如何帮助决策101.4.1 …

JavaScript高级之构造函数和原型

1.1 概述 在典型的 OOP 的语言中&#xff08;如 Java&#xff09;&#xff0c;都存在类的概念&#xff0c;类就是对象的模板&#xff0c;对象就是类的实例&#xff0c;但在 ES6之前&#xff0c; JS 中并没用引入类的概念。 ES6&#xff0c; 全称 ECMAScript 6.0 &#xff0c;2…

wget python3_python wget

wget -nH &#xff0d;K -E -d -np -L -r http://flatfull.com/themes/scale/-np 递归下载时不搜索上层目录-nH, –no-host-directories 不创建主机目录-d, –debug 打印调试输出-L 递归时不进入其它主机-E //将所有text/html文档以.html扩展名保存-r 递归抓取-k 抓取之后修正链…

JavaScript高级之继承

ES6之前并没有给我们提供 extends 继承。我们可以通过构造函数原型对象模拟实现继承&#xff0c;被称为组合继承。 2.1 call() 调用这个函数, 并且修改函数运行时的 this 指向 fun.call(thisArg, arg1, arg2, …) thisArg &#xff1a;当前调用函数 this 的指向对象arg1&…

【代码笔记】iOS-UILable电子表显示

一&#xff0c;效果图。 二&#xff0c;代码。 RootViewController.h #import <UIKit/UIKit.h>interface RootViewController : UIViewController {UILabel *label;NSDateFormatter *dateFormatter ; } end RootViewController.m #import "RootViewController.h&qu…

python cpu_python 让cpu满载

python 让cpu满载发布时间&#xff1a;2018-07-29 17:25:11编辑&#xff1a;admin阅读(5939)搞zabbix监控的时候&#xff0c;linux服务器的负载很低&#xff0c;如何写一个python脚本&#xff0c;让它满载呢&#xff1f;网上搜了一堆&#xff0c;发现各种不靠谱。后来终于发现了…

JavaScript高级之ES5 中的新增方法

3.1 ES5 新增方法概述 ES5 中给我们新增了一些方法&#xff0c;可以很方便的操作数组或者字符串&#xff0c;这些方法主要包括&#xff1a; 数组方法字符串方法对象方法 3.2 数组方法 迭代(遍历)方法&#xff1a;forEach()、map()、filter()、some()、every()&#xff1b; …

extjs 事件

。。转载于:https://www.cnblogs.com/glblog/p/5732636.html

python定位二维码_图像中二维码的检测和定位

二维码二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的&#xff1b;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念&#xff0c;使用若干个与二进制相对应的几何…

JavaScript高级之函数进阶

1. 函数的定义和调用 1.1 函数的定义方式 函数声明方式 function 关键字 (命名函数)函数表达式 (匿名函数)new Function() Function 里面参数都必须是字符串格式第三种方式执行效率低&#xff0c;也不方便书写&#xff0c;因此较少使用所有函数都是 Function 的实例(对象)…