当前位置: 首页 > 编程日记 > 正文

上手!深度学习最常见的26个模型练习项目汇总

640?wx_fmt=png


作者:沧笙踏歌

转载自AI部落联盟(id:AI_Tribe)


今天更新关于常见深度学习模型适合练手的项目。这些项目大部分是我之前整理的,基本上都看过,大概俩特点:代码不长,一般50-200行代码,建议先看懂然后再实现和优化,我看基本上所有的实现都有明显可优化的地方;五脏俱全,虽然代码不长,但是该有的功能都有,该包含的部分也基本都有。所以很适合练手,而且实现后还可保存好,以后很多任务可能就会用到


本文包括简介、练手项目和我的建议(建议最好看看这部分)。


简介



本篇是深度学习最常见的 26 个模型汇总的姐妹篇,建议先看那篇再看本篇。本篇新增了 26 个模型的练手项目。


640?wx_fmt=png

640?wx_fmt=png


练手项目



2.1 Feed forward neural networks (FF or FFNN) and perceptrons (P)


前馈神经网络和感知机,信息从前(输入)往后(输出)流动,一般用反向传播(BP)来训练。算是一种监督学习。


640?wx_fmt=png


对应的代码:

https://github.com/danijar/layered

https://github.com/civisanalytics/muffnn


2.2 Radial basis function (RBF)


径向基函数网络,是一种径向基函数作为激活函数的FFNNs(前馈神经网络)。


640?wx_fmt=png


对应的代码:

https://github.com/eugeniashurko/rbfnnpy


2.3 Hopfield network (HN)


Hopfield网络,是一种每个神经元都跟其它神经元相连接的神经网络。


640?wx_fmt=png


对应的代码:

https://github.com/yosukekatada/Hopfield_network


2.4 Markov chains (MC or discrete time Markov Chain, DTMC)


马尔可夫链 或离散时间马尔可夫链,算是BMs和HNs的雏形。


640?wx_fmt=png


对应的代码:

Markov chains:https://github.com/jsvine/markovify

DTMC:https://github.com/AndrewWalker/dtmc


2.5 Boltzmann machines (BM)


玻尔兹曼机,Hopfield网络很类似,但是:一些神经元作为输入神经元,剩余的是隐藏层。


640?wx_fmt=png


对应的代码:

https://github.com/yell/boltzmann-machines


2.6 Restricted Boltzmann machines (RBM)


受限玻尔兹曼机,和玻尔兹曼机 以及 Hopfield网络 都比较类似。


640?wx_fmt=png


对应的代码:

https://github.com/echen/restricted-boltzmann-machines


2.7 Autoencoders (AE)


自动编码,和FFNN有些类似,它更像是FFNN的另一种用法,而不是本质上完全不同的另一种架构。


640?wx_fmt=png


对应的代码:

https://github.com/caglar/autoencoders/blob/master/ae.py


2.8 Sparse autoencoders (SAE)


稀疏自动编码,跟自动编码在某种程度比较相反。


640?wx_fmt=png


对应的代码:

https://github.com/caglar/autoencoders/blob/master/sa.py


2.9 Variational autoencoders (VAE)


变分自动编码,和AE架构相似,不同的是:输入样本的一个近似概率分布。这使得它跟BM、RBM更相近。


640?wx_fmt=png


对应的代码:

https://github.com/mattjj/svae


2.10 Denoising autoencoders (DAE)


去噪自动编码,也是一种自编码机,它不仅需要训练数据,还需要带噪音的训练数据


640?wx_fmt=png


对应对应的代码:

https://github.com/caglar/autoencoders/blob/master/da.py


2.11 Deep belief networks (DBN)


深度信念网络,由多个受限玻尔兹曼机或变分自动编码堆砌而成。


640?wx_fmt=png


对应的代码:

https://github.com/albertbup/deep-belief-network


2.12 Convolutional neural networks (CNN or deep convolutional neural networks, DCNN)


卷积神经网络,这个不解释也都知道。


640?wx_fmt=png


对应的代码:

CNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_CNN.py

DCNN:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_DeepCNN.py


2.13 Deconvolutional networks (DN)


去卷积网络,又叫逆图形网络,是一种逆向的卷积神经网络。


640?wx_fmt=png


对应的代码:

https://github.com/ifp-uiuc/anna


2.14 Deep convolutional inverse graphics networks (DCIGN)


