内容简介:这次又用Keras做了一个差不多的,毕竟,现在最流行的项目都是Python做的,我也跟一下潮流:)数据是从本地解析好的图像和标签载入的。
上次用Matlab写过一个识别Mnist的神经网络,地址在: https://www.cnblogs.com/tiandsp/p/9042908.html
这次又用Keras做了一个差不多的,毕竟,现在最流行的项目都是 Python 做的,我也跟一下潮流:)
数据是从本地解析好的图像和标签载入的。
神经网络有两个隐含层,都有512个节点。
import numpy as np from keras.preprocessing import image from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation # 从文件夹图像与标签文件载入数据 def create_x(filenum, file_dir): train_x = [] for i in range(filenum): img = image.load_img(file_dir + str(i) + ".bmp", target_size=(28, 28)) img = img.convert('L') x = image.img_to_array(img) train_x.append(x) train_x = np.array(train_x) train_x = train_x.astype('float32') train_x /= 255 return train_x def create_y(classes, filename): train_y = [] file = open(filename, "r") for line in file.readlines(): tmp = [] for j in range(classes): if j == int(line): tmp.append(1) else: tmp.append(0) train_y.append(tmp) file.close() train_y = np.array(train_y).astype('float32') return train_y classes = 10 X_train = create_x(55000, './train/') X_test = create_x(10000, './test/') X_train = X_train.reshape(X_train.shape[0], 784) X_test = X_test.reshape(X_test.shape[0], 784) Y_train = create_y(classes, 'train.txt') Y_test = create_y(classes, 'test.txt') # 从网络下载的数据集直接解析数据 ''' from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) X_train, Y_train = mnist.train.images, mnist.train.labels X_test, Y_test = mnist.test.images, mnist.test.labels X_train = X_train.astype('float32') X_test = X_test.astype('float32') X_train = X_train.reshape(55000, 784) X_test = X_test.reshape(10000, 784) ''' model = Sequential() model.add(Dense(512, input_shape=(784,))) model.add(Activation('relu')) model.add(Dropout(0.4)) model.add(Dense(512)) model.add(Activation('relu')) model.add(Dropout(0.4)) model.add(Dense(10)) model.add(Activation('softmax')) model.summary() model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy']) history = model.fit(X_train, Y_train, batch_size=500, epochs=20, verbose=1, validation_data=(X_test, Y_test)) score = model.evaluate(X_test, Y_test, verbose=0) test_result = model.predict(X_test) result = np.argmax(test_result, axis = 1) print(result) print('Test score:', score[0]) print('Test accuracy:', score[1])
最终在测试集上识别率在98%左右。
相关测试数据可以在这里 下载 到。
以上所述就是小编给大家介绍的《【Python】keras神经网络识别mnist》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 基于神经网络的命名实体识别 NeuroNER
- 【Python】keras卷积神经网络识别mnist
- TensorFlow.js 卷积神经网络手写数字识别
- 手撸卷积神经网络之手写数字识别 (Java)
- 在TensorFlow里训练神经网络识别MNIST数据
- 神经网络图像分割:气胸 X 光片识别案例
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript Patterns
Stoyan Stefanov / O'Reilly Media, Inc. / 2010-09-21 / USD 29.99
What's the best approach for developing an application with JavaScript? This book helps you answer that question with numerous JavaScript coding patterns and best practices. If you're an experienced d......一起来看看 《JavaScript Patterns》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
SHA 加密
SHA 加密工具