1 import tensorflow as tf 2 import numpy as np 3 from keras.models import Sequential 4 from keras.layers.core import Dense, Dropout, Activation 5 from keras.layers import Conv2D, MaxPooling2D, Flatten 6 from keras.optimizers import SGD, Adam 7 from keras.utils import np_utils 8 from keras.datasets import mnist 9 #categrorical_crossentropy 10 11 def load_data(): 12 (x_train, y_train), (x_test, y_test) = mnist.load_data() 13 number = 10000 14 x_train = x_train[0:number] 15 y_train = y_train[0:number] 16 x_train = x_train.reshape(number, 28*28) 17 x_test = x_test.reshape(x_test.shape[0], 28*28) 18 x_train = x_train.astype('float32') 19 x_test = x_test.astype('float32') 20 # convert class vector to binary class matrices 21 y_train = np_utils.to_categorical(y_train, 10) 22 y_test = np_utils.to_categorical(y_test, 10) 23 x_train = x_train 24 x_test = x_test 25 #x_test = np.random.normal(x_test) 26 x_train = x_train / 255 27 x_test = x_test / 255 28 return (x_train, y_train), (x_test,y_test) 29 30 (x_train, y_train), (x_test,y_test) = load_data() 31 32 33 model = Sequential() 34 model.add(Dense(input_dim=28*28, units=689, activation='sigmoid')) #第一层 35 model.add(Dense(units=689, activation='sigmoid')) #第二层 36 37 # for i in range(10): 38 # model.add(Dense(units=689, activation='sigmoid')) 39 40 model.add(Dense(units=689, activation='sigmoid')) # 第三层 41 model.add(Dense(units=10, activation='softmax')) # 输出层 42 43 44 model.compile(loss='mse', optimizer=SGD(lr=0.1), metrics=['accuracy']) 45 46 model.fit(x_train, y_train, batch_size=100, epochs=20) 47 48 result = model.evaluate(x_test, y_test) 49 50 print('\nTest Acc:', result[1])
基本实现是可以的,但需要调整参数,识别度低