880用什么主空单片几啊?

粉笔黑板,选择松久,行业协会首推,有眼光的您,还在等什么.心动不如行动,静候您的佳音,拿起电话拨打吧...

}

Mnist手写字识别,10分类问题 基于Tensorflow采用2层神经网络预测MNIST数据集手写数字10分类问题: 先定义好预测值,再定义好损失值,再定义优化求解。现在已经有了一个模型 计算模型的当前的效果和准确度


Regression解决的是分类的问题,而且是最经典的二分法,简单高效通俗易懂,原理非常简单。算法并不是越复杂越。分类问题的base model一般选择逻辑回归,其他算法和逻辑回归算法比较,差不多优先选择逻辑回归的算法,机器学习的算法选择:先逻辑回归,能简单还是用简单的,可以简单的描述为:
(1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis),一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数。
Sigmoid函数输入范围是-∝~+∝,输出值是0-1,作用就是将输入变成一个概率值,完成一个分类的任务。决策边界可以是非线性的,表达一个复杂的问题。二分类问题,y的取值只能是1或者0。g()函数就是sigmoid()函数,这里相当于做了一个映射,将回归算法里面的预测值θT*X带入自变量完成一个分类的问题。
(2)构造一个Cost函数(损失函数),该函数表示预测的输出(h)与训练数据类别(y)之间的偏差,可以是二者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为J(θ)函数,表示所有训练数据预测值与实际类别的偏差。可以从回归算法直接推导到逻辑回归算法中,通过Sigmoid函数映射过就可以。
(3)显然,J(θ)函数的值越小表示预测函数越准确(即h函数越准确),所以这一步需要做的是找到J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有的是梯度下降法(Gradient Descent)。

