神经网络——项目一 手写数字识别

 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])

基本实现是可以的,但需要调整参数,识别度低

猜你喜欢

转载自www.cnblogs.com/cfancy/p/12331834.html