全球名校课程作业分享系列(4)--斯坦福计算机视觉与深度学习CS231n之双层神经网络完成图像多分类

本博客详细介绍了斯坦福大学计算机视觉与深度学习课程(CS231n)的作业,任务是构建一个双层神经网络进行图像多分类。内容涵盖神经元、神经网络、反向传播算法,并提供了代码解析,展示如何使用CIFAR-10数据集训练模型。通过训练,模型在验证集上达到了48%以上的准确率。
摘要由CSDN通过智能技术生成

课程作业原地址:CS231n Assignment 1
作业及整理:@林凡莉 && @Molly && @寒小阳
时间:2018年1月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/79139395

1 任务

在这个练习里,我们将实现一个完全连接的神经网络分类器,然后用CIFAR-10数据集进行测试。

2 知识点

2.1 神经元

要讲神经网络就得先从神经元开始说起,神经元是神经网络的基本单位,它的结构如下图所示:


Neuron

神经元不管它的名字有多逼格,它本质上不过是一个函数。就像每个函数都有输入和输出一样,神经元的输入是一个向量,里面包含了很多个 xi (图左边),输出的是一个值(图右边)。神经元在这个过程中只做了两件事:一是对输入向量做一次仿射变换(线性变化+平移, scaling+shift),用公式表示就是

iwixi+b
二是对仿射变换的结果做一次非线性变换,即
f(iwixi+b)
这里的f就叫做激活函数。权值 wi 和偏置项 b 是神经元特有的属性,事实上,不同神经元之间的差别主要就三点:权重值,偏置项,激活函数。总的来说,神经元的工作就是把所有的输入项 xi 与其对应的权值相乘求和,然后加上偏置项 b ,之后通过一个激活函数求得最终的值,即这个神经元的输出。

激活函数有很多种,下面介绍一个叫sigmoid的激活函数:

σ(x)=1/(1+ex)

这个函数很有意思,它把任何一个属于值域R的实数转换成0到1之间的数,这使得概率的诠释变得可能。但是在训练神经网络的时候,它有两个问题,一是当输入的仿射变换值太大或者太小的时候,那f关于x的梯度值就为0,这不利于后面提到的反向传播算法中梯度的计算。第二个问题在于它的值不是中心对称的,这也导致梯度更新过程中的不稳定。Sigmoid的函数图像大概长下面这样:
Sigmoid

如果现在我们把实数1也放进输入的向量中得到 x⃗  ,把偏置项放进权值向量中得到 w⃗  ,那么包含sigmoid激活函数神经元的工作就可以简洁地表示为:

y=sigmoid(w⃗ 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值