1. import mnist_loader
  2. from network3 import Network
  3. from network3 import ConvPoolLayer, FullyConnectedLayer, SoftmaxLayer
  4.  
  5. training_data, validation_data, test_data = mnist_loader.load_data_wrapper()
  6. mini_batch_size = 10
  7.  
  8. #NN算法:sigmoid函数;准确率97%
  9. net = Network([
  10. FullyConnectedLayer(n_in=784, n_out=100),
  11. SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
  12. net.SGD(training_data, 60, mini_batch_size, 0.1, validation_data, test_data)
  13.  
  14. #CNN算法:1层Convolution+sigmoid函数;准确率98.78%
  15. net = Network([
  16. ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
  17. filter_shape=(20, 1, 5, 5),
  18. poolsize=(2, 2)),
  19. FullyConnectedLayer(n_in=20*12*12, n_out=100),
  20. SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
  21.  
  22. #CNN算法:2层Convolution+sigmoid函数;准确率99.06%。层数过多并不会使准确率大幅度提高,有可能overfit,合适的层数需要通过实验验证出来,并不是越多越好
  23. net = Network([
  24. ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
  25. filter_shape=(20, 1, 5, 5),
  26. poolsize=(2, 2)),
  27. ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
  28. filter_shape=(40, 20, 5, 5),
  29. poolsize=(2, 2)),
  30. FullyConnectedLayer(n_in=40*4*4, n_out=100),
  31. SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
  32.  
  33. #CNN算法:用Rectified Linear Units即f(z) = max(0, z),代替sigmoid函数;准确率99.23%
  34. net = Network([
  35. ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
  36. filter_shape=(20, 1, 5, 5),
  37. poolsize=(2, 2),
  38. activation_fn=ReLU), #激活函数采用ReLU函数
  39. ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
  40. filter_shape=(40, 20, 5, 5),
  41. poolsize=(2, 2),
  42. activation_fn=ReLU),
  43. FullyConnectedLayer(n_in=40*4*4, n_out=100, activation_fn=ReLU),
  44. SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
  45.  
  46. #CNN算法:用ReLU函数+增大训练集25万(原先50000*5,只需将每个像素向上下左右移动一个像素);准确率99.37%
  47. $ python expand_mnist.py #将图片像素向上下左右移动
  48. expanded_training_data, _, _ = network3.load_data_shared("../data/mnist_expanded.pkl.gz")
  49. net = Network([
  50. ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
  51. filter_shape=(20, 1, 5, 5),
  52. poolsize=(2, 2),
  53. activation_fn=ReLU),
  54. ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
  55. filter_shape=(40, 20, 5, 5),
  56. poolsize=(2, 2),
  57. activation_fn=ReLU),
  58. FullyConnectedLayer(n_in=40*4*4, n_out=100, activation_fn=ReLU),
  59. SoftmaxLayer(n_in=100, n_out=10)], mini_batch_size)
  60. net.SGD(expanded_training_data, 60, mini_batch_size, 0.03,validation_data, test_data, lmbda=0.1)
  61.  
  62. #CNN算法:用ReLU函数+增大训练集25万+dropout(随机选取一半神经元)用在最后的FullyConnected层;准确率99.60%
  63. expanded_training_data, _, _ = network3.load_data_shared("../data/mnist_expanded.pkl.gz")
  64. net = Network([
  65. ConvPoolLayer(image_shape=(mini_batch_size, 1, 28, 28),
  66. filter_shape=(20, 1, 5, 5),
  67. poolsize=(2, 2),
  68. activation_fn=ReLU),
  69. ConvPoolLayer(image_shape=(mini_batch_size, 20, 12, 12),
  70. filter_shape=(40, 20, 5, 5),
  71. poolsize=(2, 2),
  72. activation_fn=ReLU),
  73. FullyConnectedLayer(
  74. n_in=40*4*4, n_out=1000, activation_fn=ReLU, p_dropout=0.5),
  75. FullyConnectedLayer(
  76. n_in=1000, n_out=1000, activation_fn=ReLU, p_dropout=0.5),
  77. SoftmaxLayer(n_in=1000, n_out=10, p_dropout=0.5)],
  78. mini_batch_size)
  79. net.SGD(expanded_training_data, 40, mini_batch_size, 0.03,validation_data, test_data)

CNN:人工智能之神经网络算法进阶优化,六种不同优化算法实现手写数字识别逐步提高,应用案例自动驾驶之捕捉并识别周围车牌号—Jason niu的更多相关文章

  1. 用Keras搭建神经网络 简单模版(二)——Classifier分类(手写数字识别)

    # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...

  2. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  3. 利用神经网络算法的C#手写数字识别

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwritten_character_recognition.zip 下载源码 - 70. ...

  4. 利用神经网络算法的C#手写数字识别(一)

    利用神经网络算法的C#手写数字识别 转发来自云加社区,用于学习机器学习与神经网络 欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwri ...

  5. 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  6. C#中调用Matlab人工神经网络算法实现手写数字识别

    手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化  投影  矩阵  目标定位  Matlab 手写数字图像识别简介: 手写 ...

  7. 实现手写数字识别(数据集50000张图片)比较3种算法神经网络、灰度平均值、SVM各自的准确率—Jason niu

    对手写数据集50000张图片实现阿拉伯数字0~9识别,并且对结果进行分析准确率, 手写数字数据集下载:http://yann.lecun.com/exdb/mnist/ 首先,利用图片本身的属性,图片 ...

  8. 用Keras搭建神经网络 简单模版(三)—— CNN 卷积神经网络(手写数字图片识别)

    # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) #for reproducibility再现性 from keras.d ...

  9. 卷积神经网络CNN 手写数字识别

    1. 知识点准备 在了解 CNN 网络神经之前有两个概念要理解,第一是二维图像上卷积的概念,第二是 pooling 的概念. a. 卷积 关于卷积的概念和细节可以参考这里,卷积运算有两个非常重要特性, ...

随机推荐

  1. python的学习笔记

    1逻辑运算符不理解 2 在交互模式中,最后被输出的表达式结果被赋值给变量 _ .例如: >>> tax = 12.5 / 100 >>> price = 100.5 ...

  2. "字体arial不支持样式regular"的解决方法

    软件报错,提示“字体arial不支持样式regular”的提示,这是由于字体arial缺失导致的, “字体arial不支持样式regular”的解决方法如下: 方法/步骤 1.用户需要先下载arial ...

  3. maven install 报错 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

    1.控制台打印信息 [INFO] Scanning for projects... [INFO] [INFO] ---------------------< org.cqupt.mauger:R ...

  4. Js:消息弹出框、获取时间区间、时间格式、easyui datebox 自定义校验、表单数据转化json、控制两个日期不能只填一个

    (function ($) { $.messageBox = function (message) { $.messager.show({ title:'消息框提示', msg:message, sh ...

  5. python 与mongodb 交互

    创建管理员 1 > use admin 2 switched to db admin 3 > db 4 admin 5 > db.createUser({user:'admin',p ...

  6. PhpStorm 2018 安装及破解方法

    参考教程: https://blog.csdn.net/u012278016/article/details/81772566

  7. medir设置

    setting中 MEDIA_URL="/media/"MEDIA_ROOT=os.path.join(BASE_DIR, "app01","medi ...

  8. Java 获取窗口的宽、高

    创建一个新窗口,通过getSize()获取这个窗口的宽.高. import javax.swing.JFrame; public class WindowInTheMiddle extends JFr ...

  9. IDEA抛出No bean named 'cacheManager' available解决方法

    (正确的,老师发我的) <?xml version="1.0" encoding="UTF-8"?><beans xmlns="ht ...

  10. G: Dave的时空迷阵(next数组)

    G: Dave的时空迷阵 Time Limit: 1 s      Memory Limit: 128 MB Submit My Status Problem Description 皇家理工本部隐藏 ...