![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Artificial Intelligence
文章平均质量分 86
LorneNote
程序员,徜徉在技术海洋中的漫游者、探索者与实践者。
展开
-
基础篇 | 02 Python 入门
Python的基本语法 如何在Terminal打开Python? 如果你做Java或C++开发,你会在IDE里面完全编写好,在通过编译链接等变成可执行文件,比如Java变成class文件,然后通过JVM语言去运行。但是Python不一样,它是解释型的脚本语言,它的优点是可以做交互式的编程。如果你已经预装Anaconda,打开命令提示符之后,可以输入一个ipython,会进入一个命令提...原创 2018-04-08 07:33:37 · 370 阅读 · 0 评论 -
基础篇 | 16 C++ 编程入门(七)虚函数
虚函数是C++当中非常重要的概念,它事实上是C++组装成完整程序当中最为重要的环节。如果大家不能理解虚函数是怎么工作的,能解决什么样的问题。这个事情是很麻烦,所以今天要我们来谈谈虚函数是怎么回事。 Virtual的定义及作用为了直观解释,我们先来看一段代码// 定义基类class BaseClass // 虚基类 // 接口类 // 接口{public: Base...原创 2018-06-03 11:17:51 · 180 阅读 · 0 评论 -
基础篇 | 13 C++ 编程入门(六)类型转换
C++是强类型语言,任何变量都必须有类型的,C++当中的类型转换比Java或C#都要复杂的多。大概包括以下四种转换: 1.动态类型转换 dynamic cast 2.隐式转换 static cast 3.强制转换 reinterpret cast 4.const转换 const cast 这四种转换用好对C++编程是非常有帮助的,也是C++类型系统当...原创 2018-05-23 06:36:39 · 229 阅读 · 0 评论 -
基础篇 | 14 C++ 图像处理
Xcode下安装OpenCVOpenCV是一个非常完善的开源计算机视觉库,现在也支持CPU加速这个特性,它提供了C、C++、Python、Matlab多种接口,并且是跨平台的,支持在Windows、Linux、macOS、Android、iOS。现在我们来看一下如何在Xcode下下载安装OpenCV,Mac下直接去官网下载,拖入工程中,笔者尝试是不成功的。需要自行编译或使用软件源,我们用h...原创 2018-06-01 07:41:39 · 1258 阅读 · 0 评论 -
基础篇 | 17 C++ 编程入门(八)类型转换与多重继承
C++ 其它类型转换前面文章我们讲过dynamic_cast —> RTTI,static_cast;今天再讲讲reinterpret_cast ,const_cast,这些就是C++里面的全部类型转换,这些都熟练掌握后,写C++的类型转换会行云流水。回顾一下之前: dynamic cast <-> RTTI(at runtime) 在一条继承链上,向上或向下做类型转...原创 2018-06-09 11:30:02 · 753 阅读 · 0 评论 -
基础篇 | 15 C++ 科学计算 - OpenBLAS的安装与使用
BLAS简介类似于Anaconda里面的numpy,C++里面也有类似的矩阵运算库,称之为BLAS(Basic Linear Algebra Subprograms):基础线性代数子程序库。 支持的数据类型有:单精度浮点数(float)双精度浮点数(double)单精度负数双精度负数 在机器学习里面一般我们只用float类型,很少使用double,考虑到性能,我们认为float...原创 2018-06-02 16:22:56 · 29778 阅读 · 5 评论 -
基础篇 | 18 Linux下Makefile编译文件制作
在Xcode中,我们写完程序直接Run编译运行,我们的IDE集成开发环境会帮我们自动编译。不用自己写编译文件,而在Linux下,我们的g++编译器,在写完程序后需要一个Makefile文件,把程序编译出来。也就是把我们的代码编译成二进制文件,程序才能运行。手写一个Makefile文件,可以从一个最基本的层面了解程序是如何跑起来的,Makefile的写法很多,我们用一种比较精简的方式,基本上所有的程...原创 2018-06-17 09:33:53 · 1821 阅读 · 0 评论 -
实战篇 | 19 网络通信与序列化
进程间通信通信与机器学习的关系这些内容看起来好像和机器学习没有关系,但是对于一个完整的分布式实时处理系统来说,机器学习的框架是基于实时分布式处理系统的基础上去架构的,从而形成一个完整的Machine Learning Platform。如下图: 同一台机器内的进程间通信为什么需要进程间通信思考这样一个背景问题 场景一: 我们为什么需要进程间通信,大家想想这样一...原创 2018-06-25 07:44:54 · 1448 阅读 · 2 评论 -
实战篇 | 21 C++ 多线程与资源竞争问题
小知识:C++指针与引用的区别 对C++当中的指针和引用,用时还是分不清,C++里面为什么要有这两种概念呢,分为能解决什么样的问题呢,类比来看呢,Java或C#这样的高级编程语言里面,为什么没有出现指针这个东西呢,只有引用这个概念? 我们来看一个例子 Java当中传递是引用,指向的都是同一个对象,所以,o.getName()得到的是Samuel。 在C++中,因为参数传递...原创 2018-07-08 09:51:27 · 3568 阅读 · 0 评论 -
实战篇 | 20 Linux 网络通信 与 C++ 11 编码
一切皆文件Linux有一个非常高层次的抽象,它把我们计算机中所有的东西全都抽象出了文件这么一个东西,正常情况下,我们在硬盘里创建文件,读写内容。在Linux底下,它用这个文件去抽象了很多东西。除了我们基本文件,比如视频文件,文本文件,还有一些特殊文件。比如文件夹、管道文件、负荷连接、硬连接这些都会以文件的形式展现给我们。除此以外,它把我们的硬件设备也抽象成了文件这么一个 概念。比如我们...原创 2018-07-03 06:49:13 · 891 阅读 · 0 评论 -
基础篇 | 12 C++ 编程入门(五)- 容器
简明定义: container:存储数据的一种数据结构。vector连续存储的动态数组。vector的声明和初始化 // declare int type array, also called initialize expression // method 1 std::vector<int> vec = { 1, 2, 3...原创 2018-05-20 07:27:06 · 192 阅读 · 0 评论 -
基础篇 | 11 C++ 编程入门(四)- 指针
为什么使用 C++前面几篇文章也写了一些代码,相信大家也有了一些感受,C++是一门极其自由、功能非常强大、语法又非常复杂的编程语言。那为什么还要用C++,在机器学习当中,C++如此之流行,包括我们知道的TensorFlow,Coffee,还有腾讯出的NCNN这个深度学习框架,他们都是使用C++编写的。这里面最大的考虑其实就是尽可能发挥硬件的性能。C++ 编写出来的程序执行效率远远高于Java、...原创 2018-05-12 12:41:27 · 211 阅读 · 0 评论 -
基础篇 | 01 机器学习基础
本系列概述核心内容是深度学习,只不过我们会进行代码实践,来巩固我们讲的概念的基础。会使用机器学习开发可以实际使用的工程项目,这也是我们这个系列跟其它机器学习最大区别的地方。深度学习的意义当然,不可能通过几个系列涉及深度学习的所有方法,所以我们重点关注的是近几年广泛得到运用的深度学习技术。可以预见的也是深度学习在现在或将来将会成为最有效的、最流行的机器学习方式之一。因为深度学习在这个...原创 2018-03-31 15:17:40 · 660 阅读 · 0 评论 -
基础篇 | 03 Python 应用 - 数据解析
完整代码展示:# 原始数据STUDENTS_TEXT = [ '学号 姓名 语文 英语 数学', '1 A 90 80 100', '2 B 77 67 96', '3 C 85 100 90', '4 D 98 90 44', '5 E 60 72 66']def main():...原创 2018-04-14 13:20:38 · 140 阅读 · 0 评论 -
基础篇 | 04 K-Means 算法
聚类算法和关联分析算法简述K-Means算法(聚类算法) K均值算法,将数据分为某一类,但不会告诉你类的具体名称,需要我们自己指定类的标签。本质上它是计算点与点之间的最小距离,将他们归为一类。Apriori算法(关联分析算法) 寻找数据之间频繁项集、并做数据推荐的算法。常见Amazon、京东、淘宝等的商品推荐。FP-Growth算法(关联分析算法) 和Apriori算法功能一样,但...原创 2018-04-14 16:26:13 · 559 阅读 · 0 评论 -
基础篇 | 05 C++ 编程入门(一)
C++ 兴起的背景 在机器学习开始兴起的时候,人们使用Python和Java的比较多,但随着大数据时代的到来和人工智能的发展。在真实的产品开发中,使用C++的人越来越多,C++的优势得以凸显,主要是因为性能,因为我们知道训练需要做大量的运算,希望直接控制cpu,C++之所以强大、包罗万象,在于它的灵活性,我们可以自由的操作指针和内存。这是Python、Java、JavaScript无法比拟...原创 2018-04-15 16:47:08 · 311 阅读 · 0 评论 -
基础篇 | 06 Apriori 算法
Apriori 算法的作用Apriori 算法的核心思想是计算频繁项集出现的概率(即支持度)和频繁项集内部的关联规则(即置信度)。支持度什么是支持度 如图:如果订单总数为N,包含某个组合的订单为M,那么M组合出现的支持度(概率)为M/N.。 Note 我们这里认为样本数据和我们现实世界的真实情况是同分布的。如何计算支持度在数学上我们如何找出某一...原创 2018-04-22 10:03:08 · 1387 阅读 · 1 评论 -
基础篇 | 07 FP-Growth 算法
上一篇我们讲了Apriori算法,Apriori算法之所以慢是因为每一次遍历都要重新查找所以的数据集,因此是时间复杂度非常高的算法。今天我们讲的FP-Growth 算法较 Apriori有一个数量级的提升。但 FP - Growth只能查找频繁组合,不能计算组合内部的关联规则。FP - Growth的思路接下来,让我们看一看FP - Growth的思路。 以上是程序的运行结果,F...原创 2018-04-22 18:58:21 · 433 阅读 · 2 评论 -
基础篇 | 08 C++ 编程入门(二)- C++ 类与智能指针
内容提要 1. 创建对象:new 2. 定义类:class 3. C++98智能指针:auto_ptr 4. C++11 智能指针:unique_ptr,shared_ptr,weak_ptr如何new一个对象数组// 定义int型数组并打印 int32_t *newArray = new int32_t[5]; newArray[0] = 1; st...原创 2018-04-24 06:23:03 · 164 阅读 · 0 评论 -
基础篇 | 09 决策树
决策树的基本思想 决策树的基本思想是这样的,大家看上图,最右边是一个人是否打高尔夫球的决定,前面四列是是否打高尔夫球的判断条件,包含天气、温度、湿度和风况,我们追踪了它很多天的记录。然后当他给我新的条件的时候,我能推断出他是否去打高尔夫,这是一个非常经典的机器学习问题,非常适合用决策树来解决。我们用这张表就可以构建出如下决策树: 决策树是如何使用的当我们只知道了天气、温度、湿度、风...原创 2018-05-01 18:16:56 · 1912 阅读 · 0 评论 -
基础篇 | 10 C++ 编程入门(三)- 内存管理
静态语言和动态语言静态语言:C、C++ 动态语言:Java、Objective-C、C#等动态语言和静态语言的区别动态语言如Objective-C,可以在程序运行的时候动态的添加一个函数;而C、C++他们的类型和逻辑是在编译时就确定的,无法更改。 如图: 我有一段objective-C代码,这段代码只有一个函数funtion(), 而我可以在程序运行的时候动态读取myfu...原创 2018-05-05 08:34:36 · 215 阅读 · 0 评论 -
实战篇 | 22 C++ 高性能计算—运算加速
小知识:如何取存在数组中的元素指针怎么样处理需要放在一个容器里放在元素的指针,那个指针该怎么取出来?我们先来看一段代码 咋看起来没什么问题,可是当程序运行之后,你会发现输出来的东西完全不是你想用的,为什么 在上面这个for循环中,我创建了一个局部变量student,然后我把这个student push到一个vector里,这其实是一次拷贝。然后我把这个指针的地址存到另一个v...原创 2018-07-17 07:19:44 · 13963 阅读 · 1 评论