CNN:人工智能之神经网络算法进阶优化,六种不同优化算法实现手写数字识别逐步提高,应用案例自动驾驶之捕捉并识别周围车牌号—Jason niu
- import mnist_loader
- from network3 import Network
- from network3 import ConvPoolLayer, FullyConnectedLayer, SoftmaxLayer
- training_data, validation_data, test_data = mnist_loader.load_data_wrapper()
- mini_batch_size = 10
- #NN算法:sigmoid函数;准确率97%
- net = Network([
- FullyConnectedLayer(n_in=784, n_out=100),
- SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
- net.SGD(training_data, 60, mini_batch_size, 0.1, validation_data, test_data)
- #CNN算法:1层Convolution+sigmoid函数;准确率98.78%
- net = Network([
- ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
- filter_shape=(20, 1, 5, 5),
- poolsize=(2, 2)),
- FullyConnectedLayer(n_in=20*12*12, n_out=100),
- SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
- #CNN算法:2层Convolution+sigmoid函数;准确率99.06%。层数过多并不会使准确率大幅度提高,有可能overfit,合适的层数需要通过实验验证出来,并不是越多越好
- net = Network([
- ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
- filter_shape=(20, 1, 5, 5),
- poolsize=(2, 2)),
- ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
- filter_shape=(40, 20, 5, 5),
- poolsize=(2, 2)),
- FullyConnectedLayer(n_in=40*4*4, n_out=100),
- SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
- #CNN算法:用Rectified Linear Units即f(z) = max(0, z),代替sigmoid函数;准确率99.23%
- net = Network([
- ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
- filter_shape=(20, 1, 5, 5),
- poolsize=(2, 2),
- activation_fn=ReLU), #激活函数采用ReLU函数
- ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
- filter_shape=(40, 20, 5, 5),
- poolsize=(2, 2),
- activation_fn=ReLU),
- FullyConnectedLayer(n_in=40*4*4, n_out=100, activation_fn=ReLU),
- SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
- #CNN算法:用ReLU函数+增大训练集25万(原先50000*5,只需将每个像素向上下左右移动一个像素);准确率99.37%
- $ python expand_mnist.py #将图片像素向上下左右移动
- expanded_training_data, _, _ = network3.load_data_shared("../data/mnist_expanded.pkl.gz")
- net = Network([
- ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
- filter_shape=(20, 1, 5, 5),
- poolsize=(2, 2),
- activation_fn=ReLU),
- ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
- filter_shape=(40, 20, 5, 5),
- poolsize=(2, 2),
- activation_fn=ReLU),
- FullyConnectedLayer(n_in=40*4*4, n_out=100, activation_fn=ReLU),
- SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
- net.SGD(expanded_training_data, 60, mini_batch_size, 0.03,validation_data, test_data, lmbda=0.1)
- #CNN算法:用ReLU函数+增大训练集25万+dropout(随机选取一半神经元)用在最后的FullyConnected层;准确率99.60%
- expanded_training_data, _, _ = network3.load_data_shared("../data/mnist_expanded.pkl.gz")
- net = Network([
- ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
- filter_shape=(20, 1, 5, 5),
- poolsize=(2, 2),
- activation_fn=ReLU),
- ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
- filter_shape=(40, 20, 5, 5),
- poolsize=(2, 2),
- activation_fn=ReLU),
- FullyConnectedLayer(
- n_in=40*4*4, n_out=1000, activation_fn=ReLU, p_dropout=0.5),
- FullyConnectedLayer(
- n_in=1000, n_out=1000, activation_fn=ReLU, p_dropout=0.5),
- SoftmaxLayer(n_in=1000, n_out=10, p_dropout=0.5)],
- mini_batch_size)
- net.SGD(expanded_training_data, 40, mini_batch_size, 0.03,validation_data, test_data)
CNN:人工智能之神经网络算法进阶优化,六种不同优化算法实现手写数字识别逐步提高,应用案例自动驾驶之捕捉并识别周围车牌号—Jason niu的更多相关文章
- 用Keras搭建神经网络 简单模版(二)——Classifier分类(手写数字识别)
# -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...
- 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!
1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...
- 利用神经网络算法的C#手写数字识别
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwritten_character_recognition.zip 下载源码 - 70. ...
- 利用神经网络算法的C#手写数字识别(一)
利用神经网络算法的C#手写数字识别 转发来自云加社区,用于学习机器学习与神经网络 欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwri ...
- 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)
上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...
- C#中调用Matlab人工神经网络算法实现手写数字识别
手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化 投影 矩阵 目标定位 Matlab 手写数字图像识别简介: 手写 ...
- 实现手写数字识别(数据集50000张图片)比较3种算法神经网络、灰度平均值、SVM各自的准确率—Jason niu
对手写数据集50000张图片实现阿拉伯数字0~9识别,并且对结果进行分析准确率, 手写数字数据集下载:http://yann.lecun.com/exdb/mnist/ 首先,利用图片本身的属性,图片 ...
- 用Keras搭建神经网络 简单模版(三)—— CNN 卷积神经网络(手写数字图片识别)
# -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...
- 卷积神经网络CNN 手写数字识别
1. 知识点准备 在了解 CNN 网络神经之前有两个概念要理解,第一是二维图像上卷积的概念,第二是 pooling 的概念. a. 卷积 关于卷积的概念和细节可以参考这里,卷积运算有两个非常重要特性, ...
随机推荐
- vue -webpack.dev.config.js模拟后台数据接口
在const portfinder = require('portfinder')后面添加 const express = require('express') const app = express ...
- 通过printf从目标板到调试器的输出
最近在SEGGER的博客上看到Johannes Lask写的一篇关于在调试时使用printf函数从目标MCU输出信息到调试器的文章,自我感觉很有启发,特此翻译此文并推荐给各位同仁.当然限于个人水平,有 ...
- 快速理解VirtualBox的四种网络连接方式
VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...
- 关于Sublime text 3如何编辑less并转(编译)成css文件
今天开始学习使用less这个强大方便的前端工具,本来是考虑用koala(专门编辑less的软件)来使用less的,但是发现sublime编辑器也可以实现对less的编译及高亮显示代码,这样既能少用一个 ...
- name
问题 A: name 时间限制: 1 Sec 内存限制: 256 MB 题目描述 lpq同学最近突然对外国人的名字产生了兴趣,特别是外国女生的名字,于是他开始试图去认识一些国外的女生. 随着认识的女 ...
- C++11新特性--decltype (转)
返回值 decltype(表达式) [返回值的类型是表达式参数的类型] 这个可也用来决定表达式的类型,就像Bjarne暗示的一样,如果我们需要去初始化某种类型的变量,auto是最简单的选择,但是如果我 ...
- Java接口自动化测试之TestNG学习(二)
在maven项目的pom.xml文件中导入TestNG <?xml version="1.0" encoding="UTF-8"?> <pro ...
- Python学生信息管理系统的开发
# 第一题:设计一个全局变量,来保存很多个学生信息:学生(学号, 姓名,年龄):思考要用怎样的结构来保存:# 第二题:在第一题基础上,完成:让用户输入一个新的学生信息(学号,姓名,年龄):你将其保存在 ...
- PAT Basic 1065 单身狗
单身狗(25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue "单身狗"是中文对于单身人士的 ...
- 微信小程序API 登录-wx.login(OBJECT) + 获取微信用户唯一标识openid | 小程序
wx.login(OBJECT) 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key).用户数据的加解密通讯需要 ...