手写字体识别
1.完成手寫字體識別kaggle比賽:https://www.kaggle.com/c/digit-recognizer
2.環境:谷歌云盤(內有GPU運算,速度比我自己電腦快好多倍)
3.手寫字體文件
? ? train.csv文件第一列是圖像標簽,后面784(28*28)列是像素。
? ? test.csv文件是784列像素。
? ? sample_submission.csv是提交的文件
4.谷歌云盤啟動
from google.colab import drive drive.mount('/content/drive/') !ls "/content/drive/My Drive/" import tensorflow as tf tf.test.gpu_device_name() !ls # 切換目錄 import os os.chdir("/content/drive/My Drive/home") !ls5.預處理圖像
# 預處理數據 import keras import pandas as pd import numpy as np from keras.utils import np_utils dataset = pd.read_csv('train.csv') dataset = np.array(dataset) x = dataset[:,1:] x = x/255 x = x.reshape(-1,28,28,1) y = dataset[:,0] y = np_utils.to_categorical(y) print(x.shape) print(y.shape)6.構建模型訓練
from keras.layers.convolutional import Conv2D, MaxPooling2D from keras.layers import * from keras.models import Sequential def creat_model():model = Sequential()model.add(Conv2D(32,(5,5), padding='same',input_shape=(28,28,1),activation='relu'))model.add(Conv2D(64,(5,5), padding='same',activation='relu'))model.add(MaxPooling2D((2,2)))model.add(Dropout(0.3))model.add(Flatten())model.add(Dense(64,activation= 'relu'))model.add(Dropout(0.3))model.add(Dense(128,activation= 'relu'))model.add(Dropout(0.3))model.add(Dense(10,activation= 'softmax'))model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])return model model = creat_model() print(model.summary()) model.fit(x=x,y=y,epochs=10,batch_size=20)7.數據預測
dataset2 = pd.read_csv('test.csv') dataset2 = np.array(dataset2) dataset2 = dataset2.reshape(-1,28,28,1) print(dataset2.shape) y = model.predict(dataset2) print(y.shape) y = np.argmax(y,axis=1) test = pd.read_csv('sample_submission.csv') test = np.array(test) for i in range(len(y)):test[i][1] = y[i] test = pd.DataFrame(test,columns=['ImageId', 'Label']) print(test) test.to_csv('sample_submission.csv',index=False)?
8.比賽成績
準確率98.428%,那個模型訓練多一下次數準確率應該可以去到更好。
9.項目截圖
總結
- 上一篇: matlab 28m35,使用F28M3
- 下一篇: RPG游戏经典的系统架构