深度卷积逆向图网络,实际上是VAE,且分别用CNN、DNN来作编码和解码。


640?wx_fmt=png


对应的代码:

https://github.com/yselivonchyk/TensorFlow_DCIGN


2.15 Generative adversarial networks (GAN)


生成对抗网络,Goodfellow的封神之作,这个模型不用解释也都知道。


640?wx_fmt=png


对应的代码:

https://github.com/devnag/pytorch-generative-adversarial-networks


2.16 Recurrent neural networks (RNN)


循环神经网络,这个更不用解释,做语音、NLP的没有人不知道,甚至非AI相关人员也知道。


640?wx_fmt=png


对应的代码:

https://github.com/farizrahman4u/recurrentshop


2.17 Long / short term memory (LSTM)


长短期记忆网络, RNN的变种,解决梯度消失/爆炸的问题,也不用解释,这几年刷爆各大顶会。


640?wx_fmt=jpeg


对应的代码:

https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_LSTM.py


2.18 Gated recurrent units (GRU)


门循环单元,类似LSTM的定位,算是LSTM的简化版


640?wx_fmt=png


对应的代码:

https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_GRU.py


2.19 Neural Turing machines (NTM)


神经图灵机,LSTM的抽象,以窥探LSTM的内部细节。具有读取、写入、修改状态的能力。


640?wx_fmt=png


对应的代码:

https://github.com/MarkPKCollier/NeuralTuringMachine


2.20 Bidirectional recurrent neural networks, bidirectional long / short term memory networks and bidirectional gated recurrent units (BiRNN, BiLSTM and BiGRU respectively)


双向循环神经网络、双向长短期记忆网络和双向门控循环单元,把RNN、双向的LSTM、GRU双向,不再只是从左到右,而是既有从左到右又有从右到左。


对应的代码:

BiRNN:https://github.com/cstghitpku/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/tree/master/models

BiLSTM:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiLSTM.py

BiGRU:https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-pytorch/blob/master/models/model_BiGRU.py


2.21 Deep residual networks (DRN)


深度残差网络,是非常深的FFNN,它可以把信息从某一层传至后面几层(通常2-5层)。


640?wx_fmt=png


对应的代码:

https://github.com/KaimingHe/deep-residual-networks


2.22 Echo state networks (ESN)


回声状态网络,是另一种不同类型的(循环)网络。


640?wx_fmt=png


对应的代码:

https://github.com/m-colombo/Tensorflow-EchoStateNetwork


2.23 Extreme learning machines (ELM)


极限学习机,本质上是随机连接的FFNN。


640?wx_fmt=png


对应的代码:

https://github.com/dclambert/Python-ELM


2.24 Liquid state machines (LSM)


液态机,跟ESN类似,区别是用阈值激活函数取代了sigmoid激活函数。


640?wx_fmt=png


对应的代码:

https://github.com/kghose/Liquid


2.25 Support vector machines (SVM)


支持向量机,入门机器学习的人都知道,不解释。


640?wx_fmt=png


对应的代码:

https://github.com/ajtulloch/svmpy


2.26 Kohonen networks (KN, also self organising (feature) map, SOM, SOFM)


Kohonen 网络,也称之为自组织(特征)映射。


640?wx_fmt=png


对应的代码KN/SOM:

https://github.com/mljs/som


后续建议



我个人感觉能力提升最快的方式是:先横向学习一个领域,做到全面的认识;然后从头到尾一项一项去突破,做到有深度。如果今天学点这个,明天学点那个,水平提升很慢,建议顺着技术发展的主线从头到尾学完。技术是无止境的,积累很重要,但有量远远不够,还得讲究方法。


对应到本文,学会并实现和优化这些模型,远远不够。我建议还可以有如下尝试:

  • 单层模型实现之后,试试多层或者模型stack;

  • 试试模型的结合,比如LSTM/GRU+CNN/DCNN、CNN/DCNN+LSTM/GRU、LSTM/GRU+CRF等;

  • 在一些模型上加attention(这里很多模型适合加);

  • 利用这些模型解决一些比较简单的小问题,比如用CNN识别数字、LSTM+CRF做NER等;

  • 性能方面的提升,比如支持分布式训练、支持GPU等;

  • 把这些模型做成一个框架,到时候记得通知我,我一定拜读。


