LeNet-5模型的keras实现
1 import keras 2 from keras.models import Sequential 3 from keras.layers import Input,Dense,Activation,Conv2D,MaxPooling2D,Flatten 4 from keras.datasets import mnist 5 6 7 (x_train,y_train),(x_test,y_test) = mnist.load_data() 8 x_train = x_train.reshape(-1, 28, 28, 1) ####### 9 x_train = x_train.astype("float32") 10 print(x_train.shape) 11 y_train = y_train.astype("float32") 12 x_test = x_test.reshape(-1,28,28,1) 13 x_test = x_test.astype("float32") 14 y_test = y_test.astype("float32") 15 16 print(y_train) 17 x_train /= 255 18 x_test /= 255 19 20 from keras.utils import np_utils 21 y_train_new = np_utils.to_categorical(num_classes=10,y=y_train) 22 print(y_train_new) 23 y_test_new = np_utils.to_categorical(num_classes=10,y=y_test) 24 25 def LeNet_5(): 26 model = Sequential() 27 model.add(Conv2D(filters=6,kernel_size=(5,5),padding="valid",activation="tanh",input_shape=[28, 28, 1])) 28 model.add(MaxPooling2D(pool_size=(2,2))) 29 model.add(Conv2D(filters=16,kernel_size=(5,5),padding="valid",activation="tanh")) 30 model.add(MaxPooling2D(pool_size=(2,2))) 31 model.add(Flatten()) 32 model.add(Dense(120,activation="tanh")) 33 model.add(Dense(84,activation="tanh")) 34 model.add(Dense(10,activation="softmax")) 35 return model 36 37 def train_model(): 38 model = LeNet_5() 39 model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["accuracy"]) 40 model.fit(x_train,y_train_new,batch_size=64,epochs=1,verbose=1,validation_split=0.2,shuffle=True) 41 return model 42 43 model = train_model() 44 45 loss,accuracy = model.evaluate(x_test,y_test_new) 46 print(loss,accuracy)