自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 tensorflow实现卷积神经网络

卷积神经网络的简介:相对于传统的图像分类,卷积神经网络(Convolutional Neural Network, CNN)提取的特征能够达到很好的效果,同时不需要将特征提取和分类训练两个过程分开。CNN的构成: (1)输入层,在CNN中,输入层与全连接网络的输入层类似,是一张图像的像素矩阵。 (2)卷积层,它是CNN中最重要的组成部分,卷积层中每一个节点的输入只是上一层神经网络的一小...

2018-04-17 11:03:32 3769

原创 tensorflow实现多层感知机

在前面的博客中我们已经讨论过softmax实现分类的例子,该模型最大的特点是简单易用,但是拟合能力不强。它和传统意义上的神经网络的最大区别是没有隐含层。对于神经网络来说,引入非线性隐含层后,理论上只要隐含节点足够多,即使只有一个隐含层的神经网络也可以拟合任意函数。同时隐含层越多,越容易拟合复杂函数。理论表明,为了拟合复杂函数需要的隐含节点的数目,基本上随着隐含层的数量增加呈现指数下降的趋势。这...

2018-04-09 10:58:48 2291 1

原创 TensorFlow实现自编码器

自编码器介绍: 深度学习可以解决一些人工难以提取有效特征的问题。在深度学习的早期,它一直被认为是一种无监督特征学习的方法。对于深度学习用于特征学习有两个关键点: 1)无监督学习,即不需要标注的数据就可以对数据进行一定程度的学习,提取频繁出现的特征; 2)逐层抽象,即从简单的微观的特征开始,不断抽象特征的层级,逐渐往复杂的宏观特征转变。例如以汽车图片为例,深度学习的特征学习过程为:将一张图片的...

2018-04-04 14:32:48 1375

原创 tensorflow实战 Softmax Regression识别手写体数字

首先介绍一下MNIST数据集: MNIST数据集中每个图像是28*28像素大小的灰度图像,空白部分灰度值为0,有笔记的地方灰度值为(0,1]的取值,其中MNIST数据集中,训练样本为55000个,测试样本为10000个,验证集样本为5000个,每一个样本都有其对应的标签信息,即label。它们的图像如下图所示。它们各自的作用为,在训练集上训练模型;在验证集上检验结果并决定何时完成训练;在测试集上...

2018-03-27 21:39:08 1999

原创 斯坦福大学机器学习笔记——推荐系统(协同过滤、低秩分解、推荐系统)

这个博客让我们来讨论一下推荐系统,首先我们来讨论一下为什么学习推荐系统: 1. 推荐系统是机器学习中的一个重要应用,它已经用于很多企业中,比如淘宝、今日头条、亚马逊等。它们会根据你的浏览记录,当你再次访问时,会给你推荐一些你感兴趣的东西。 2. 我们从前面学过的机器学习知道,对于一个算法特征的选择,对算法性能的影响很大。而后面讲到的推荐系统的建立过程中,该算法可以自动的学习一套很好的特征,而不

2018-01-15 15:34:44 2094 1

原创 斯坦福大学机器学习笔记——异常检测算法(高斯分布、多元高斯分布、异常检测算法)