(*本文为 AI科技大本营转载文章,转载请联系原作者)


CTA核心技术及应用峰会



5月25-27日,由中国IT社区CSDN与数字经济人才发展中心联合主办的第一届CTA核心技术及应用峰会将在杭州国际博览中心隆重召开,峰会将围绕人工智能领域,邀请技术领航者,与开发者共同探讨机器学习和知识图谱的前沿研究及应用。


更多重磅嘉宾请识别海报二维码查看。目前会议8折预售票抢购中,点击阅读原文即刻抢购。添加小助手微信15101014297,备注“CTA”,了解票务以及会务详情。


640?wx_fmt=png


推荐阅读


  • 赌5毛钱,你解不出这道Google面试题

  • @程序员,别再自己闷头学了

  • 人工智能的浪潮中,知识图谱何去何从?

  • 你在B站看番,她却在B站学习!爬一爬B站高播放量编程类视频

  • “踏实工作 7 年,辞职时老板头都不抬”

  • 10 种最流行的 Web 挖掘工具 | 程序员硬核评测

  • 阿里云的物联网之路

  • 60倍回报! AI工程师用OpenAI创建了一个比特币自动交易工具! 这里是详细做法 | 技术头条

  • 小姐姐公开征婚高智商 IT 男:微信号竟要质数解密?


640?wx_fmt=png


点击阅读原文,了解CTA核心技术及应用峰会

相关文章:

【EMC】电磁兼容性相关名词解释、基础知识

一、名词解释 1、EMC EMC(Electro Magnetic Compatibility)直译是“电磁兼容性”。意指设备所产生的电磁能量既不对其它设备产生干扰,也不受其他设备的电磁能量干扰的能力。 2、EMI——攻击力 EMI(Electro Magnetic Interference)直译为&…

定时任务 Cron表达式

Cron表达式是一个表示时间周期的字符串。 分为6或7个域,每一个域代表一个含义。 验证工具: http://cron.qqe2.com/Cron有如下两种语法格式: 格式1:秒分时天(月)月天(星期)年格式2&a…

C语言字符计算器

这又是以前的一篇文章,觉得有纪念价值。就发过来了。 去年暑假自己下了C语言实战105例,看了几个基础的,其中有一个是关于字符计算器的 我看起来蛮简单的,不过自己做起来我觉得还是做得少了,懵懵懂懂的。 现在想起那个觉…

一文看尽目标检测:从YOLO v1到v3的进化之路

本文转载自:http://www.mamicode.com/info-detail-2314392.html导语:如今基于深度学习的目标检测已经逐渐成为自动驾驶、视频监控、机械加工、智能机器人等领域的核心技术,而现存的大多数精度高的目标检测算法,速度较慢&#xff0…

【EMC】EMC屏蔽设计

1、屏蔽设计的基本原则: 蔽体结构简洁,尽可能减少不必要的孔洞,尽可能不要增加额外的缝隙;避免开细长孔,通风孔尽量采用圆孔并阵列排放。屏蔽和散热有矛盾时尽可能开小孔,多开孔,避免开大孔&am…

js控制表格隔行变色

只是加载时候隔行变一个颜色&#xff0c;鼠标滑动上去时候没有变化 <table width"800" border"0" cellpadding"0" cellspacing"0"> <tr><td>不变色</td></tr><tbody id"goaler"><tr…

jQuery实例——仿京东仿淘宝列表导航菜单

以前看着京东&#xff0c;淘宝的导航做的真好&#xff0c;真想哪一天自己也能做出来这么漂亮功能全的导航菜单。今天弄了一下午终于自制成功&#xff0c;主要使用jQuery和CSS&#xff0c;实现功能基本和京东一样。 功能介绍&#xff1a; 1、鼠标停留导航&#xff1b; 2、根据子…

【Ubuntu】使用过的ubuntu工具记录

1、UnixBench UnixBench性能测试&#xff0c;和windows的鲁大师差不多。 2、smartctl 测试磁盘性能 sudo apt install smartmontools 3、cpufrequtils cpu频率查看、设置工具集&#xff1a;cpufreq-inf、cpufreq-set sudo apt install cpufrequtils 4、stress cpu满负荷…

解救被困传销女演员 助人减肥找老婆 蚂蚁森林又现神功能

