1from keras.datasets import mnist 2from keras.layers import Dense, Dropout 3from keras.models import Sequential 4from keras.optimizers import RMSprop 5from keras.utils import np_utils 6 7(X_train, y_train), (X_test, y_test) = mnist.load_data() 8X_train = X_train.reshape(60000, 784) 9X_test = X_test.reshape(10000, 784) 10X_train = X_train.astype('float32') 11X_test = X_test.astype('float32') 12X_train /= 255 13X_test /= 255 14Y_train = np_utils.to_categorical(y_train, 10) 15Y_test = np_utils.to_categorical(y_test, 10) 16 17model = Sequential() 18model.add(Dense(output_dim=625, input_dim=784, activation='relu')) 19model.add(Dropout(0.2)) 20model.add(Dense(output_dim=625, input_dim=625, activation='relu')) 21model.add(Dropout(0.5)) 22model.add(Dense(output_dim=10, input_dim=625, activation='softmax')) 23 24model.compile(optimizer=RMSprop(), loss='categorical_crossentropy', metrics=['accuracy']) 25model.summary() 26model.fit(X_train, Y_train, nb_epoch=100, batch_size=128, verbose=2, 27 validation_data=(X_test,Y_test))
依然是我们熟悉的MNIST数据集,这次的全连接层采用了relu这个激活函数,relu函数的形态如下,他会让小于0的值都变为0

这一次的新面孔是Dropout层,这一层主要是用来随机断开一些神经元,让他们不要往下传播。
另外一个新面孔是RMSprop 这个优化器,他是为了解决 Adagrad 学习率急剧下降问题的,那究竟是怎么回事呢,暂且先跳过,留到后续再讨论。