from keras.datasets import mnist
from keras.utils import np_utils
import numpy as np
np.random.seed(10);
(x_Train,y_Train),(x_Test,y_Test)=mnist.load_data();
print("done");
x_Train4D=x_Train.reshape(x_Train.shape[0],28,28,1).astype('float32');
x_Test4D=x_Test.reshape(x_Test.shape[0],28,28,-1).astype('float32');
x_Train4D_normalize=x_Train4D/255;
x_Test4D_normalize=x_Test4D/255;
y_TrainOneHot=np_utils.to_categorical(y_Train);
y_TestOneHot=np_utils.to_categorical(y_Test);
from keras.models import Sequential
from keras.layers import Dense,Dropout,Flatten,Conv2D,MaxPooling2D
model=Sequential();
model.add(Conv2D(filters=16,kernel_size=(5,5),padding='same',input_shape=(28,28,1),activation='relu'));
model.add(MaxPooling2D(pool_size=(2,2)));
model.add(Conv2D(filters=36,kernel_size=(5,5),padding="same",activation='relu'));
model.add(MaxPooling2D(pool_size=(2,2)));
model.add(Dropout(0.25));
model.add(Flatten());
model.add(Dense(128,activation='relu'));
model.add(Dropout(0.5));
model.add(Dense(10,activation='softmax'));
print(model.summary());
model.compile(loss="categorical_crossentropy",optimizer="adam",metrics=['accuracy']);
train_history=model.fit(x=x_Train4D_normalize,y=y_TrainOneHot,batch_size=300,validation_split=0.2,epochs=10,verbose=1);
scores=model.evaluate(x_Test4D_normalize,y_TestOneHot);
print(scores[1]);
prediction=model.predict_classes(x_Test4D_normalize);
print(prediction);
# 显示混淆矩阵
import pandas as pd
crosstab=pd.crosstab(y_Test,prediction,rownames=['label'],colnames=['prediction']);
print(crosstab);
keras卷积神经网络识别手写体
最新推荐文章于 2024-11-29 10:16:26 发布
