用自己实现的全连接神经网络分类MNIST
2016-11-25 10:04
716 查看
# coding:utf-8 import numpy as np import mnist_loader # 用full-connected神经网络搞的LeCun的手写数字识别 # 784*30*10 speed = 1 def sigmoid(z): """The sigmoid function.""" return 1.0 / (1.0 + np.exp(-z)) def sigmoid_prime(z): """Derivative of the sigmoid function.""" return sigmoid(z) * (1.0 - sigmoid(z)) W = [] W1 = np.random.randn(30, 784) W2 = np.random.randn(10, 30) W.append(W1) W.append(W2) b = [] b1 = np.random.randn(30,1) b2 = np.random.randn(10,1) b.append(b1) b.append(b2) training_data, validation_data, test_data = mnist_loader.load_data_wrapper() for i in range(0, 50000): zs = [] activations = [] activations.append(training_data[i][0]) z0 = np.dot(W[0], training_data[i][0]) + b[0] zs.append(z0) a1 = sigmoid(z0) activations.append(a1) z1 = np.dot(W[1], a1) + b[1] zs.append(z1) a2 = sigmoid(z1) activations.append(a2) error = [] error0 = activations[2] - training_data[i][1] error0 = error0 * sigmoid_prime(zs[1]) error.append(error0) error1 = np.dot(W[1].transpose(),error[0]) error1 = error1 * sigmoid_prime(zs[0]) error.append(error1) print i dw0 = np.dot(error[1], activations[0].transpose()) dw1 = np.dot(error[0], activations[1].transpose()) W[0] = W[0] - dw0 b[0] = error[1] - b[0] W[1] = W[1] - dw1 b[1] = error[0] - b[1] count = 0 for i in range(100): a = test_data[i][0] for bb, ww in zip(b, W): a = sigmoid(np.dot(ww, a) + bb) print a print test_data[i][1] if np.argmax(a) == test_data[i][1]: count = count + 1 print count
相关文章推荐
- 神经网络与深度学习 1.6 使用Python实现基于梯度下降算法的神经网络和MNIST数据集的手写数字分类程序
- python神经网络案例——FC全连接神经网络实现mnist手写体识别
- 神经网络与深度学习 使用Python实现基于梯度下降算法的神经网络和自制仿MNIST数据集的手写数字分类可视化程序 web版本
- 《神经网络和深度学习》系列文章七:实现我们的神经网络来分类数字(上)
- 基于粒子群算法的概率神经网络实现多分类(PSO_PNN)
- 自己动手实现机器学习算法:神经网络(附源代码)
- 利用tensorflow一步一步实现基于MNIST 数据集进行手写数字识别的神经网络,逻辑回归
- torch教程[1]用numpy实现三层全连接神经网络
- 《神经网络和深度学习》系列文章七:实现我们的神经网络来分类数字(下)
- 使用Keras构建神经网络进行Mnist手写字体分类
- 简单全连接神经网络--MNIST
- PyTorch上搭建简单神经网络实现回归和分类
- TensorFlow入门(二)简单前馈网络实现 mnist 分类
- 【神经网络与深度学习】在Windows8.1上用VS2013编译Caffe并训练和分类自己的图片
- 自己动手实现机器学习算法:神经网络(附源代码)
- 径向基概率神经网络的实例(实现预测,分类)
- CS231n 卷积神经网络与计算机视觉 8 手把手实现神经网络分类
- 最简单的全连接神经网络实现
- CS231n作业笔记2.1:两层全连接神经网络的分层实现
- tensorflow 全连接神经网络 MNIST手写体数字识别