资源简介
自己编写的MNIST手写字Python实现,相关介绍http://blog.csdn.net/hoho1151191150/article/details/79583879
代码片段和文件信息
“““
gnetwork.py
~~~~~~~~~~
采用随机梯度法进行前馈神经网络训练的模块,梯度训练使用BP算法
该程序为练习所写,简单易懂。
相关介绍参见:http://blog.csdn.net/hoho1151191150/article/details/79583879
“““
#### Libraries
# Standard library
import random
# Third-party libraries
import numpy as np
class gNetwork(object):
def __init__(self sizes):
“““
sizes:list类型,表示网络结构,比如[231]表示输入层2个神经元,
一个包含3个神经元的隐层,1个输出层
“““
self.num_layers = len(sizes)
self.sizes = sizes
#初始化网络
self.biases = [np.random.randn(y 1) for y in sizes[1:]]
self.weights = [np.random.randn(y x)
for x y in zip(sizes[:-1] sizes[1:])]
#为了方便代码编写,weights和biases与网络结构相同,输入层为空即可
self.biases.insert(0[])
self.weights.insert(0[])
self.accuracy=[];
def feedforward(selfaz):
“““Return the output of the network“““
#z=w*x+b,a=sigma(z)
for ik in range(1self.num_layers):
z[ik] = np.dot(self.weights[ik] a[ik-1])+self.biases[ik]
a[ik] = sigmoid(z[ik])
def SGD(self training_data epochs mini_batch_size etatest_data=None):
#中间变量,weights和biases的导数,以及激活值a和带权输入z
nabla_biases = self.biases[:]
nabla_weights = self.weights[:]
a = [[] for i in range(self.num_layers)]
z = [[] for i in range(self.num_layers)]
#测试数据
if test_data:
n_test = len(test_data)
x_test = np.squeeze(np.array([d[0] for d in test_data]).transpose())
y_test = np.squeeze(np.array([d[1] for d in test_data]).transpose())
n = len(training_data)
#主循环
for j in range(epochs):
#对样本数据随机排列
random.shuffle(training_data)
#mini_batch
mini_batches = [
training_data[k:k+mini_batch_size]
for k in range(0 n mini_batch_size)]
for mini_batch in mini_batches:
#将tuple的数据处理成矩阵形式,这样可以一次计算所有的mini_batch
#比在mini_batch中循环单个样本快很多
x_train = np.squeeze(np.array([x[0] for x in mini_batch])).transpose()
y_train = np.squeeze(np.array([y[1] for y in mini_batch])).transpose()
a[0] = x_train
#前馈
self.feedforward(az)
#反向传播误差,并更新模型
self.update_mini_batch(y_trainaznabla_weightsnabla_biasesmini_batch_sizeeta)
if test_data:
yp = self.evaluate(x_testy_test)
self.accuracy.append(yp/n_test)
print(“Epoch {%d}: {%d} / {%d}“ %(j self.evaluate(x_testy_test) n_test))
else:
print(“Epoch {%d} complete“ %(j))
def update_mini_batch(selfy_trainaznabla_weightsnabla_biasesmini_batch_sizeeta):
#计算输出层,公式BP1
delta = (a[-1]-y_train)*sigmoid_prime(z[-1])
nabla_biases[-1][:0] = np.mean(deltaaxis = 1)
nabla_weights[-1] = np.dot(deltaa[-2].transpose
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-17 11:51 神经网络学习(七)MNIST Python程序\
目录 0 2018-03-17 10:33 神经网络学习(七)MNIST Python程序\data\
文件 17051982 2018-01-27 02:42 神经网络学习(七)MNIST Python程序\data\mnist.pkl.gz
目录 0 2018-03-17 11:20 神经网络学习(七)MNIST Python程序\fig\
文件 15308 2018-03-17 12:23 神经网络学习(七)MNIST Python程序\fig\arch30-mini-10-eta3.png
文件 16672 2018-03-17 11:12 神经网络学习(七)MNIST Python程序\fig\arch30-mini-15-eta3.png
目录 0 2018-03-17 11:45 神经网络学习(七)MNIST Python程序\src\
文件 4533 2018-03-17 13:02 神经网络学习(七)MNIST Python程序\src\gnetwork.py
文件 3573 2018-02-26 16:27 神经网络学习(七)MNIST Python程序\src\mnist_loader.py
文件 6939 2018-03-17 10:55 神经网络学习(七)MNIST Python程序\src\network.py
文件 942 2018-03-17 12:01 神经网络学习(七)MNIST Python程序\src\test.py
目录 0 2018-03-17 11:19 神经网络学习(七)MNIST Python程序\src\__pycache__\
文件 4463 2018-03-17 11:19 神经网络学习(七)MNIST Python程序\src\__pycache__\gnetwork.cpython-36.pyc
文件 4041 2018-03-17 10:47 神经网络学习(七)MNIST Python程序\src\__pycache__\mnist_loader.cpython-36.pyc
文件 7220 2018-03-17 11:03 神经网络学习(七)MNIST Python程序\src\__pycache__\network.cpython-36.pyc
相关资源
- python实现CNN中文文本分类
- mnist手写字体识别之BP.zip
- 随机森林对数据分类的Python实现
- 机器学习——推荐系统python实现
- python实现飞机大战
- python实现车牌识别
- Python实现基于SVM的车牌识别程序.zip
- 基于phash图像特征的图像聚类-kmeans-
- k-means python实现源码
- Kmeans算法python实现
- 卷积神经网络的Python实现
- 基于知识图谱的智能问答系统python实
- 图像分割python实现代码
- python实现TTS离线语音合成
- 人脸识别python实现源码功能丰富
- 信用风险建模:理论基础、诊断工具
- 张正友相机标定python实现
- Python-树莓派上的VR开发用Python实现
- mnist手写字体识别之随机森林.zip
- 利用Python实现的BP神经网络进行人脸识
- GOC京东物流车辆调度A榜赛题Python实现
- MDNETpython实现
- opencv3计算机视觉 python实现
- 目标跟踪CSK算法python实现
- 人脸识别理论和Python实现
- 卷积神经网络的Python实现-参考代码
- 基于傅里叶算子的手势识别的完整源
- n个工人作业分配问题分支限界法pyt
- K-means聚类分析与python实现
- Apriori关联性分析python实现(含数据集
评论
共有 条评论