近日&#xff0c;一篇《女演员被传销组织拘禁30多天 竟因蚂蚁森林幸运逃离》的报道引发了全网热议。网友纷纷表示&#xff1a;蚂蚁森林功能强大&#xff0c;不仅能帮人减肥、找老婆&#xff0c;还能在关键时刻保命&#xff01; 珍惜偷你能量的好友 因为关键时刻能保命 据北京晨…

“智能+”时代,看见别人看不见的才是赢家

当科技、商业和社会均发生天翻地覆的变革&#xff0c;我们可以确定的是&#xff0c;“智能”时代的浪潮已掀起波澜。这将是智慧无处不在的时代&#xff0c;曾经无法解决的问题&#xff0c;都将在科技的发展下找到答案&#xff1b;这也是技术普惠万物的时代&#xff0c;创新型应…

CSS a控制超链接文字样式

超链接的代码<a href"http://www.divcss5.com/" target"_blank" title"关于div css的网站">DIVCSS</a>解析如下&#xff1a;href 后跟被链接地址目标网站地址这里是http://www.divcss5.com/target _blank -- 在新窗口中打开链接 _pa…

3分钟快速实现:9种经典排序算法的可视化

作者 | 爱笑的眼睛 来源 | 恋习Python&#xff08;ID:sldata2017&#xff09;最近在某网站上看到一个视频&#xff0c;是关于排序算法的可视化的&#xff0c;看着挺有意思的&#xff0c;也特别喜感。▼6分钟演示15种排序算法不知道作者是怎么做的&#xff0c;但是突然很想自己…

【Qt】Qt再学习(一):Application Example