我们知道MNIST的每一张图片都表示一个数字,从0到9。我们希望得到给定图片代表每个数字的概率。比如说,我们的模型可能推测一张包含9的图片代表数字9的概率是80%但是判断它是8的概率是5%(因为8和9都有上半部分的小圆),然后给予它代表其他数字的概率更小的值。
线性层的spftmax回归模型识别手写字是一个使用softmax回归(softmax regression)模型的经典案例。softmax模型可以用来给不同的对象分配概率。即使在之后,我们训练更加精细的模型时,最后一步也需要用softmax来分配概率。


    1. Tensorflow 不是一个普通的 Python 库。大多数 Python 库被编写为 Python 的自然扩展形式。当你导入一个库时,你得到的是一组变量、函数和类,它们补充并扩展了你的代码“工具箱”。使用这些库时,你知道它们将产生怎样的结果。
    2. 我认为谈及 Tensorflow 时应该抛弃这些认识,这些认知从根本上就不符合 Tensorflow 的理念,无法反映 TF 与其它代码交互的方式。pthon 和 Tensorflow 之间的联系,可以类比 Java 和 HTML 之间的关系。Java 是一种全功能的编程语言,可以实现各种出色的效果。HTML 是用于表示某种类型的实用计算抽象(这里指的是可由 Web 浏览器呈现的内容)的框架。Java 在交互式网页中的作用是组装浏览器看到的 HTML 对象,然后在需要时通过将其更新为新的 HTML 来与其交互。
    3. 与 HTML 类似,Tensorflow 是用于表示某种类型的计算抽象(称为“计算图”)的框架。我们用 Python 操作 Tensorflow 时,我们用 Python 代码做的第一件事是组装计算图。之后我们的第二个任务就是与它进行交互(使用 Tensorflow 的“会话”)。
    4. 但重要的是,要记住计算图不在变量内部,它处在全局命名空间内

    第一个关键抽象:计算图

    Tensorflow 是用于表示某种类型的计算抽象(称为“计算图”)的框架。 之后我们的第二个任务就是与它进行交互(使用 Tensorflow 的“会话”)。 但重要的是,要记住计算图不在变量内部,它处在全局命名空间内。 第一个关键抽象:计算图 0-仅仅导入 Tensorflow 并不会给我们生成一个有趣的计算图,而只有一个孤独的,空白的全局变量

    19:59:38正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。
    所以我们判断一个字符串是否是合法的Email的方法是:

    • 创建一个匹配Email的正则表达式;
    • 用该正则表达式去匹配用户的输入来判断是否合法。

    了解如何用字符来描述字符
    在正则表达式中,如果直接给出字符,就是精确匹配。
    - 用\d可以匹配一个数字
    - \w可以匹配一个字母或数字
    - .可以匹配任意字符

    要匹配变长的字符,在正则表达式中
    - 用*表示任意个字符(包括0个),
    - 用+表示至少一个字符
    - 用?表示0个或1个字符,
    - ^\d表示必须以数字开头

    • 引用语义:在python中,变量保存的是对象(值)的引用,我们称为引用语义。采用这种方式,变量所需的存储空间大小一致,因为变量只是保存了一个引用。也被称为对象语义和指针语义。
    • 值语义:有些语言采用的不是这种方式,它们把变量的值直接保存在变量的存储区里,这种方式被我们称为值语义,例如C语言,采用这种存储方式,每一个变量在内存中所占的空间就要根据变量实际的大小而定,无法固定下来。
    • 值语义和引用语义的区别:
      值语义: 简单的、 具体的、 可复制的
      引用语义:复杂的、 抽象的、 不可复制的
        由于python中的变量都是采用的引用语义,每个变量中都存储了这个变量的地址,而不是值本身;对于复杂的数据结构来说,里面的存储的也只只是每个元素的地址而已

    1. 注意回归与分类问题的差别。回归的结果是一个完整的值,分类是是与否的问题。 特征值是怎么影响结果的。先进行一个假设,假设参数,参数反应的是数据对结果的影响,也称为权重系数,对最后的结果产生较大的影响。参数和数据进行组合最终拟合出一个平面。
    2. 偏置项和数据没有关系,对最后的结果产生较小的影响。对偏置项进行组合,使得原式保持不变,因此引入X0 参数,全部等于1。这也是我们处理数据的时候,为什么在数据项增加一组数据全部为1,对上面的平面进行组合,看起来更加简单一些。矩阵计算方便,矩阵计算高效,而不是采用for循环。

      理论模型和实际模型之间肯定是存在差异的,引入误差项
      误差的特征(机器学习假设,从实际情况出发,做出的假设):

      1. 独立: 每个样本都是独立的,之间没有影响
      2. 同分布:同一家银行,因为只能建立一个模型,建立模型的数据都是来自同一个部分。
      3. 高斯分布 (正态分布)均值为0 方差为出现的可能性 大范围的偏差,中间的值比较多,两边的值比较小。

      似然函数求解(误差与测量值之间的关系)
      观测样本数据得到参数,什么样的参数跟数据组合得到的真实值的可能性越大越好。什么样的参数跟数据组合得到的真实值的可能性(概率)越大越好,称为真实值的概率最大最好。线性回归依照最大似然函数来知道什么参数是合理的,离真实值比较接近
      目标函数的推导 使得对数似然函数最大的变量
      求目标函数最小值,因此我们需要对目标函数求偏导数。矩阵求偏导数的公式。
      为什么偏导数等于0的时候对应的是最小值呢?
      涉及到机器学习中的一个概念 凸优化
      在凸函数里面,偏导数等于0对应的是最小值

    R^2越接近1越好 越接近0越不好

    神经网络和卷积神经网络

    DNN是深度神经网络,是一种统称
    神经网络不需要提取特征,在前向传播当中,学习权重,完成直线之间的且操作和或操作

    神经强大的原因在于:不需要你手动提取特征,表征其在样本空间中的分布,神经网络可以自动学习它的空间分布,不管样本分布在那个角落和区域
    CNN 卷积神经网络 在图像中特别强大

    卷积神经网络之层级结构

    RGB在CNN中不需要提取特征,惹事直接输入RGB像素点参数。
    归一化的目的是将数据在某一范围内显示,不一定是0——1或者-1—1之间。
    归一化在RGB中可以不用归一化,因为RGB输入的数据都遭0~255之间,数据可以先做Resize PCA和白化不常用
    取均值:训练集和测试集去均值都是减去训练集的均值,因为测试集的均值是改变,每一次都不相同,因此我们需要减去训练集的均值,进行去均值化

    神经元filter相当于滤波器 经过卷积操作,可以提取出图片中的一些特征,可能是边缘,可能是颜色也可能是其他.
    卷积神经层网络有一个重要的特征:参数共享机制。无论怎么滑动滑动,对于同一个神经元,四条边上的权重是一样的,滑动的时候只有数据输入在变化,对于神经元对应一组权重参数固定。固定每个神经元的连接权重,对于一个filter来说,就相当于一个模板,输入给它的data参数在变化。模板对数据的匹配是有一个权重矩阵对数据进行内积操作。一个filter可以看作一个固定的内积权重,也就是说一个filter只关注一个特性。权重的共享特性使得特征参数的个数降低,特征参数可以从2亿降到/u/article/details/

    2-定义一个数组,二维矩阵 像list of list结构,三维矩阵就写三个中括号[]
    
     


    输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
    输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。

    递推的思想(从上至下):
    把字符串分为两个部分:
    1-字符串的第一个字符
    2-第一个字符以后的所有的字符
    第一步:求所有可能出现在第一位置的字符,遍历用索引实现
    第二步:求第一个字符以后的所有的字符的全排列,我们人可以将后面的字符串分成两个部分:
    1-后面字符串的第一个字符
    2-这个字符以后的所有字符
    求所有可能 出现在第一个位置的字符,遍历用索引实现
    在一个长度为n的数组里的所有数字都在1-n范围内,数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数字中任意一个重复的数字。前提条件是不能修改数组

    建立一个全部为0值,长度为 n 的哈希表,如果没有重复数字,哈希表中所有的值全部为1,不存在第二次赋值为1的情况
    1-从头到尾扫描原数组Lst,下标为i的位置上对应的数字是m
    2-判断哈希表中下标为m的位置上值是否为0
    3-为0,将数组数字m放到哈希表中,即令哈希表总对应的值为1(1是这里的一个标记值,用来判断)
    表示哈希表中下标为m的位置上没有对应值,即原列表中第一次出现数字m
    4-为1,返回数字m,数字m为重复的数字。
    因为哈希表中已经存在数字m,在此基础上原列表i位置上又出现了数字m,数字m为重复的数字

    如果避免使用O(n)的空间消耗,可以使用二分法查找算法,但是增加了一个统计数字出现的个数过程.

    二分查找算法+统计区间数字
    如果1—m区间内的数字超过了m,那么这一半的区间内一定存在重复的数字;否则另外一半一定存在重复的数字。我们可以继续将包含重复数字的区间一分为二,直到找到重复的数字。

    • 找到重复的数字:当数字范围startN == endN的时候,判断该数字出现的次数超过1,则找到重复数字返回该数字

      例如:一个长度为n的正序数列,查找一个数 target是否在这个数列当中
      1-取数列正中间的数mid,
      如果mid和x相等,则找到结果,查找成功 返回True
      如果mid比x大,则x应该在mid的左侧,我们把mid左侧当作一个新的数列li
      如果mid比x小,则x应该在mid的右侧,我们把mid右侧当作一个新的数列li
      2-对于新的数列li 进行1的查找工作
      3-一直重复上面查找,生成新的数列li为空的时候则 数列当中没有数x 返回False
      通过循环改变数组的start end mid位置处的索引,直到找到该元素。

      最优O(1) 第一次取中间数mid 找到了 这种概率很低
      最坏O(log n) 假设n个数的数列,每次把数列分成两半,n除以多少次2 等于1 呢? log n次

      if not a: #细节1:每次递推a列表都是新的参数,需要对列表a进行判断

      因为思想相同,循环和递归的时间复杂度是一样的。二分法递归的实现,每次都要开新的列表,实际上空间复杂度会更大

}

我要回帖

更多关于 空主 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信