zoukankan      html  css  js  c++  java
  • 15 手写数字识别-小数据集

    利用tensorflow实现手写识别

    1.手写数字数据集

    2.图片数据预处理

    • x:归一化MinMaxScaler()

    • y:独热编码OneHotEncoder()或to_categorical

    • 张量结构

     

    • 训练集测试集划分

    3.设计卷积神经网络结构

    • 绘制模型结构图,并说明设计依据。

            

     设计依据:

     

     1 # 建立模型
     2 model = Sequential()
     3 
     4 # 一层卷积
     5 model.add(
     6     Conv2D(
     7         filters=32,  # 输出32*32
     8         kernel_size=(5,5),  # 卷积核的大小
     9         padding='same',  # 保证卷积核大小,不够补零
    10         input_shape=X_train.shape[1:],  # (8, 8, 1)
    11         activation='relu'))  # 稀疏性
    12 # 第一层输入数据的shape要指定外,其他层的数据的shape框架会自动推导。
    13 # 池化层1
    14 model.add(MaxPool2D(pool_size=(2, 2)))
    15 # drop层
    16 model.add(Dropout(0.25))
    17 
    18 # 二层卷积
    19 model.add(
    20     Conv2D(
    21         filters=32,  # 输出32*32
    22         kernel_size=(5,5),  # 卷积核的大小
    23         padding='same',  # 保证卷积核大小,不够补零
    24         activation='relu'))  # 稀疏性
    25 # 第一层输入数据的shape要指定外,其他层的数据的shape框架会自动推导。
    26 # 池化层1
    27 model.add(MaxPool2D(pool_size=(2, 2)))
    28 # drop层
    29 model.add(Dropout(0.25))
    30 
    31 # 三层卷积
    32 model.add(
    33     Conv2D(
    34         filters=64,  # 输出64*64
    35         kernel_size=(5,5),  # 卷积核的大小
    36         padding='same',  # 保证卷积核大小,不够补零
    37         activation='relu'))  # 稀疏性
    38 # 四层卷积
    39 model.add(
    40     Conv2D(
    41         filters=128,  # 输出128*128
    42         kernel_size=(5,5),  # 卷积核的大小
    43         padding='same',  # 保证卷积核大小,不够补零
    44         activation='relu'))  # 稀疏性
    45 
    46 # 池化层1
    47 model.add(MaxPool2D(pool_size=(2, 2)))
    48 # drop层
    49 model.add(Dropout(0.25))
    50 # 平坦层
    51 model.add(Flatten())
    52 # 全连接层
    53 model.add(Dense(128,activation='relu'))
    54 # drop层
    55 model.add(Dropout(0.25))
    56 # 全连接层
    57 model.add(Dense(10,activation='softmax'))

    4.模型训练

     

              ……

    5.模型评价

    • model.evaluate()

    ……

    • 交叉表与交叉矩阵
    • pandas.crosstab
    # 预测值
    y_pred = model.predict_classes(X_test)
    
    # 将真实值转换为数字
    y_test1 =np.argmax(y_test, axis=1).reshape(-1)
    
    y_true = np.array(y_test1[0]).reshape(-1)

    • seaborn.heatmap

     

  • 相关阅读:
    GitHub Android Libraries Top 100 简介
    GitHub Top 100 的项目(iOS)
    iOS 学习资源
    HTTP和GET/POST请求(NSURLConnection)
    RunLoop
    HTML5 拖放
    网络安全与加密
    Cocoapods的安装
    iOS中的单例模式
    SDWebImage
  • 原文地址:https://www.cnblogs.com/lxml/p/13091051.html
Copyright © 2011-2022 走看看