异常检测问题介绍: 异常检测算法主要用于无监督学习问题,但从某种角度看它又类似于一种有监督学习的问题,下面我们从一个例子中简单介绍一下什么是异常检测问题。 比如我们有一个飞机引擎制造商,对于一个新造出的飞机引擎我们想判断这个引擎是不是异常的。 假如我们有两个飞机引擎的特征:1)引擎运转时产生的热量;2)引擎的震动强度。我们得到了一个数据集:x1,x2,...,xm{x^{1},x^{2},..

2018-01-14 21:58:33 10947

原创 斯坦福大学机器学习笔记——降维(PCA算法)

降维也是一种无监督学习的问题。所谓的降维,就是将高维度的数据降低到低维度空间,同时降维之后的数据又能够很好的表征原来数据的特性。 以具体的例子来说明一下什么是降维: 比如我们使用厘米和英尺表示同一物体的长度,如果我们使用一个仪器测量的结果单位是厘米,另一个仪器测量单位是英尺,两种仪器对同一物体测量的结果可能不完全相同(由于误差和精度),但是如果直接将两个特征都作为该物体长度的特征又很冗余,所以我

2018-01-05 21:14:31 9657

原创 斯坦福大学机器学习笔记——聚类(k-均值聚类算法、损失函数、初始化、聚类数目的选择)

上面的博客的算法都是有监督学习的算法,即对于每个数据我们都有该数据对应的标签,数据集的形式如下: 而今天我们学习的算法是一种无监督学习的算法——聚类,该算法中的每个数据没有标签,数据集的形式如下: K-均值聚类 k-均值聚类是一种最常见的聚类算法,该算法对没有标签的数据集进行训练,然后将数据集聚类成不同的类别。 k-均值聚类是一种迭代算法,该方法的过程如下: 1. 选择K个随机点,作为

2017-12-21 10:54:51 16078 3

原创 斯坦福大学机器学习笔记——机器学习系统设计(误差分析、查全率和查准率、F1值)

这次博客我们主要讨论机器学习系统设计的主要问题,以及怎样巧妙的构建一个复杂的机器学习系统。 我们先用一个例子引入机器学习系统的设计: 以一个垃圾邮件分类器算法为例: 对于该问题,我们首先要做的是怎样选择并且表达特征向量x。我们可以选择100个词所构成的列表(这个词不仅包括垃圾邮件里面的词同时还包括非垃圾邮件里面的词,我们这里是手动选择的100个词,而在真正的算法中我们一般选择出现频率最高的

2017-12-05 16:38:41 1446

原创 斯坦福大学机器学习笔记——当训练模型性能不好时的措施(假设评估、模型选择和交叉验证集、正则化、学习曲线)

以我们前面讲述的线性回归为例,比如我们在训练集上训练出最优的模型,但是当我们将其使用到测试集时,测试的误差很大,我们该怎么办? 我们一般采取的措施主要包括以下6种:增加训练样本的数目(该方法适用于过拟合现象时,解决高方差。一般都是有效的,但是代价较大,如果下面的方法有效,可以优先采用下面的方式);尝试减少特征的数量(该方法适用于过拟合现象时,解决高方差);尝试获得更多的特征(该方法适用于欠拟

2017-12-02 15:32:53 10464 2

原创 斯坦福大学机器学习笔记——正则化的逻辑回归模型

在上面博客中我们讨论了正则化的线性回归模型,下面我们来讨论一下正则化的逻辑回归模型。 前面我们讲述了两种常用于逻辑回归的方法:基于梯度下降法的逻辑回归模型基于高级优化的逻辑回归模型基于梯度下降法的逻辑回归模型: 首先我们还是需要先设计加入正则化后的损失函数,与线性回归模型相似,我们只需要在原来逻辑回归损失函数的基础上加入正则化即可,于是,加入正则化后的损失函数为: 与线性回归模型相同

2017-11-20 16:27:35 1080

原创 斯坦福大学机器学习笔记——过拟合问题以及正则化的解决方法

当我们使用前面博客所讲述的线性回归和逻辑回归时,经常会出现一种过拟合(over-fitting)问题。下面对过拟合下一个定义:过拟合(over-fitting): 所谓的过拟合就是:如果我们有非常多的特征时,通过使用这些特征学习得到的假设可能非常好地适应训练集(代价函数很小,几乎为零),但是可能这种假设不能推广到新的数据(对于新的数据预测的结果不好,也就是我们所说的泛化能力不强)。 下面我们从例

2017-11-20 10:34:59 995

原创 局部加权线性回归(内含代码)

在之前的博客中我们已经简单讨论过一些回归的算法,如使用假设和梯度下降法的单变量线性回归和多变量线性回归以及采用正规方程的线性回归,这次我们简单讨论一下局部加权线性回归(Local Weighted Liner Regression)。 局部加权回归可以看做正规方程的一种改进,通过上次博客中的代码,我们针对那个数据集会产生一个下图所示的拟合曲线: 从上面可以看出,该曲线拟合的效果不是很好,存在

2017-11-17 16:14:41 8517 7

原创 斯坦福大学机器学习笔记——逻辑回归、高级优化以及多分类问题

先简单说一下逻辑回归,其实会有很多人误解,会将逻辑回归当成回归算法,其实逻辑回归就是我们所说的分类问题,所谓的逻辑,一般我们说的逻辑就是逻辑0或者逻辑1,所以可以借此理解。但是逻辑回归不仅仅只包括两分类问题,它还包括多分类问题。 那么能否使用线性回归的思想解决逻辑回归吗,我们从以下两方面考虑: 1. 假设如下图所示的数据集: 假设使用线性回归来拟合该数据集,当出现一个较大的波动点时(最右侧

2017-11-12 21:40:03 3594 2

原创 斯坦福大学机器学习笔记——特征和多项式回归以及正规方程

我们可以举一个例子来引入多项式回归: 比如我们之前遇到的房价问题,对于房价的影响我们假设有两个特征,一个是房子的宽度x1x_{1},另外一个是房子的长度x2x_{2},这针对房价的估测我们可以建立下面形式的假设: hθ(x)=θ0+θ1x1+θ2x2h_{\theta }(x)=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2} 但是我们可以换一个角度思

2017-11-05 22:21:54 3233

原创 斯坦福大学机器学习笔记——多变量的线性回归以及梯度下降法注意事项(内有代码)

在前面博客中介绍了单变量线性回归的实现过程,本文将介绍多变量线性回归算法。 两者的对比如下: 1.数据方面的差异: 单变量线性回归数据: 多变量线性回归数据: 对于单变量线性回归来说,只有一个特征(房子的大小),而对于多变量线性特征回归特征的数量为多个(房子的大小、卧室的数量等) 2.模型构成上的差异: 单变量模型: 多变量模型: 首先介绍多维特征用矩阵形式的表示:

2017-10-30 17:54:48 2658 4

原创 斯坦福大学机器学习笔记——单变量的线性回归以及损失函数和梯度下降法(包含代码)

回归问题: 所谓的回归问题就是给定的数据集,且每个数据集中的每个样例都有其正确的答案,通过给定的数据集进行拟合,找到一条能够最好代表该数据集的曲线,然后对于给定的一个样本,能够预测出该样本的答案(对于回归问题来说,最终的输出结果是一个连续的数值)。比如,房价预测问题,最终的输出房价是一个连续的数值。回归问题是监督学习的一种。 分类问题: 与回归问题一样,分类问题同属于监督学习,

2017-10-27 16:30:38 3723 2

原创 TensorFlow实战Google深度学习框架第三章总结

该文主要是总结了Tensorflow实战Google深度学习框架的第三章,修正了代码中一些不存在函数的修改。

2017-10-25 20:45:47 1791

原创 TensorFlow实战Google深度学习框架第一章总结

机器学习定义:如果一个程序可以在任务T上,随着经验E的增加,效果P也随之增加,则称这个程序可以从经验中学习。例如:假设一个判断邮件是否为垃圾邮件的程序,则对应的任务T为给定一个邮件,分类这个邮件是否为垃圾邮件;经验E为给定的已经知道的邮件的标签;性能P这个程序正确分类垃圾邮件和非垃圾邮件的数量或者比率。逻辑回归算法性能的影响因素:1.依赖于训练数据;2.依赖于从数据中提取的特征

2017-10-25 20:40:23 319

原创 斯坦福大学机器学习笔记——机器学习基础以及有监督学习和无监督学习举例说明

本文主要介绍了什么是机器学习,以及机器学习的分类和有监督学习和无监督学习的区别

2017-10-25 20:27:59 2017

原创 C++ Primer Plus(第六版)第六章编程练习答案

1.请编写一个程序,读取键盘输入,直到遇到@符号为止,并回显输入(数字除外),同时将大写字符转换为小写,将小写字符转换为大写(别忘了cctype函数系列)#include<iostream>#include<cctype>using namespace std;int main() { char ch;

2018-10-24 23:12:49 3006 1

原创 C++ NULL与nullptr

在最近写代码时会遇到判断是否为空指针,看别人的代码有时候用NULL有时候用nullptr,所以查了一下他们之间的区别: 首先NULL和nullptr都能代表空指针,但是在C++中代表的含义是不同的,NULL被定义为整型变量0或者直接就是由0转化成的void*。它的定义代码如下:#ifndef NULL #ifdef __cplusplus #define NULL 0...

2018-08-27 10:54:45 1829

原创 C++实现堆排序

堆的定义: 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 1.堆中某个节点的值总是不大于或不小于其父节点的值; 2.堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆或大顶堆,根节点最小的堆叫做最小堆或小根堆或者小顶堆。常见的堆有二叉堆、斐波那契堆等。 堆的定义如下:n个元素的序列{k1,k2,ki,…,...

2018-08-27 10:40:22 1509 1

原创 C++希尔排序

希尔排序的提出: 直接插入排序算法的问题: 若一个最小的值在后面,那么当排这个最小值的时候需要一步步移动,将其移动到序列的最前面,那么有没有什么方法减少这种移位? 我们不希望一步一步移动,而是给它设置一个增量让其大步移动,希尔排序由此产生,同时希尔排序打破了排序算法时间复杂度不能低于O(n2)O(n2)O(n^2)。 希尔排序采用跳跃分割的策略: 将相距某个“增量”的记录组成一个子序列,...

2018-08-21 16:58:58 2250

原创 C++实现直接插入排序

直接插入排序算法思想: 将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录加1的有序表。 举例说明: 例如对于{5,3,4,6,2}的序列: 第一步从记录为1出发,记录为1的关键字为3,3比5(记录为1-1=0的关键字,也就是比较插入位置之前的关键字)小,所以找到3要插入的位置,也就是记录为0的位置,将要插入位置以及之后(到处理的记录为止,也就是说不需要将4,6,2元素移动,只需...

2018-08-17 10:49:58 2961

原创 C++实现简单选择排序

简单选择排序的思想: 通过n−in−in-i次关键字间的比较,从n−i+1n−i+1n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)i(1<=i<=n)i(1n−1n−1n-1,第二次循环需要n−2n−2n-2,第三次需要n−3n−3n-3,以此类推,总的时间复杂度为:n−1+n−2+...+2+1=n(n−1)/2n−1+n−2+...+2+1=n(n...

2018-08-15 23:08:12 1908

原创 C++实现冒泡排序的变型——定向冒泡排序(鸡尾酒排序)

鸡尾酒排序: 鸡尾酒排序,也叫定向冒泡排序,是冒泡排序的一种变型。 鸡尾酒排序的思想: 鸡尾酒排序首先从序列的左侧两两比较相邻元素的大小,若前面比后面大则交换两者顺序,否则不交换,当进行一次遍历之后,序列的最后一个元素为最大值,然后从序列的右侧出发(排除了最后一个元素)两两比较相邻元素的大小,若前面比后面大则交换两者顺序,否则不交换,当进行一次遍历之后,序列的最前面一个元素为序列的最小值,一...

2018-08-15 11:45:47 526

原创 C++实现冒泡排序以及优化

冒泡排序(Bubble Sort)基本思想: 两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 冒泡排序的基本流程: 1.比较相邻的元素,如果前一个比后一个大,就把它们两个调换位置。 2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3.针对所有的元素重复以上的步骤,除了最后一个。 4.持续每次对越来越少的元素重复上...

2018-08-13 17:38:19 2674

原创 C++二维数组创建以及行列的求法

1.普通方法创建二维数组: 二维数组的声明: 对于一维数组来说,数组的大小可以省略,但对于二维数组,C++规定,在声明和初始化二维数组时,只有第一维(行数)可以省略。 合法的声明有:int a[2][3];int a[][3];不合法的声明:int a[][];int a[2][];二维数组的初始化: 可以在声明时初始化:int a[2][3] = {{1,2,...

2018-07-29 16:07:50 6012

原创 今日头条2017校招笔试题

问题描述: 头条的2017校招开始了!为了这次校招,我们组织了一个规模宏大的出题团队,每个出题人都出了一些有趣的题目,而我们现在想把这些题目组合成若干场考试出来,在选题之前,我们对题目进行了盲审,并定出了每道题的难度系统。一场考试包含3道开放性题目,假设他们的难度从小到大分别为a,b,c,我们希望这3道题能满足下列条件: a<=b<=c b-a<=10 c-b<=1...

2018-07-16 17:25:18 1334

原创 C++实现线性表链式存储结构的创建插入和删除

主函数为:#include <iostream>using namespace std;typedef int eletype;struct Node{ eletype data; Node * next;};//typedef struct Node *LinkList;void createLinkList(Node * L, int n);...

2018-07-07 16:35:20 3817

原创 C++ 实现线性表顺序存储结构的插入与删除

主函数:#include <iostream>typedef int eletype;const int MaxSize = 25;struct Sqlist{ eletype arr[MaxSize]; int length;};void getArr(Sqlist & sqlist);void showArr(const Sqlist...

2018-07-05 10:09:39 4403

原创 sizeof对静态数组和new动态数组求长度的区别

sizeof可以用来求取数组的长度,但是只是针对静态数组而言,比如:int arr[] = {1,2,3,4,5,6,7};int result = sizeof(arr);result的结果会是7*4=28,因为静态数组中有7个元素,每个元素的类型为int型,占4个字节。 因此可以使用下面的代码求静态数组的程度:int result = sizeof(arr)/sizeo...

2018-07-02 10:27:27 6590 2

原创 C++ 分别利用数组和string对象实现从长字符串中计算短字符串出现的次数

问题描述: 对于两个字符串,一个长字符串一个短字符串,在长字符串中查找短字符串出现的次数。例如,对于长字符串str_long为”goodgooledfdsgooglessd”,短字符串str_short为”google”,则输出的结果为出现次数为2次,下标为5和14。#include<iostream>#include<string>using namespace...

2018-06-22 14:38:48 648

原创 C++ Primer Plus(第六版)第五章编程练习答案

1. 编写一个要求用户输入两个整数的程序。该程序将计算并输出这两个整数之间(包括这两个整数)所有整数的和。这里假设先输入较小的整数。例如,如果用户输入的是2和9,则程序将指出2-9之间所有整数的和为44. #include<iostream>using namespace std;int main() { int min, max; int total =...

2018-05-18 17:01:58 1853

原创 C++ Primer Plus(第六版)第四章编程练习答案

1. 编写一个C++程序,如下述输出示例所示的那样请求并显示信息: What is your first name? Beety Sue What is your last name? Yewe What letter grade do you deserve? B What is your age? 22 Name: Yewe, Betty Sue Grade: C ...

2018-05-17 22:25:39 3101

原创 C++ Primer Plus(第六版)第三章编程练习答案

1. 编写一个小程序。要求用户使用一个整数指出自己的身高(单位为英寸),然后将身高转换为英尺和英寸。该程序使用下划线字符来指示输入位置。另外,使用一个const符号常量来表示转换因子。 注:1英尺=12英寸。#include<iostream>using namespace std;const int Factor = 12;int main() { int h...

2018-05-13 17:14:19 2128

原创 C++ Primer Plus(第六版)第二章编程练习答案

1.#include<iostream>using namespace std;int main() { cout << "Bob" << endl; cout << "USA" << en

2018-05-13 11:49:46 520

原创 texlive2017、sublime text 3以及SumatraPDF的安装与环境配置

所需要的软件: texlive2017、SumatralPDF、Sublime Text,这三个软件可以通过我的百度云中下载,链接为:https://pan.baidu.com/s/1AzUHsND1UcYWK1-PAqf0Yw,密码为: l9qb1. 安装SumatralPDF: 直接点击安装就可以,尽量不要改路径,因为后面要进行路径匹配。 2. 安装texlive20...

2018-04-24 11:46:12 3018 3

转载 VS快捷键

该内容转载与该博客快捷键: 生成解决方案 F6,生成项目Shift+F6调试执行F5,终止调试执行Shift+F5执行调试Ctrl+F5查找下一个F3,查找上一个Shift+F3附加到进程Ctrl+Alt+P,逐过程F10,逐语句执行F11切换断点F9(添加或取消断点)运行至光标处Ctrl+F10跳出当前方法Shift+F11新建解决方案:Ctrl+Shift...

2018-04-22 13:00:13 189

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除