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