搭建神经网络基本步骤(附带源码)


神经网络结构:

 

输入层                  隐藏层                输出层

 

 

 

 

两个隐藏层的神经网络

MultiLayer Perceptions (MLP): 实际是sigmoid neurons, 不是perceptrons

 

 假设识别一个手写图片:

 

 

如果图片是64*64, 输入层总共有64*64 = 4096个神经元

如果图片是28*28, 输入层总共有28*28 = 784个神经元

 

如果输出层只有一个神经元, >0.5说明是9, <0.5说明不是9

 

FeedForward Network: 神经网络中没有循环, 信息单项向前传递

 

 

用神经网络识别手写数字:

 

 

 

分层:  segmentation分层 得到:

 

 

对于第一个数字:

 

用以下神经网络识别:

 

 

输入层: 28x28 = 784个神经元

每个神经元代表一个像素的值:0.0全白,1.0全黑

 

一个隐藏层: n个神经元, 例子中 n=15

 

输出层: 10个神经元,分别代表手写数字识别可能的0~9十个数字,

例如: 第一个神经元(代表0)的输出值=1, 其他的<1, 数字被识别为0

 

隐藏层学习到不同的部分:

 

决定:

 

 

还可能有很多其他方式做出最终分类决定,所以使用10个神经元在输入层

 

 

梯度下降(gradient descent):

 

MNIST dataset: http://yann.lecun.com/exdb/mnist/

 

 

 

得名: Modified National Institute of Standards and Technology 

 

训练数据集: 60,000 张图片 => 用来训练

测试数据集: 10, 000 张图片 => 用来测试准确率

 

扫描从250个员工的手写字体而来

 

x: 训练输入, 28*28 = 784d向量, 每个值代表一个灰度图片中的一个像素值

y=y(x): 10d向量

 

如果输入的某个图片是数字6

理想输出: y(x)=(0,0,0,0,0,0,1,0,0,0)T

 

Cost function (loss function, objective function): 目标函数

 

C: cost

w: weight 权重

b: bias 偏向

n: 训练数据集实例个数

x: 输入值

a: 输出值 (当x是输入时)

||v||:  向量的length function

 

 

C(w,b) 越小越好,输出的预测值和真实值差别越小

 

目标: 最小化C(w,b)

 

 

最小化问题可以用梯度下降解决(gradient descent)

 

C(v) v有两个变量v1, v2

 

 

 

 

 

通常可以用微积分解决,如果v包含的变量过多,无法用微积分解决.

 

假设一个小球在曲面上的某一点,滚动到最低点

 

一个变量的情况:

 

可能会陷入局部最优

前提是目标函数要是凸函数convex

learning rate自动会减小

 

 

下载代码:

https://github.com/mnielsen/neural-networks-and-deep-learning

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值