1、QCommandLineParser 命令行解析类 常用接口 QApplication app(argc, argv);QCommandLineParser parser;parser.setApplicationDescription(QCoreApplication::applicationName());parser.addHelpOption(

沃森世界研讨会前瞻:AI服务 了解客户情绪

科技讯10月19日消息&#xff0c;据国外媒体报道&#xff0c;“沃森世界”研讨会(World of Watson)将于10月24日至27日在拉斯维加斯曼德勒湾举办&#xff0c;与会者将能够了解沃森目前的进展&#xff0c;并深入了解将来沃森将从事的一些令人兴奋的事情。10月14日一整日的会谈中&…

《人月神话》——外科手术队伍——笔记!

本章讨论了一个问题“如何在有意义的时间进度内创建大型的系统&#xff1f;” 软件经理测试出来的数据显示“经验和实际的表现没有相互的联系”。 *需要协作沟通的人员的数量影响着开发成本&#xff0c;因为成本的主要组成部分是相互的沟通和交流&#xff0c;以及更正沟…

直接上手!不容错过的Visual Studio Code十大扩展组件

作者 | David Neal译者 | 谭开朗&#xff0c;责编 | 屠敏转载自CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;各大平台与各种语言的开发人员都在使用Visual Studio Code&#xff0c;我对此感到惊讶。Stack Overflow发布的2019年开发者调查结果显示&#xff0c;VS Code占…

【Qt】Qt再学习(二):Bars Example(Q3DBars)

1、简介 Bars example显示了如何使用Q3DBars制作3D条形图&#xff0c;以及如何结合使用小部件来调整几种可调节的质量。该示例显示了如何&#xff1a; 使用Q3DBars和一些小部件创建应用程序 使用QBar3DSeries和QBarDataProxy将数据设置为图形 使用控件调整一些图形和系列属性…

记录错误信息的行数

1.try catch 记录错误信息的时候&#xff0c;如果报错了&#xff0c;我们只能粗略估算是什么错误&#xff0c;但如果能够具体知道是哪行错误的话&#xff0c;对错误的分析就能够快速定位问题。 2.只需要记录到错误的行号&#xff0c;就能快速定位问题。 3.ex.stackTrace 就可以…

android中PreferencesActivity的使用(一)

在使用android手机的时候&#xff0c;尤其是在操作软件设置时&#xff0c;我们经常见到这样的界面&#xff1a; 这是怎么来实现的的呢&#xff1f;其实android已经提供了相应的类和方法&#xff0c;当进行简单数据存储时&#xff08;比如&#xff1a;软件配置参数&#xff09;a…

吴恩达团队:神经网络如何正确初始化?

来源 | deeplearning.ai编译 | 刘静转载自图灵TOPIA(ID:turingtopia)初始化对训练深度神经网络的收敛性有重要影响。简单的初始化方案可以加速训练&#xff0c;但是它们需要小心避免常见的陷阱。近期&#xff0c;deeplearning.ai就如何有效地初始化神经网络参数发表了交互式文章…

【Qt】Qt再学习(三):Chart Themes Example(常用图表)

1、简介 该示例中展示了各种图表以及在不同内置主题下的外观。 2、使用到的类 QChart:图表抽象类,继承自QGraphicsWidget QChartView:显示图表窗口,继承自QGraphicsView QLineSeries:折线图 QAreaSeries:面积图 QStackedBarSeries:分段条状图 QScatterSeries:散点图…

eyoucms range 范围判断标签

【基础用法】名称&#xff1a;range功能&#xff1a;范围判断标签包括in notin between notbetween四个标签&#xff0c;都用于判断变量是否中某个范围。语法&#xff1a;{eyou:range name$eyou.field.typeid value1,2,3,4 typein}输出内容{/eyou:range}参数&#xff1a;name 变…

现实迷途 第七章 特殊客户

第七章 特殊客户 注&#xff1a;原创作品&#xff0c;请尊重原作者&#xff0c;未经同意&#xff0c;请勿转载&#xff0c;否则追究责任。 江北一般都是上午待在办公室里&#xff0c;搜集信息或整理以前做过的系统&#xff0c;下午才出去站街招客。 站街站了一段时间后&#xf…

BZOJ1396:识别子串(SAM)

Description Input 一行,一个由小写字母组成的字符串S,长度不超过10^5Output L行,每行一个整数,第i行的数据表示关于S的第i个元素的最短识别子串有多长.Sample Input agoodcookcooksgoodfoodSample Output 1 2 3 3 2 2 3 3 2 2 3 3 2 1 2 3 3 2 1 2 3 4 Solution 1A挺开心的省…

【Qt】Qt再学习(四):Editable Tree Model Example

1、简介 这个示例,展示了如何编辑项目、自定义标题以及插入和删除行和列的功能。 项视图模型的标准用法是继承QAbstractItemModel,然后重载纯虚函数:flags()、data()、 headerData()、columnCount()、 rowCount()、 index() 、parent().等; 对于可编辑项目的实现需要重载接…

千亿级照片,毫秒间匹配最佳结果,微软开源Bing搜索背后的关键算法

【导读】随着互联网的普及&#xff0c;搜索成为人们最常用的基本功能之一&#xff0c;但这背后的秘密是什么呢&#xff1f;近日&#xff0c;微软公司介绍了他们是其如何应对用户搜索习惯的改变&#xff0c;并开源了支撑 Bing 搜索背后的算法。 作者 | Charlie Waldburger 译者 …

【Qt】Qt再学习(五):HTTP Example(HTTP下载文件的示例)

1、简介 此示例演示一个简单的HTTP客户端如何从远程主机获取文件。 2、说明 QUrl:url抽象类 QUrl::fromUserInput:从QString转换成QUrl QNetworkAccessManager:网络访问API围绕一个QNetworkAccessManager对象构造,该对象保存其发送的请求的通用配置和设置。创建QNetwork…

面对互联网一线大厂,这些技术你需要了解!

2019 年 5 月 26 - 27 日&#xff0c;由中国 IT 社区 CSDN 与数字经济人才发展中心联合主办的第一届 CTA 核心技术及应用峰会将在杭州国际博览中心召开。近 500 名开发者将齐聚于此&#xff0c;共同交流探讨机器学习和知识图谱的技术及行业落地趋势。会议将聚焦机器学习和知识图…

Android定制:修改开机启动画面

转自&#xff1a;https://blog.csdn.net/godiors_163/article/details/72529210 引言 Android系统在按下开机键之后就会进入启动流程&#xff0c;这个过程本身需要一些时间&#xff0c;而面向用户的往往是厂商定制的一些宣传用的比较绚丽的启动画面。我们在定制自己的系统时&am…

盛大游戏卷入“沙巴克”商标之争

4月12日上午消息&#xff0c;沸沸扬扬的“沙巴克”商标之争再次升级&#xff0c;盛大游戏(微博)也被卷入其中。美国咖啡连锁企业星巴克以“商标侵权”为由将国家商标评审委告上法庭&#xff0c;认为其批准的“沙巴克”商标和“星巴克”近似&#xff0c;要求法庭复审。[/p][p23,…