keras卷积神经网络识别mnist

本文介绍了如何使用keras构建卷积神经网络(CNN)来识别MNIST手写数字数据集。通过对比多层感知器,强调了CNN在特征提取方面的优势,特别是通过滤镜产生特征图层和池化层来减少运算量,控制过拟合。
摘要由CSDN通过智能技术生成

前言

卷积神经网络是近年发展起来,并引起广泛重视的一种高效识别方法。20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用.
深层数学内涵先不考究,与之前的多层感知器比较一下代码模型上的区别在于特征值的提取:
多层感知器对于特征值的提取仅仅是将图片的3维矩阵转化为了一维矩阵,然后作为输入层输入;在卷积神经网络里,将数据使用不同滤镜产生多种特征图层,再使用池化层缩减采样,最后使用平坦层达到和多层感知器预处理步骤的功能,将多维矩阵转换为一维作为输入层输入.

关于池化层

  • 可以减少需处理的数据点,减少运算量
  • 让图像位置差异变小,例如图像的位置可能在背景的左上或右下=方造成干扰
  • 参数的数量和计算量下降,在一定程度上控制了过度拟合

源码

#数据预处理
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense,Dropout,Flatten,Conv2D,MaxPooling2D
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
np.random.seed()
Using TensorFlow backend.
def images_labels_prediction(images, labels, prediction, index, num=10):
    """

    :param images: 点阵像素点图像列表
    :param labels: 图像对应真实值
    :param prediction: 预测结果
    :param index: 数据开始索引
    :param num: 显示数据项数
    :return:
    """
    if num > 25:
        num = 25
    fig = plt.gcf()  # 实例化图形
    fig.set_size_inches(15, 15)  # 设定图形大小
    for i in range(0, num):
        ax = plt.subplot(5, 5, 1 + i)  # 建立sub_graph子图,为5行5列
        ax.imshow(images[index], cmap="binary")  # 画出子图
        title = "label=" + str(labels[index])  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值