斯坦福大学-李菲菲,深度学习1到9讲听课笔记

CS231n
计算机视觉历史回顾与介绍
第一课时:
  深度神经网络:卷积神经网络
  计算机视觉是跨学科的领域
  NLP 自然语言处理
  生物进化出眼睛
  相机的出现
  基础视觉皮层(处理视觉)
第二课时:
  通过实验发现,视觉处理的第一步是对简单的形状结构处理
  简单的边缘结构,边缘决定了结构
  (论文)block world
  CVPR,ICCV
  分层的模型
  感知分组
  人脸检测,富士山相机的人脸检测-2006年
第三课时:
   ImageNet(5000万张,2万个分类)
   ImageNet 挑战赛(针对ImageNet的计算机视觉竞赛)
   2012年卷积神经网络的运用,赢得了ImageNet挑战赛
   特征加支持向量机的结构
   MSRA(残差神经网络)
   对深度学习起了很大的推动作用(GPU,Big Data)
数据驱动的图像分类方式
第四课时:
   线性分类器
   对不同场景具有鲁棒性
   分类问题的复杂性
   进邻算法分类器
   k邻近,k变大图像分类变平滑,效果变好。
   欧式距离,曼哈顿距离
   分类器的泛化验证
第五课时:
   输入一张图像,输出与10个类相对应的数值。
   线性分类器,就是得到最合适的W和B(W是系数,B是独立的权重参数)
   改变每一张图的大小,使他们变成同等大小,就可以转化成长度相同的列向量
   最先进的方法是使用的方形图片
   对权重矩阵W的理解,类似模式匹配
   分类器对图片做了混合变成单个模型,所以会出现双头马,不同角度的汽车重合。
   损失函数,对于一个确定的分类器W,在我们的测试中得到的结果有多坏。
   对于汽车颜色细节识别,引入了神经网络。
线性分类器损失函数与最优化
第六课时:
   多类SVN损失,SVN(向量机)
   SVN损失函数的计算公式:$L_i=\sum_{j!=y_j}max(0,s_j-s_y_j+1)$,这里的1叫做安全系数
   $L = 1/N\sum_{i=1}^{N}L_i$
   正则化,正则化是权衡你的训练损失和你用于测试集的泛化损失
   L2正则化考虑了X要素中的大部分东西,尽可能的展开w的权重
   SVN和softmax分类器,softmax又叫逻辑斯蒂回归
   softMax:$L_i=-log(\frac{e^{s_y_i}}{\sum_{j}e^{s_j}})$
第七课时:
   SoftMax会考虑每一个样例点,SVN对离边界点近的样例点敏感,对离边界点远的样例点不敏感
   线性分类损失可视化:http://vision.stanford.edu/teaching/cs231n-demos/linear-classify/
   多维度的梯度
   步长和权重的正则化参数lambda是需要关注的两个关键点。
   mini-batch,取和GPU或者CPU内存匹配的大小的batch的数据来估测梯度。
   SGD
   while True:
     data_batch = sample_training_data(data, 256) #sample 256 examples
     weights_grad = evaluate_gradient(loss_fun,data_batch,weights)
     weights += -step_size*weights_grad #perform prameter update
   不同的学习速率导致了最终学习结果的好坏(想象成寻找大盆地的最低点)
反向传播与神经网络初步
第八课时:
   计算图,反向传播算法
   链式法则,将局部梯度和最后输出结果的梯度相乘
   前向和反向花的时间基本上是一样的,通常反向慢一些。
   BP的拆分力度,S门
   对于最大值门,Max(x,y),反向传播时较小的梯度为0,较大的梯度是传播过来的梯度
   乘法门的实现
   class MultiplyGate(object):
     def forward(x,y):
    z = x*y;
    self.x = x #must keep these around!
    self.y = y
        return z;
     def backward(dz)
    dx = self.y * dz;#[dz/dx*dL/dx]
    dy = self.x * dz;#[dz/dy*dL/dz]
        return [dx, dy]
第九课时:
   本地梯度原本是标量现在是雅克比矩阵:表示X中每个元素对Z中每个元素的影响。
   并不需要计算雅克比矩阵,层和层之间的交流是通过向量,除非是输出多重才用雅克比矩阵,我们最终输出是一个数
   神经网络,汽车模型,隐藏层。


import numpy as np
# sigmoid function
def nonlin(x,deriv=False):
    if(deriv==True):
        return x*(1-x)
    return 1/(1+np.exp(-x))
 
# input dataset
X = np.array([  [0,0,1],
                [0,1,1],
                [1,0,1],
                [1,1,1] ])
 
# output dataset            
y = np.array([[0,0,1,1]]).T
 
# seed random numbers to make calculation
# deterministic (just a good practice)
np.random.seed(1)
 
# initialize weights randomly with mean 0
syn0 = 2*np.random.random((3,1)) - 1
 
for iter in xrange(10000):
    # forward propagation
    l0 = X
    l1 = nonlin(np.dot(l0,syn0))
 
    # how much did we miss?
    l1_error = y - l1
 
    # multiply how much we missed by the
    # slope of the sigmoid at the values in l1
    l1_delta = l1_error * nonlin(l1,True)
 
    # update weights
    syn0 += np.dot(l0.T,l1_delta)
print "Output After Training:"
print l1

http://python.jobbole.com/82758/


   
想要课件的可以把邮箱留下。不方便公开。

 

 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值