keras框架用的很简单,正确率达到99.5%
from keras.models import Sequential,load_model
from keras.datasets import mnist
from keras.layers import Dense
from keras import optimizers,utils
inputs,hiddens,outputs=784,200,10
learning_rate=0.01
epochs=50
batch_size=64
(train_images,train_labels),(test_images,test_labels)=mnist.load_data()
train_images=train_images.reshape(-1,inputs).astype('float32')/255
train_labels=utils.to_categorical(train_labels,outputs)
test_images=test_images.reshape(-1,inputs).astype('float32')/255
test_labels=utils.to_categorical(test_labels,outputs)
def mlp():
model=Sequential()
model.add(Dense(hiddens,activation='sigmoid',input_shape=(inputs,)))
model.add(Dense(outputs,activation='sigmoid'))
return model
def train():
model=mlp()
sgd=optimizers.Adam(lr=learning_rate)
model.compile(optimizer=sgd,loss='mean_squared_error')
model.fit(train_images,train_labels,batch_size=batch_size,epochs=epochs)
model.save('mlp_model.h5')
def predict():
model=load_model("mlp_model.h5")
error=model.evaluate(test_images,test_labels)
print("accuracy:",1-error)
if __name__=="__main__":
train()
predict()
accuracy: 0.9949546198506902