文章目录
- 一 概述(本文原创)
- 二 人工智能编程语言/数据结构与算法
- 三 人工智能基础原理
- 四 智能信息获取(简称爬虫) 与数据分析
- 1、发起请求
- 3、解析内容
- 4、保存数据
- 二、Requests库介绍
- 2.1基本介绍
- requests的基本使用流程
- 三、selenium
- 四:效率问题
- 五:资源浪费
- 六:能被识别
- 七、scrapy框架
- 八、Bs4
- 整体使用步骤
- 九、字段匹配方案
- 十:数据存储与队列任务(MongoDB与Rabbitmq)
- 十一、总结
- requests vs Scrapy
- 两个方法看情况用
- 相同点
- 五 统计学原理/离散数学/概率论与数理统计/微积分
- 六 机器学习(必学)
- 七 深度学习经典算法(必学)
- 8 计算机视觉经典算法(与9二选一或皆学)
- 九 自然语言处理与语音识别(与8二选一或皆学)
- NLP
- 语音识别
- 十 推荐系统
- 十一 模型优化
- 十二 深度学习算法交流群
个人公众号(内含干货):
谨以本文送给所有爱好人工智能的爱好者,完全原创,干货,建议收藏~
谢邀,今天受朋友邀请写下这篇文章~
一 概述(本文原创)
首先你需要数学基础:高等数学,线性代数,概率论数理统计和随机过程,离散数学,数值分析。
其次需要算法的积累:人工神经网络,支持向量机(SVM),遗传算法等等算法;当然还有各个领域需要的算法,比如你要让机器人自己在位置环境导航和建图就需要研究SLAM;总之算法很多需要时间的积累;
人工智能专业的主要领域是:自动控制原理,传感器,单片机,微机原理,模式识别,人工智能导论,计算机视觉,数字图像处理,MATLAB ,机器人,电机控制,机器学习,数字视频技术等等,分软硬两个方向; 机器学习 人工智能导论(搜索法等) 图像识别 智能信息获取 语音识别 生物演化论 自然语言处理 语义网 博弈论等。 需要的前置课程主要有,信号处理,线性代数,微积分,还有编程(最好有数据结构基础)。
人工智能一般要到研究生才会去学,本科也就是蜻蜓点水看看而已,毕竟需要的基础课过于庞大。
二 人工智能编程语言/数据结构与算法
2.1 编程语言
基础知识语言:C语言(为了基础知识与学习数据结构与算法)
学习与应用型语言:Python (语言简洁,方便学习,代码,库多等)
嵌入部署语言:C++(计算速度快,落地必备语言)
Cuda 编程:深度学习编程加分项(精通的工程师很少)
不建议使用Java语言,计算等不太好,除非使用NLP的斯坦福等模型。
2.2 数据结构与算法
数据结构与算法,建议刷上百道Leetcode 或者剑指Offer
数据结构与算法是算法工程师必备技能,在人工智能中应用不是特别多,但是却可以在写代码的时候更精练,并且能计算速度更快。
一些必备算法:
广度优先搜索
深度优先搜索
背包问题
动态规划
蚁群问题
其他的我们下面说
三 人工智能基础原理
这门课,你将学习:
知识系统: 分为确定性只是系统和不确定性知识系统 你将学习基础的知识表示和推理方式
智能搜索技术:你将学习启发式搜索算法例如A*算法和博弈树以及遗传算法
机器学习:这门课程中学习:线性回归 与 决策树与支持向量机Adaboost以及Bagging算法。
深度学习:这门课程:人工神经网络 单层/多层感知机 BP神经网络 Hopfield网络 卷积神经网络 LeNet5
这本书:《人工智能原理及其应用》特别全面,还有很多知识上述没列出来,下面将详细介绍。
四 智能信息获取(简称爬虫) 与数据分析
爬虫,网络资源特别多
我来大致说说:
爬虫的简单理解: 向网站发起请求,获取资源后分析并提取有用数据的程序
1、发起请求
使用库向目标站点发起请求,即发送一个Request Request包含:请求头、请求体等
####2、获取响应内容
如果服务器能正常响应,则会得到一个Response Response包含:html,json,图片,视频等
3、解析内容
解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等 解析json数据:json模块 解析二进制数据:以b的方式写入文件
4、保存数据
数据库 文件
二、Requests库介绍
2.1基本介绍
requests是基于urllib3的一个用于发起http请求的库。这个库相较于urllib更快,更易用。
requests 易用性强,定制简单,可用性好,文档丰富,入门简单 ,属于页面级爬虫。
本身没有处理js、提交表单、对应验证码等功能(可扩展)
重点在于页面下载。
Requests只是一个构建网页请求,获取网页响应的模块,并不是框架。 在构建request方面,简单易实现,且功能强大。 Requests 几乎满足如今网络的需求。
requests的基本使用流程
爬虫三部曲
1.发送请求
def get_page(url): respone=requests.get(url) return respone
2.解析数据
import redef parse_index(html):
findall匹配所有
re.findall(“匹配所有”,html,re.S)
re.S(对全部文本进行匹配)
detail_urls=re.findall(’
<a class=“imglink” href="(.*?)"’,html,re.S) return detail_urls解析详情页
def parse_detail(html): movie_url=re.findall(’’,html,re.S) if movie_url: return movie_url[0]
三、selenium
四:效率问题
从启动,到模拟种种用户行为,他都没有直接访问接口快。
五:资源浪费
爬虫部署在服务器,大量爬虫启动,极其消耗资源,你在开几个selenium,分分钟爆炸。所以,进公司,基本见不到selenium的踪迹。
六:能被识别
虽然selenium模拟浏览器进行用户行为,但其实他还是会被识别。比如淘宝的模拟登陆。 所以对于我们初步50w的数据,而且网站反爬措施一般的情况下,可以直接不考虑seleenium。
七、scrapy框架
scrapy是一个功能非常强大的爬虫框架,它不仅能便捷地构建request,还有强大的selector能够方便地解析response,然而****它最受欢迎的还是它的性能,既抓取和解析的速度,它 的downloader是多线程的,request是异步调度和处理的。这两点使它的爬取速度非常之快。**** 另外还有内置的logging,exception,shell等模块,为爬取工作带来了很多便利。
所以在性能方面,****scrapy**** >= Requests + lxml/Beautiful Soup + twisted/tornado + threading + Queue.
然而在易用性方面,他却比requests难很多, 初学入手,难度远高于requests
这一框架就像一条爬虫流水线,有工作队列、有下载器、有分配任务的引擎,有对爬取数据写逻辑的地方、也有写保存处理数据的数据库SQL的地方。对于scrapy而言,更多的时候是在配置scrapy。先要继承一个spider写爬虫的主体,然后还要在setting里写配置,在pipeline里写数据库。而且还要注意在主函数parse里的返回值,返回item时是交给pipline做数据处理,返回Request回调函数时是向爬取队列注册二级链接等等。
八、Bs4
整体使用步骤
bs4里面有一个类,BeautifulSoup,然后通过这个类将网页html格式字符串生成一个对象,然后通过对象的方法来进行查找指定元素
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
Beautiful Soup在解析时实际上依赖解析器,它除了支持Python标准库中的HTML解析器外,还支持一些第三方解析器(比如lxml)。下面我列出Beautiful Soup支持的几种解析器。
一般常用的是lxml解析器,它有解析HTML和XML的功能,而且速度快,容错能力强,如果使用lxml,在初始化的时候Beautiful Soup时,可以把第二个参数改为lxml即可,其他都是一致的。
九、字段匹配方案
CSS selecor, Xpath ,Re正则表达式
在易用度上:css selector > Xpath> Re
速度上:CSS selector > Xpath > Re
这个方案使用css 优先,当然使用xpath也可以(可选),并不影响大局。应该可以根据喜好写。当然有个标准规定也是有必要的。
十:数据存储与队列任务(MongoDB与Rabbitmq)
在上面确定好使用的技术栈,包括框架,请求库,解析库后,接下来到数据存储,使用MongoDB会比较方便,首先,使用MongoDB做存储,简单实用,方便拓展爬虫的数据。
其次,如果可以,将任务分解成N个子任务,放到一个MessageQueue中。接着,在写程序的时候,不要考虑任何多线程多进程gevent或者任何会让你的程序“提速”的东西,爬虫只要完成一个简单的功能:接受一个输入,这里就是某一页的页码,得到的输出是这一页的15条数据,最好直接存储到数据库中。最后一步,将上两步具体实现,使用RabbitMQ,然后在上一步的接受输入变成从Queue中取一条任务。
如果源网站不会因为访问频率过高而封你的IP,那么可以在一台机器上多部几个爬虫实例,否则的话,你可以将你的代码部署到多台机器上。阿里云按时间付费的机器很便宜,可以开多点机器以加快速度。这样的好处是,可以随时新增或减少一个爬虫实例,而不会影响之前已经部署的任何爬虫,也可以随时将抓取失败的页码数再次放入Queue中,而不影响正在抓取任务的爬虫
十一、总结
requests vs Scrapy
requests | Scrapy |
---|---|
页面级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性考虑不足,性能较差 | 并发性好,性能较高 |
重点在于页面下载 | 重点在于爬虫结构 |
定制灵活 | 一般定制灵活,深度定制困难 |
上手十分简单 | 入门稍难 |
两个方法看情况用
非常小的需求,用requests库
不太小的需求,Scrapy框架(持续周期性不间断爬取)
定制程度很高的需求(不考虑规模),自搭框架,requests>Scrapy
相同点
两者都可以进行页面请求和爬取,python爬虫的两个重要技术路线。
两者可用性都好,文档丰富,入门简单。
两者都没有处理js、提交表单、应对验证码等功能(可扩展)。
五 统计学原理/离散数学/概率论与数理统计/微积分
这是一些必备数学知识,如果你不会,很难坚持学完机器学习基础算法。
详见各科书本,其中统计学原理最重要,是机器学习的前身,例如支持向量机,决策树算法 ,Adaboost等算法都会学原理。
六 机器学习(必学)
这一节很重要,我详细给大家说说要学哪些算法:强调一下,以下算法建议必会,就算自己没有用于项目中,也建议跑一炮算法和简单应用。
1:线性回归与多项式回归
参见博客:传送门
2:梯度下降法:传送门
3:决策树 ID3和C4.5算法:传送门 与简单使用
4:SVM 算法从原理到实战(必学算法):SVM原理
支持向量机SVM基础实战篇(一);
支持向量机SVM基础实战篇(二);
SVM基础实战篇之经典预测(三);
基于OpenCv的SVM实现车牌检测与识别(一)
【实战】基于OpenCv的SVM实现车牌检测与识别(二)
5、kNN: k-nearest neighbor classification
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
6、The k-means algorithm即K-Means算法
k-means algorithm算法是一个聚类算法,把n的对象根据他们的属性分为k个分割,k < n。它与处理混合正态分布的最大期望算法很相似,因为他们都试图找到数据中自然聚类的中心。它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。
7、最大期望(EM)算法
在统计计算中,最大期望(EM,Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量(Latent Variabl)。最大期望经常用在机器学习和计算机视觉的数据集聚(Data Clustering)领域。
8、AdaBoost
Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确,以及上次的总体分类的准确率,来确定每个样本的权值。将修改过权值的新数据集送给下层分类器进行训练,最后将每次训练得到的分类器最后融合起来,作为最后的决策分类器。
9、Naive Bayes朴素贝叶斯
在众多的分类模型中,应用最为广泛的两种分类模型是决策树模型(Decision Tree Model)和朴素贝叶斯模型(Naive Bayesian Model,NBC)。朴素贝叶斯模型发源于古典数学理论,有着坚实的数学基础,以及稳定的分类效率。同时,NBC模型所需估计的参数很少,对缺失数据不太敏感,算法也比较简单。理论上,NBC模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为NBC模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,这给NBC模型的正确分类带来了一定影响。在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型。而在属性相关性较小时,NBC模型的性能最为良好。
10,随机森林(集成算法中最简单的,模型融合算法)
随机森林如何缓解决策树的过拟合问题,又能提高精度?
a. Random Forest, 本质上是多个算法****平等的****聚集在一起。每个单个的决策树,都是随机生成的训练集(行),随机生成的特征集(列),来进行训练而得到的。
b. 随机性的引入使得随机森林不容易陷入过拟合,具有很好的抗噪能力,有效的缓解了单棵决策树的过拟合问题。
c. 每一颗决策树训练样本是随机的有样本的放回抽样。
11,马尔可夫
a. 马尔可夫线没有箭头,马尔可夫模型允许有环路。
b. affinity亲和力关系,energy(A,B,C),发现A,B,C之间有某种规律性东西,但不一定是概率,但是可以表示ABC之间的一种亲和力。
c. potential = e1e2e3*en potential函数一般来说不是概率
d. 归一化 -> 概率分布probability
e. 贝叶斯模型与马尔可夫模型:任何一个贝叶斯模型对应于唯一的一个马尔可夫模型,而任意一个马尔可夫模型,可以对应于多个贝叶斯模型。
f. 贝叶斯模型类似于象棋,等级分明;马尔可夫模型类似于围棋,人人平等。
g. 马尔可夫模型(Markov Model)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。
12、Gradient Boosting 和 AdaBoost 算法
当我们要处理很多数据来做一个有高预测能力的预测时,我们会用到 GBM 和 AdaBoost 这两种 boosting 算法。boosting 算法是一种集成学习算法。它结合了建立在多个基础估计值基础上的预测结果,来增进单个估计值的可靠程度。这些 boosting 算法通常在数据科学比赛如 Kaggl、AV Hackathon、CrowdAnalytix 中很有效。
七 深度学习经典算法(必学)
1:学习Tensorflow框架/Pytorch/Paddle框架
2:将上述机器学习算法使用这些框架复现
3:实现简单的回归预测与分类
4:BP神经网络
5:卷积神经网络
6学习激活函数,参数初始化方法,归一化方法 池化 最优化方法 学习率策略 正则化方法
7浅层卷积神经网络:LeNet, Neocognitron网络, TDNN ,Cresceptron网络
8:经典网络的深度设计:AlexNet VGGNet
9:残差学习
10:分组卷积,卷积拆分,移动短高效模型
11:多尺度网络与非正常卷积,更丰富的感受野与不变性
12:多输入网络:Siamese网络,Triplet
13:时序神经网络,RNN,双向RNN, LSTM
14:三维卷积
15:注意力机制
16:生成对抗网络
基于深度学习GAN的Ai换装(比赛记录)
8 计算机视觉经典算法(与9二选一或皆学)
1:计算机视觉的常用图像处理技术
2:其他计算机视觉经典算法
3:基于传统计算机视觉的应用,例如:
基于OpenCv的SVM实现车牌检测与识别(一)
【实战】基于OpenCv的SVM实现车牌检测与识别(二)
4:基于深度学习与计算机视觉
5:影像分类,目标检测,语义分割,实例分割等
6:基于深度学习与计算机视觉的项目
由浅入深:
视觉识别入门之人脸识别——基于FACENET的高精度人脸识别
视觉识别入门之识别 ——口罩识别
【项目实战】基于PeLee的多目标实时检测
基于深度学习的医学图像分割(一)
基于深度学习的语义分割与实例分割(一)
【项目实战】YOLOV5 +实时吸烟目标检测+手把手教学+开源全部
【你只需看一次】YOLO 全系列目标检测算法
Cv要从基础视觉到图像处理都熟悉,能用传统视觉做数据与处理,数据增强等。
九 自然语言处理与语音识别(与8二选一或皆学)
NLP
1:NLP从入门到实战(一)
2:NLP入门到实战(二)时间提取
3:词袋模型与句子相似度计算
4: NLP入门到实战(四)关键词权重计算算法
5:文本分类器
6:分析句子情感
7:主题建模识别文本
8词法分析
9句法分析
10 语义分析
11 NLP实战 文本分类,文本生成与问答与情感分析
12:【项目实战全解】基于深度学习与自然语言处理的AI文本生成(自动写作)
13:实体命名识别
学language model, 然后依次学POS tagging, 语法分析PCFG,接着接触NLP的第一个实际应用,学习机器翻译(机器翻译真是融合了各种NLP知识到里面),先从基于统计的机器翻译开始学,IBM model1, IBM model 2,再到phrase based machine translation,然后再学log linear model。 再往后就可以学习各种应用啦,情感分析,文本分类等,这个可以上斯坦福的那门NLP课程,也是非常棒的课程。
其他介绍
我们平常说地自然语言处理究竟能做些什么呢?NLP是计算机以一种聪明而有用的方式分析,理解和从人类语言中获取意义的一种方式。通过利用NLP,开发者可以组织和构建知识来执行自动摘要,翻译,命名实体识别,关系提取,情感分析,语音识别和话题分割等任务。NLP用于分析文本,使机器了解人的说话方式。这种人机交互使现实世界的应用,如自动文摘,情感分析,主题提取,命名实体识别,零部件,词性标注,关系提取,词干,等等。NLP通常用于文本挖掘,机器翻译和自动问答。
早期的NLP方法涉及更基于规则的方法,在这种方法中,简单的机器学习算法被告知要在文本中查找哪些单词和短语,并在这些短语出现时给出特定的响应。但深度学习是一个更灵活,直观的方法,在这个方法中,算法学会从许多例子中识别说话者的意图,就像孩子如何学习人类语言一样。
常用技术盘点
1.分词 Word Segmentation
chqiwang/convseg ,基于CNN做中文分词,提供数据和代码。(python2.7 )
对应的论文Convolutional Neural Network with Word Embeddings for Chinese Word Segmentation IJCNLP2017.
2.词预测 Word Prediction
Kyubyong/word_prediction ,基于CNN做词预测,提供数据和代码。代码的准确对比的是Iphone7的键盘输入,最新跟新是2019年7月。
文本蕴涵 Textual Entailment
Steven-Hewitt/Entailment-with-Tensorflow,基于Tensorflow做文本蕴涵,提供数据和代码。 "Textual entailment with TensorFlow: Using neural networks to explore natural language,"的作者开发,但是代码很久没更新了,文章发表于2017年。
语音识别 Automatic Speech Recognition
buriburisuri/speech-to-text-wavenet,基于DeepMind WaveNet和Tensorflow 1.0做句子级语音识别。17年的代码
自动摘要 Automatic Summarisation
PKULCWM/PKUSUMSUM,北大万小军老师团队的自动摘要方法汇总,包含了他们大量paper的实现,支持单文档摘要、多文档摘要、topic-focused多文档摘要。
文本纠错 Text Correct
atpaino/deep-text-corrector,基于深度学习做文本纠错,提供数据和代码。
7.字音转换 Grapheme to Phoneme
cmusphinx/g2p-seq2seq,基于网红transformer做, 提供数据和代码。
复述检测 Paraphrase Detection 和 问答 Question Answering
Paraphrase-Driven Learning for Open Question Answering, 基于复述驱动学习的开放域问答。
音汉互译 Pinyin-To-Chinese
Kyubyong/neural_chinese_transliterator,基于CNN做音汉互译。
情感分析 Sentiment Analysis
情感分析包括的内容太多了,目前没发现比较全的。推荐两个适合练手的吧:Deeply Moving: Deep Learning for Sentiment Analysis,http://sentic.net/about/。
手语识别 Sign Language Recognition
Home - SignAll, 该项目在手语识别做的非常成熟。
词性标注(POS)、 命名实体识别(NER)、 句法分析(parser)、 语义角色标注(SRL) 等。
HIT-SCIR/ltp, 语言技术平台(Language Technology Platform,LTP)是哈工大社会计算与信息检索研究中心历时十年开发的一整套中文语言处理系统。LTP制定了基于XML的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等6项中文处理核心技术),以及基于动态链接库(Dynamic Link Library, DLL)的应用程序接口、可视化工具,并且能够以网络服务(Web Service)的形式进行使用。
官方网站:http://ltp.ai
词干 Word Stemming
snowballstem/snowball, C语言版本。
snowballstem/pystemmer,Python版本,代码较新。
还有go 语言实现的,这里不列举了。
语言识别 Language Identification
(https://github.com/saffsd/langid.py),语言识别比较好的开源工具。
机器翻译 Machine Translation
OpenNMT/OpenNMT-py, 基于PyTorch的神经机器翻译,很适合练手。代码较新,持续有更新。
复述生成 Paraphrase Generation
vsuthichai/paraphraser,基于Tensorflow的句子级复述生成,适合练手。
关系抽取 Relationship Extraction
ankitp94/relationship-extraction,基于核方法的关系抽取。
句子边界消歧 Sentence Boundary Disambiguation
https://github.com/Orekhov/SentenceBreaking,很有意思。
19.事件抽取 Event Extraction
liuhuanyong/ComplexEventExtraction, 中文复合事件抽取,包括条件事件、因果事件、顺承事件、反转事件等事件抽取,并形成事理图谱。
词义消歧 Word Sense Disambiguation
alvations/pywsd,代码不多,方法简单,适合练手。
命名实体消歧 Named Entity Disambiguation
dice-group/AGDISTIS,实体消歧是很重要的,尤其对于实体融合(比如知识图谱中多源数据融合)、实体链接。
幽默检测 Humor Detection
pln-fing-udelar/pghumor 针对西班牙推文做的,一般用不上,不过可以参考学习一下。
讽刺检测 Sarcasm Detection
AniSkywalker/SarcasmDetection,基于神经网络的讽刺检测。最新更新是2019年9月份
https://www.aclweb.org/anthology/W16-0425.pdf
1
实体链接 Entity Linking
hasibi/EntityLinkingRetrieval-ELR, 参考的ACM论文Exploiting Entity Linking in Queries for Entity Retrieval,实体链接用途非常广,非常适合练手。
指代消歧 Coreference Resolution
huggingface/neuralcoref,基于神经网络的指代消歧。持续有更新维护。
NeuralCoref是spaCy 2.1+的管道扩展,它使用神经网络注释和解析指代消歧。 NeuralCoref已投入生产,已集成到spaCy的NLP管道中,并可扩展到新的培训数据集。
关键词/短语抽取和社会标签推荐
Keyphrase Extraction and Social Tag Suggestion
thunlp/THUTag, 用多种方法 实现了多种关键词/短语抽取和社会标签推荐。
以上整理的库和链接并不一定是最经典的和最新的,请在学习和使用时注意区分是否是自己需要学习的库。
语音识别
1读取和绘制音频数据
2:将音频信号转化为频阈
3:自定义参数生成音频信号
4:合成音乐
5:提取频阈特征
6:创建隐马尔科夫模型
7:创建一个语音识别器
8:语音识别实战项目
十 推荐系统
1:学习基本知识:【详解】多元的智能推荐系统
2:学习NLP
3:学习分类算法等,KNN等
5:距离计算算法,欧式距离,皮尔逊相关系数
6:相似用户寻找
7:协同过滤算法:
协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型,包括在线的协同和离线的过滤两部分。所谓在线协同,就是通过在线数据找到用户可能喜欢的物品,而离线过滤,则是过滤掉一些不值得推荐的数据,比如推荐值评分低的数据,或者虽然推荐值高但是用户已经购买的数据。
协同过滤的模型一般为m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最高评分的物品推荐给用户。
一般来说,协同过滤推荐分为三种类型。第一种是基于用户(user-based)的协同过滤,第二种是基于项目(item-based)的协同过滤,第三种是基于模型(model based)的协同过滤。
8基于内容,基于物体,基于模型算法
9项目实战
十一 模型优化
Openvino模型优化
OpenVINO是英特尔基于自身现有的硬件平台开发的一种可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,支持各种英特尔平台的硬件加速器上进行深度学习,并且允许直接异构执行。 支持在Windows与Linux系统,Python/C++语言。优化工具包 OpenVINO 让不懂电脑视觉和深度学习原理的小白可以在很短的时间上手,不必担心如何建置开发平台、选择深度学习框架、训练及优化模型和硬体加速等问题,只需利用预先训练及优化过的语义分割模型,很快就可以做出一组看起来很专业的自驾车视觉分析系统。
主要特点
1:在Intel平台上提升计算机视觉相关深度学习性能达19倍以上
2: 解除CNN-based的网络在边缘设备的性能瓶颈
3: 对OpenCV,OpenXV*视觉库的传统API实现加速与优化
4: 基于通用API接口在CPU、GPU、FPGA等设备上运行加上
OpenVINO 有2个大模块,第一个是 OR 他是用于把深度学习训练好的模型转换成engine可识别的文件(xml和bin) ,另一个是inference engine 是OpenVINO具体实施单元,利用一个智能引擎完成相应的应用 。
一般流程:
1:根据自己的训练模型需要配置Mode Optimizer.
2: 根据设置的模型参数运行Model Optimizer,生成相对应的IR(主要是xml和bin)
xml-主要用来描述网络拓扑结构
bin-包括生成的weights and biases 二进制数据
3: 在实际应用场景种使用Inference Engine测试生成的IR
4: 在应用程序种调用Inference Engine相应接口,将生成的模型IR部署到实际环境中。
Model Optimizer
Model Optimizer 是一个跨平台命令行工具,用于促进训练与具体实施平台中的过渡,主要是进行静态模型分析 以及根据配置参照自动调整深度模型
Model Optimizer 被用来设计成支持常用的框架(Caffe, TensofFlow, MXNet, Kaldi, ONNX等),相当于封装了一层,便于进行开发。
Model Optimizer主要工作流程:
1:根据需要所用到的框架,配置Model Optimizer
2: 提供训练模型作为输入,包括网络拓扑以及参数
3:运行Model Optimizer(根据选择的网络拓扑进行训练)
4:IR作为Model Optimizer输出
Inference Engine:
Inference Engine是主要运行单元,并提供相应API
将IR作为输入
在目标硬件优化执行
提供嵌入式平台最佳执行性能方案
1:入门:仁兄,可曾听闻OpenVINO
2:配置:【OpenVino】从入门到实战篇(二)Ubuntu18.04+Windows 10双系统环境配置与坑解决
3:【Openvino】从入门到实战(三)人脸识别+表情检测+行人检测+人脸关键点检测
4:推理优化与部署步骤,见官方网站
十二 深度学习算法交流群
个人公众号:内有群链接
本文原创,自己敲出来的,感兴趣的点赞关注~