李飞飞深度学习_李飞飞 深度学习 - CSDN
  • 李飞飞深度学习中文笔记完整版,包括全部的9个笔记,翻译的很好,适合打印
  • 斯坦福CS231n 2017最新课程:李飞飞详解深度学习的框架实现与对比 By ZhuZhiboSmith2017年6月19日 13:37 斯坦福大学的课程 CS231n (Convolutional Neural Networks for Visual Recognition) 作为深度学习和...
    

    斯坦福CS231n 2017最新课程:李飞飞详解深度学习的框架实现与对比

    By ZhuZhiboSmith2017年6月19日 13:37

    斯坦福大学的课程 CS231n (Convolutional Neural Networks for Visual Recognition) 作为深度学习和计算机视觉方面的重要基础课程,在学界广受推崇。今年 4 月,CS231n 再度开课,全新的 CS231n Spring 2017 仍旧由李飞飞带头,带来了很多新鲜的内容。今天机器之心给大家分享的是其中的第八讲——深度学习软件(Deep Learning Software)。主要内容有:CPU 和 GPU 的对比;深度学习框架简介;TensorFlow 和 PyTorch 的实例;以及各种深度学习框架的比较。

    一、 CPU 和 GPU

     CPU:核芯的数量更少;

        但是每一个核芯的速度更快,性能更强;

        更适用于处理连续性(sequential)任务。

     

     GPU:核芯的数量更多;

         但是每一个核芯的处理速度较慢;

         更适用于并行(parallel)任务。


    二、深度学习框架简介

    去年我们还仅有 Caffe、Torch、Theano 和 TensorFlow 这些深度学习框架可供使用;但是到了今年,在此基础上我们又新增加了 Caffe2、Pytorch、TensorFlow、PaddlePaddle、 CNDK、MXNet 等等一系列新的框架,可谓「百花齐放」。如今最常用的框架当数 Pytorch 和 TensorFlow 了, 而 Caffe 和 Caffe2 次之。


    深度学习框架的关键点在于:

    (1)易于建造大型的计算机图形;

    (2)易于在计算机图形中进行梯度计算;

    (3)能在 GPU 上高效运行(cuDNN, cuBLA 等)

    三、TensorFlow 简单实例

    下面我们将详细说明一个在 TensorFlow 下训练神经网络的简单实例:即用随机数据训练一个两层的网络,激活函数为 ReLU。

     

    a. 定义计算机图形


    1. 为输入 x,权重系数 w1、w2, 和目标函数 y 创建 placeholder:


    2. 定义前向传输:这是为了计算 y 的预测值和误差损失(loss);实际上这里是没有计算过程的——仅仅是为了创建图形!


    3. 告诉 Tensorflow 去计算关于 w1 和 w2 的梯度损失;这里仍然不产生计算过程——仅仅是为了创建图形。


    b. 运行

    现在已经完成了创建图形的步骤,所以我们进入对图形进行运算的部分。


    创建 Numpy 数组,这个数组将会被填进上方的 placeholder 中。


    对图形进行运算:将 x、y、w1、w2 输入到 numpy 数组中;得到关于损失(loss),w1 梯度和 w2 梯度的 numpy 数组。


    训练网络:反复对图形进行运算,用梯度(gradient)来更新权重(weights)。


    把 w1 和 w2 的相应函数从 placeholder() 改为 Variable()。


    添加 assign 操作来更新 w1 和 w2(图形的一部分)。


    对图形进行一次运算来初始化 w1 和 w2,然后进行多次迭代训练。


    完整代码如下:


    但是产生一个问题:误差损失(loss)并没有下降!这是因为 Assign 指令实际上并没有被执行。


    这时我们就需要添加虚拟图形节点,并且告诉图形去计算虚拟节点。


    可以使用 optimizer 来计算梯度和更新权重系数;记得要执行 optimizer 的输出!


    使用预先定义的常用损失函数:


    使用 Xavier 进行初始化;tf.layer 会自动设置权重系数(weight)和偏置项(bias)!


    c. 高级 Wrapper——Keras

    Keras 可以理解为是一个在 TensorFlow 顶部的 layer,它可以让一些工作变得更加简单(也支持 Theano 后端)。


    把模型目标定义成一系列的 layer :


    定义优化器目标(optimizer object):


    创建模型,明确规定损失函数(loss function):


    仅用一行代码就能训练模型!


    除了 Keras, 还有一些其他类型的高级容器(Wrapper)可供使用:


    四、PyTorch 实例

    PyTorch 是 Facebook 推出的深度学习框架,不论是在工业界还是学术界,它都得到了广泛的应用。它包括三个等级的抽象概念:

    • 张量(Tensor):命令式的多维数组对象(ndarray),在 GPU 上运行;
    • 变量(Varaible):计算型图形(computational graph)的节点;用于存储数据和梯度(gradient)
    • 模块(Module):代表一个神经网络层;可以存储状态(state), 也可以存储可学习的权重系数(learnable weights)

    PyTorch 和 TensorFlow 中抽象概念的等价对应关系:

     

    a. Pytorch 中的张量(Tensor)设置

    PyTorch 中的张量就像 numpy 中的数组,但是这些张量可以在 GPU 上运行;

    这里我们用 PyTorch 的张量设置了一个两层网络:


    下面我们来分步解读:

    1. 为数据和权重(weights)创建随机张量:


    2. 设置前向传播:计算预测值(prediction)和损失(loss):


    3. 设置反向传播:计算梯度(gradients):


    4. 梯度下降(Gradient descent)和权重(weights)相对应:


    5. 为了在 GPU 上运行,将张量(tensors)设置为 cuda 数据类型:


    b. PyTorch 中的 Autogradient 设置

    PyTorch 的张量(Tensors)和变量(Variables)拥有相同的应用编程接口 API。变量(Variables)可以记忆它们是怎么产生的(因为反向传播的缘故)。


    下面仍进行分步解读:

     

    1. 我们不希望(损失 loss 的)梯度和数据(data)有相关性,但我们希望梯度和权重(weights)是相关的。相关设置如图: 


    2. 这里的前向传播看上去和上述张量(Tensor)的对应版本很相似,但是需要注意的是现在这里全部都是变量(variable)。


    3. 计算损失函数对 w1 和 w2 的梯度(开始的时候梯度置零):


    4. 让梯度和权重(weights)相对应:


    C. 定义新型 Autograd 函数

    通过张量的前向和反向传播来定义你自己的 autograd 函数:


    可以在前向传播中使用新的 autograd 函数:


    d. PyTorch 中的神经网络(nn)设置

    用更高级的「容器」(wrapper)来处理神经网络(neural nets), 和 Keras 相似。完整代码如下:


    下面进行分步解读:

    把我们的模型定义成一系列的 layers:


    也要定义常用损失函数:


    前向传播:给模型输入数据;给损失函数(loss function)输入预测信息(prediction):


    反向传播:计算所有的梯度(gradients):


    让梯度和每一个模型参数对应:


    下面我们添加一个优化器(optimizer):


    在计算完梯度以后对所有的参数(parameters)进行更新:


    E. PyTorch 中的神经网络——定义新的模型

    Pytorch 中的模块(Module)其实是一个神经网络层(neural net layer),需要注意它的输入和输出都是变量;模块(Module)中包含着权重 (当作变量处理) 或者其他模块;你可以使用 autograd 来定义你自己的模块。详细代码如下:


    下面进行分步解读:

    1. 把我们的整体模型定义成一个单一的模块:


    2. 用初始化程序来设置两个子模块(一个父模块可以包含子模块)


    3. 用子模块和变量上的 autograd ops 定义前向传播;不需要定义反向传播——因为 autograd 会作相应处理:


    4. 创建并训练一个模型实例:


    E. PyTorch 中的资料存储器(Dataloaders)

    资料存储器(DataLoader)包括一个数据集 (Dataset),而且给你提供了小批量处理(minibatching),「洗牌」处理(shuffling)和多线程处理(multithreading);当你需要载入自定义数据(custom data)时,写下你自己的数据集类型(dataset class)就可以了。


    通过遍历存储器(loader)来形成小批量(minibatch);存储器会给你提供张量(Tensors), 所以你需要将其「打包」(wrap)进变量中:


    注意:使用带有 torchvision 的预先训练好的模型(pretrained model)将会更加简单易行。

    F. Torch 和 pytorch 的简单对比


    结论:尽量使用 PyTorch 来做你的新项目。

    五、Caffe2 简介


    六、深度学习框架之争,究竟谁更胜一筹?





    其实具体选择何种框架来进行深度学习取决于我们要做什么。在参阅相关文献之后,我们大致可以得出以下结论(仅供参考):

    • PyTorch 和 Torch 更适用于学术研究(research);TensorFlow,Caffe,Caffe2 则更适用于工业界的生产环境部署(industrial production)。
    • Caffe 适用于处理静态图像(static graph);Torch 和 PyTorch 更适用于动态图像(dynamic graph);而 TensorFlow 在两种情况下都很实用。
    • Tensorflow 和 Caffe2 可在移动端使用。  

    附主要参考文献CS231n_2017_Lecture8,链接可直接下载PPT:

    • http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture8.pdf

    其他参考资料:

    • http://203.187.160.132:9011/dl.ee.cuhk.edu.hk/c3pr90ntc0td/slides/tutorial-caffe.pdf
    • http://203.187.160.132:9011/dl.ee.cuhk.edu.hk/c3pr90ntc0td/slides/DL_in_Action.pdf

    展开全文
  • ... 翻译 | AI科技大本营参与 | 刘畅编辑 | Donna目前,深度学习和深度强化学习已经在实践中得到了广泛的运用。资源型博客sky2learn整理了15个深度学习和深入强化学习相关的在线课程,其中

    转自:http://blog.csdn.net/dqcfkyqdxym3f8rb0/article/details/79132402

    640?wx_fmt=png&wxfrom=5&wx_lazy=1


    翻译 | AI科技大本营

    参与 | 刘畅

    编辑 | Donna


    目前,深度学习和深度强化学习已经在实践中得到了广泛的运用。资源型博客sky2learn整理了15个深度学习和深入强化学习相关的在线课程,其中包括它们在自然语言处理(NLP),计算机视觉和控制系统中的应用教程。


    这些课程涵盖了神经网络,卷积神经网络,循环网络和其变体,训练深度网络的困难,无监督表示学习,深度信念网络,深玻尔兹曼机器,深度Q学习,价值函数估计和优化以及蒙特卡洛树搜索等多种算法的基础知识。


    吴恩达:深度学习专项


    这系列课程侧重于讲解深度学习的基础和在不同领域的运用方式,如医疗健康,自动驾驶,手语阅读,音乐生成和自然语言处理等。课程共包含五个子课程,有视频讲座。同时,课程用户将获得使用TensorFlow解决实际问题的实践经验。


    链接:https://www.coursera.org/specializations/deep-learning


    CMU: 深度学习


    该课程由苹果人工智能研究所主任Ruslan Salakhutdinov主导。课程首先讲解了一些例如前馈神经网络、反向传播、卷积模型等的基本知识。然后介绍深度学习中的要点,包括有向图和无向图模型,独立成分分析(ICA),稀疏编码,自动编码器,限制玻尔兹曼机(RBM),蒙特卡罗方法,深度信念网络,深度玻尔兹曼机和亥姆霍兹机。其他内容包括深度网络中的正则化和优化、序列建模和深度强化学习。


    链接:http://www.cs.cmu.edu/~rsalakhu/10707/


    斯坦福大学:深度学习理论(Stat385)


    本课程讨论深度学习理论方面的知识。有8次特邀嘉宾讲座,这些嘉宾是深度学习、计算神经科学和统计学方面的领军人物。您将有机会在深度学习中,针对当前的研究趋势,探索他们观点的多样性和跨学科性。这门课有视频讲座。


    链接:https://stats385.github.io/


    Yoshua Bengio: 深度学习


    该课程由蒙特利尔大学主导。课程首先回顾了神经网络的基本知识,包括感知器,反向传播算法和梯度优化。然后介绍了神经网络、概率图形模型、深度网络和表示学习等前沿知识。


    链接:https://ift6266h16.wordpress.com/


    UC Berkeley: 深度强化学习


    该课程包括强化学习的基本知识:Q-学习和策略梯度,同时还包含了高级模型学习和预测、提取、奖励学习以及高级深度强化学习,例如信赖域策略梯度方法、actor-critic方法、探索方法。本门课有视频讲座。


    链接:http://rll.berkeley.edu/deeprlcourse/


    Yoshua Bengio: 深度学习与强化学习暑期学校


    暑期学校是由Yoshua Bengio和他的同事们组织。课程包括了深度学习和强化学习两个方向,内容有两个领域的基本知识,研究趋势和最新发现。课程特别邀请这两个领域的主要学者和研究人员进行讲解。暑期学校有视频讲座。


    链接:https://mila.quebec/en/cours/deep-learning-summer-school-2017/


    Google & Udacity: 深度学习


    该课程由谷歌首席科学家Vincent Vanhoucke和Udacity的Arpan Chakraborty共同创立。课程内容包括深度学习、深层神经网络、卷积神经网络和针对文本和序列的深层模型。课程作业要求使用tensorflow。这门课有视频讲座。


    链接:https://cn.udacity.com/course/deep-learning–ud730


    斯坦福大学:基于深度学习的自然语言处理(CS224n)


    该课程是2017年冬斯坦福大学 “cs224n:深度学习中的自然语言处理”课程的压缩版,也是斯坦福大学2018课程的延续版。课程讨论了如何将深度学习应用在自然语言处理中,自然语言处理中的问题以及在自然语言处理中使用深度学习的限制。讲师有Christopher Manning和Richard Socher。


    链接:

    https://www.youtube.com/playlist?list=PL3FW7Lu3i5Jsnh1rnUwq_TcylNr7EkRe6


    牛津大学:自然语言处理中的深度学习


    本课程涵盖深度学习的基本原理以及如何将其应用在自然语言处理中。用户将学习如何定义这个领域中的数学问题,以及获得使用CPU和GPU的实际编程的经验。讲师分别来自牛津大学、CMU、DeepMind和英伟达公司。 这门课程包括视频讲座。


    链接:https://github.com/oxford-cs-deepnlp-2017/lectures


    李飞飞:视觉识别中的卷积神经网络(cs231n


    本课程将涵盖深度学习的基础知识,以及如何将深度学习技术应用于计算机视觉。学生将通过作业和最终项目获得如何训练和微调神经网络的实践经验。该课程主要使用Python语言。本课程包括视频讲座。


    链接:http://cs231n.stanford.edu/


    CMU: 深度强化学习与控制


    本课程由苹果人工智能研究所主任Ruslan salakhutdinovat和CMU的Katerina Fragkiadaki主导。内容包括深度学习,强化学习,马尔可夫链决策过程(MDP),部分可观马尔可夫链决策过程(POMDPs),时序差分学习,Q学习,深度学习,深刻Q学习的基础知识。前沿话题包括最优化控制、轨道优化、层次强化学习和迁移学习。


    链接:https://katefvision.github.io/


    CMU: 深度学习入门


    本课程由苹果公司人工智能研究所主任Ruslan Salakhutdinov主导,对深度学习做了一个快速而深入的介绍。课程共分为四个一小时时长的视频讲座,涵盖了监督学习,无监督学习,以及深度学习中的模型评估和开放式的研究问题等内容。


    链接:https://simons.berkeley.edu/talks/tutorial-deep-learning


    RLDM: 深度强化学习入门


    课程由DeepMind的David Silver主导,发表于第二届强化学习与决策多学科会议(RLDM)上。在这一个半小时的视频教程中,用户将了解深度学习,强化学习的基本原理,以及如何将深度学习和强化学习以各种方式结合:即深度价值函数,深度策略,和深度模型。此外,用户还能向顶级专家学习如何处理这些方法中的发散问题。


    链接:http://videolectures.net/rldm2015_silver_reinforcement_learning/


    UC Berkeley: 深度强化学习入门


    这是一个关于强化学习长达一小时的教程,配有视频讲座。用户将看到强化学习能有多厉害。


    链接:https://simons.berkeley.edu/talks/pieter-abbeel-2017-3-28


    MLSS: 深度强化学习入门


    课程由OpenAI公司的研究科学家John Schulman主导,包括4个1小时长的视频讲座,并带有针对实验室问题的练习。


    链接:

    https://www.youtube.com/playlist?list=PLjKEIQlKCTZYN3CYBlj8r58SbNorobqcp



    原文地址:https://sky2learn.com/deep-learning-reinforcement-learning-online-courses-and-tutorials-theory-and-applications.html



    热文精选



    2018 年了,该不该下定决心转型AI呢?

    不用数学也能讲清贝叶斯理论的马尔可夫链蒙特卡洛方法?这篇文章做到了

    盘点深度学习一年来在文本、语音和视觉等方向的进展,看强化学习如何无往而不利

    先搞懂这八大基础概念,再谈机器学习入门!

    这三个普通程序员,几个月就成功转型AI,他们的经验是…

    干货 | AI 工程师必读,从实践的角度解析一名合格的AI工程师是怎样炼成的

    AI校招程序员最高薪酬曝光!腾讯80万年薪领跑,还送北京户口

    详解 | 如何用Python实现机器学习算法

    经验 | 如何高效学Python?

    Twitter大牛写给你的机器学习进阶手册


    640?wx_fmt=png



                      </div>
    
    展开全文
  • 李飞飞深度学习全部作业python源代码和数据集,运行都没问题
  • https://www.bilibili.com/video/av18443065/?p=4 85%的数据都是图像视频数据 从三维建模跳到了识别,回到了AI 2012CNN模型使用 ......

    https://www.bilibili.com/video/av18443065/?p=4

    85%的数据都是图像视频数据

    从三维建模跳到了识别,回到了AI

    2012CNN模型使用

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 之前为了熟悉机器学习的东西去搞kaggle的东西,然后就从Titanic入门咯,结果发现并没有对机器学习的东西有深入的理解,做数据挖掘的时候直接调用sklearn里面的框架,根本不用去想机器学习的公式的运用和基础的实现,...

        之前为了熟悉机器学习的东西去搞kaggle的东西,然后就从Titanic入门咯,结果发现并没有对机器学习的东西有深入的理解,做数据挖掘的时候直接调用sklearn里面的框架,根本不用去想机器学习的公式的运用和基础的实现,想用SVM就直接from sklearn import svm,然后clf = svm.SVC(kernel='linear', C=1)往这里面填几个参数,知道基本原理和参数的含义就行。直到我看到这段话:

    很多人说深度学习就是个黑箱子,把图像预处理之后丢进 tensorflow 就能出来预测结果,简单有效又省时省力。但正如我在上一篇推送中所说,如果你已是一名功力纯厚的深度学习工程师,这么做当然没问题。但我想大多数人也和我一样,都是走在学习深度学习的路上,一上来就上框架并没有什么特别不妥之处,但总归是对你理解深度学习的黑箱机制是了无裨益的。所以,我建议在学习深度学习的路上,从最简单的感知机开始写起,一步一步捋清神经网络的结构,以至于激活函数怎么写、采用何种损失函数、前向传播怎么写、后向传播又怎么写,权值如何迭代更新,都需要你自己去实现。若在一开始就直接调用框架,小的 demo 可以跑起来,糊弄一时,看起来就像是鸠摩智在内力未到的情形下强行练习少林寺的 72 绝技,最后走火入魔。

    我发现我好像走火入魔了,这时我想着我又该把基础打打牢了,之前看过吴老师的机器学习,只能算是理论上有了一定认识,没做过多实践,代码和理论还没好好联系起来,然后就找到了李飞飞深度学习与计算机视觉,下面开始我的第一课——KNN。

    先贴点网址  

    https://zhuanlan.zhihu.com/p/21930884     大牛搞的CS231n官方笔记授权翻译总集

    http://cs231n.stanford.edu/2016/syllabus    英文的CS231n官方笔记

    http://www.cs.toronto.edu/~kriz/cifar.html    做学习的数据集

    特别感谢翻译笔记的哥们。

    第一部分 KNN算法实现

    先贴原理,具体原理直接看笔记,我自己做个总结

    一、概念&意义

    二、计算步骤:

    1算距离:给定测试对象,计算它与训练对象距离

    2找邻居:圈定距离最近的 k个对象,作为测试对象的近邻

    3做分类:根据这k个近邻归属的主要类别,来对测试对象分类

    三、三个基本要素

    I距离度量


    a)p=2时,为欧式距离:


    b)p=1时,为曼哈顿距离:


    II、K值的选择

    K值越小,整体模型越复杂,容易发生过拟合

    K值越大,整体模型越简单,近似误差会增大(误分类)

    III、测试对象类别的判定

    a)   多数表决:


    其中v是类标号,yi是一个最近邻的类标号,I(.)是指示函数,如果其参数为真,则返回1,否则,返回0

    b)   距离加权表决:


    # 损失函数的公式L = -(1/N)∑i∑j1(k=yi)log(exp(fk)/∑j exp(fj)) +λR(W)
    再上代码
    import numpy as np
    class KNearestNeighbor(object):#首先是定义一个处理KNN的类
      """ a kNN classifier with L2 distance """
     
      def __init__(self):
          pass
     
      def train(self, X, y):
        self.X_train = X
        self.y_train = y
        
      def predict(self, X, k=1, num_loops=0):
        if num_loops == 0:
          dists = self.compute_distances_no_loops(X)
        elif num_loops == 1:
          dists = self.compute_distances_one_loop(X)
        elif num_loops == 2:
          dists = self.compute_distances_two_loops(X)
        else:
          raise ValueError('Invalid value %d for num_loops' % num_loops)
     
        return self.predict_labels(dists, k=k)
     
      def compute_distances_two_loops(self, X):
        num_test = X.shape[0]
        num_train = self.X_train.shape[0]
        dists = np.zeros((num_test, num_train))
        for i in xrange(num_test):
          for j in xrange(num_train):
            dists[i][j] = np.sqrt(np.sum(np.square(self.X_train[j,:] - X[i,:])))
        return dists
     
      def compute_distances_one_loop(self, X):
        num_test = X.shape[0]
        num_train = self.X_train.shape[0]
        dists = np.zeros((num_test, num_train))
        for i in range(num_test):   #i就是类别,i=1即类1
          dists[i,:] = np.sqrt(np.sum(np.square(self.X_train-X[i,:]),axis = 1))
        return dists
     
      def compute_distances_no_loops(self, X):
        num_test = X.shape[0]
        num_train = self.X_train.shape[0]
        dists = np.zeros((num_test, num_train))   #dists(测试类别数,测试集的数量)
        dists = np.multiply(np.dot(X,self.X_train.T),-2) 
        sq1 = np.sum(np.square(X),axis=1,keepdims = True) 
        sq2 = np.sum(np.square(self.X_train),axis=1) 
        dists = np.add(dists,sq1) 
        dists = np.add(dists,sq2) 
        dists = np.sqrt(dists)
        return dists

      def predict_labels(self, dists, k=1):
        num_test = dists.shape[0]
        y_pred = np.zeros(num_test)
        for i in range(num_test):
          closest_y = [] 
          closest_y = self.y_train[np.argsort(dists[i,:])[:k]] 
          y_pred[i]=np.argmax(np.bincount(closest_y))       
        return y_pred

    代码总结
    python自己基本上算是没学过,靠着C++的底子强行直接上了,给自己留一点提示吧
    def __init__(self):
          pass   #一般不pass,一般def __init__(self,X,y):self.X=X,就是把外部传入的变量变成类内部的东西,当然也可以像代码中再搞个方法来做这个步骤
    def train(self, X, y):
        self.X_train = X
        self.y_train = y
    这段代码就相当于做了刚才的工作
        if num_loops == 0:
          dists = self.compute_distances_no_loops(X)
        elif num_loops == 1:
          dists = self.compute_distances_one_loop(X)
        elif num_loops == 2:
          dists = self.compute_distances_two_loops(X)
    这就是三种计算测试集中每张图片和训练集中每张图片的距离的方法,循环次数不同。

    计算之后返回dists
    如果是2*2的图片的话,dists=num_test_picture*(num_train_picture个test_picture与train_picture之间的距离)
    np.argsort(dists[i,:])对每一种num_test_picture对应的num_train_picture个距离进行排序
    closest_y = self.y_train[np.argsort(dists[i,:])[:k]]  然后对每一种num_test_picture取前k个到closest_y,closest_y
    p.argmax:最大值的索引
    x = np.array([0, 1, 1, 3, 2, 1, 7])  索引0出现了1次,索引1出现了3次......索引5出现了0次...... np.bincount(x),因此,输出结果为:array([1, 3,1, 1, 0, 0, 0, 1])
    y_pred[i] = np.argmax(np.bincount(closest_y))#就把索引出现最多的那个所以赋值到y_pred[i]

    第二部分 导入数据集和做预测

    # -*- coding: utf-8 -*-
    import pickle as p
    import numpy as np
    import os
    import KNearestNeighbor
    def load_CIFAR_batch(filename):
        """ 载入cifar数据集的一个batch """
        with open(filename, 'rb') as f:
            datadict = p.load(f, encoding='latin1')
            X = datadict['data']
            Y = datadict['labels']
            X = X.reshape(10000, 3, 32, 32).transpose(0, 2, 3, 1).astype("float")
            Y = np.array(Y)
            return X, Y

    def load_CIFAR10(ROOT):
        """ 载入cifar全部数据 """
        xs = []
        ys = []
        for b in range(1, 2):
            f = os.path.join(ROOT, 'data_batch_%d' % (b,))
            X, Y = load_CIFAR_batch(f)
            xs.append(X)         #将所有batch整合起来
            ys.append(Y)
        Xtr = np.concatenate(xs) #使变成行向量,最终Xtr的尺寸为(50000,32*32*3)
        Ytr = np.concatenate(ys)
        del X, Y
        Xte, Yte = load_CIFAR_batch(os.path.join(ROOT, 'test_batch'))
        return Xtr, Ytr, Xte, Yte
       
    import numpy as np
    import matplotlib.pyplot as plt
    plt.rcParams['figure.figsize'] = (10.0, 8.0)
    plt.rcParams['image.interpolation'] = 'nearest'
    plt.rcParams['image.cmap'] = 'gray'

    # 载入CIFAR-10数据集
    cifar10_dir = 'julyedu/datasets/cifar-10-batches-py'
    X_train, y_train, X_test, y_test = load_CIFAR10(cifar10_dir)
    这样算是导入了

    X_train=np.reshape(X_train,(X_train.shape[0],-1))
    X_test=np.reshape(X_test,(X_test.shape[0],-1))
    把X_train变成行为训练集图片张数,列为单张图片的各个像素点的各个通道,如果X_train有500张图,32*32大小,彩色的图像,那X_train就变成了500*(32*32*3)的矩阵

    X_train=X_train[0:10000,:]
    X_test=X_test[0:500,:]
    y_train=y_train[0:10000]
    y_test=y_test[0:500]
    然后训练集10000张,测试集取500来测试

    得把之前写的KNN算法的代码导入一下,KNN算法也是我写成了KNearestNeighbor.py,那就import KNearestNeighbor,导入完就可以用算法来做预测了,分别取k为不同的数,看看预测的准确率
    for k in [1, 3, 5, 10, 20, 50, 100]:
      # use a particular value of k and evaluation on validation data
      nn = KNearestNeighbor.KNearestNeighbor() #这里有两个KNearestNeighbor,一个是文件,后面的是文件里的类
      nn.train(X_train, y_train)
      # here we assume a modified NearestNeighbor class that can take a k as input
      Yval_predict = nn.predict(X_test, k = k)
      acc = np.mean(Yval_predict == y_test)
      print( 'accuracy: %f' % (acc,))

    贴一下预测结果
    accuracy: 0.276000
    accuracy: 0.304000
    accuracy: 0.324000
    accuracy: 0.306000
    accuracy: 0.298000
    accuracy: 0.264000
    accuracy: 0.262000
    结果显示k=5的时候,准确率最高,至此为止,第一步算是成功的跨出去了,花了我好几天时间,,主要是python的api都不太熟悉。

    展开全文
  • 目前,深度学习和深度强化学习已经在实践中得到了广泛的运用。整理了深度学习和深入强化学习相关的在线课程,其中包括它们在自然语言处理(NLP),计算机视觉和控制系统中的应用教程。吴恩达:深度学习专项这系列课程...
  • 内容列表Lecture 7 Convolutional Neural Networks卷积神经网络历史卷积神经网络具体结构卷积层池化层全连接层神经网络架构发展...本章将开始进入正经的卷积神经网络学习中,一些细节部分前面分析的很多了...
  • 李飞飞深度学习课程笔记,李飞飞深度学习课程笔记,希望对学习有帮助,在百度网盘中
  • 李飞飞深度学习课件及作业PDF,资源全面,课件作业PDF清晰,
  • 斯坦福大学李飞飞讲授深度学习课程笔记资源和作业资源
  • 今天开始学习李飞飞老师的公开课。希望可以顺利入门深度学习。一、k最近邻与线性分类器 k近邻分类器工作方式是高效的得到本联合训练集。
  • 5个机器学习深度学习精品视频教程百度云链接集合分享,包括python基础,机器学习技法,吴恩达机器学习,深度学习,李飞飞深度学习课程的视频资源,字幕清晰,视频高清。而且有相关的配套材料,作为大合集放送了,...
  • 第八章 深度学习软件  上一章中讨论了深度学习中的优化算法,包括SGD动量、Nesterov、RMSProp和Adam;也讨论了正则化:尤其是dropout;最后也讨论了迁移学习,可以下载预训练过的模型,然后在自己的实际任务中进行...
  • 李菲菲在斯坦福大学深度学习课程的课件,在b站上有对应的视频
  • 资源型博客sky2learn整理了15个深度学习和深入强化学习相关的在线课程,其中包括它们在自然语言处理(NLP),计算机视觉和控制系统中的应用教程。 这些课程涵盖了神经网络,卷积神经网络,循环网络和其变体,训练...
  • 斯坦福计算机视觉相关课程 CS131 基础知识 CS231a 通用的计算机视觉 CS231A: Computer Vision, From 3D Reconstruction to Recognition CS231n 神经网络在计算机视觉里的应用 ...CS331 CS431 Hubel-Wiesel模型Hubel,...
  • 本课程属于机器学习的深化课程,主要是介绍深度学习(尤其是卷积神经网络和与其相关的框架)在计算机视觉领域的应用,内容涵盖多种神经网络具体结构与训练应用细节,以及针对大规模图像识别,物体定位,物体检测,...
  • 内容列表Lecture 13 Segmentation and Soft AttentionSegmentationSoft Attention小结 Lecture 13 Segmentation and Soft Attention 本章节主要介绍分割模型与注意力模型 Segmentation 分割模型其实也会分为两种,一...
  • 斯坦福CS231n 2017春季课程全公开,视频+PPT+英文字幕 2017年08月16日 21:11:43Dean0Winchester阅读数:5217 全部课程视频(英文字幕):http://t.cn/R9Dfnxn 所有课程资料、PPT等:...计算机视觉在我们的社...
1 2 3 4 5 ... 20
收藏数 2,535
精华内容 1,014
关键字:

李飞飞深度学习