(2编写网络)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署
2024-10-13 05:51:20
基于《神经网络和深度学习》这本绝好的教材提供的相关资料和代码,我们自己动手编写“随机取样的梯度下降神经网络”。为了更好地说明问题,我们先从简单的开始:
1、sigmod函数,基本上就是基于定义的;
- sigmoid(z))
2、构造函数
) :]]
], sizes[:])]
这个地方有以下几个地方,一个是在Python中类和类的构造函数是这样定义的;二个是Python如何体现出其强大的数据处理能力的。
这里,如果
sizes = [2, 3, 1]
则sizes [1:] = [3,1]
numpy.random.randn(d0, d1, ..., dn)
这个函数的作用就是从标准正态分布中返回一个或多个样本值,比如
bbb = [np.random.randn(, )]
表示的是生成3X2的随机序列,可以这样来使用,就是加上偏置了
2.5 * np.random.randn(2, 4) + 3
返回:
array([[ 4.128****53, 1.764****44 , 2.732****92, 2.90839231],
[ 0.174****86, 4.92026887, 1.574****66, -0.4305991 ]])
aaa =[ np.random.randn(y, ) :]]
这是一种Python的连写方法,这里就是对[3,1]分别生成随机序列。这个随机是用来干什么的?就是随机的权值。
描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
这里
zip(sizes[:-1], sizes[1:])
表示的是将第1、2层之间,2、3层之间的全连接生成随机权值。
3、前向网络,主要用于测试当前网络
], y) * \
sigmoid_prime(zs[-])
nabla_b[-] = delta
nabla_w[-] = np.dot(delta, activations[-].transpose())
, ].transpose(), delta) * sp
nabla_b[-l] = delta
nabla_w[-l] = np.dot(delta, activations[-l-].transpose())
], y) * sigmoid_prime(zs[-])
对应BP1
nabla_b[-] = delta
nabla_w[-] = np.dot(delta, activations[-].transpose())
分别对应BP3和BP4,就是最后来计算具体的梯度值
delta = np.dot(].transpose(), delta) * sp
对应BP2,反向计算。
7、随机梯度下降算法,到了这里也就是将上面的合起来
, n, mini_batch_size)]
for mini_batch in mini_batches:#最主要的一行代码
self.update_mini_batch(mini_batch, eta)
if test_data:
print("Epoch {} : {} / {}".format(j,self.evaluate(test_data),n_test))
else:
print("Epoch {} complete".format(j))
主要优化的地方,就是将原较大的数据集分成多个部分,而后遍历所有的部分,进行梯度下降运算,并且打印比较的结果。应该说再次体现了Python强大的集成编码能力。
最新文章
- sobel算子的一些细节
- NSURLCache 和 NSCache 的区别
- poj1845 数论
- 【BZOJ】【2084】【POI2010】Antisymmetry
- WebOb的简单介绍
- 各种工具使得数据分析工作使用python变得越来越流行
- Kendo UI for Angular 2 控件
- Freemarker常用技巧(三)
- .net网站开发(一):1.input表单元素
- 关于Smartforms换页的
- 返回变量的类型VarType函数
- Angular(01)-- 架构概览
- 面向对象(__item__)
- Python全栈之路----编程基本情况介绍
- Python进阶(二)
- 洛谷 P2835 刻录光盘
- springmvc源码解析MvcNamespaceHandler之<;mvc:view-resolvers>;
- linux开机自启动设置,自定义开机启动模版,nginx开机自启动服务
- C语言 &#183; 分数统计
- openproject安装与使用