• 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

     

  • 相关阅读:
    UVA10302 【Summation of Polynomials】
    小Z 系列 解题报告
    Dsu on tree
    轻重链剖分
    二分图匹配
    题解 P2455 【[SDOI2006]线性方程组】
    闫氏DP分析法
    扩展域并查集
    bindColumn、bindParam与bindValue的区别
    如何获取二维数组的列数
  • 原文地址:https://www.cnblogs.com/lxml/p/13091051.html
Copyright © 2020-2023  润新知