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

 

原文地址:https://www.cnblogs.com/lxml/p/13091051.html