上手!深度学习最常见的26个模型练习项目汇总
作者:沧笙踏歌
转载自AI部落联盟(id:AI_Tribe)
今天更新关于常见深度学习模型适合练手的项目。这些项目大部分是我之前整理的,基本上都看过,大概俩特点:代码不长,一般50-200行代码,建议先看懂然后再实现和优化,我看基本上所有的实现都有明显可优化的地方;五脏俱全,虽然代码不长,但是该有的功能都有,该包含的部分也基本都有。所以很适合练手,而且实现后还可保存好,以后很多任务可能就会用到。
本文包括简介、练手项目和我的建议(建议最好看看这部分)。
简介
本篇是深度学习最常见的 26 个模型汇总的姐妹篇,建议先看那篇再看本篇。本篇新增了 26 个模型的练手项目。
练手项目
2.1 Feed forward neural networks (FF or FFNN) and perceptrons (P)
前馈神经网络和感知机,信息从前(输入)往后(输出)流动,一般用反向传播(BP)来训练。算是一种监督学习。
对应的代码:
https://github.com/danijar/layered
https://github.com/civisanalytics/muffnn
2.2 Radial basis function (RBF)
径向基函数网络,是一种径向基函数作为激活函数的FFNNs(前馈神经网络)。
对应的代码:
https://github.com/eugeniashurko/rbfnnpy
2.3 Hopfield network (HN)
Hopfield网络,是一种每个神经元都跟其它神经元相连接的神经网络。
对应的代码:
https://github.com/yosukekatada/Hopfield_network
2.4 Markov chains (MC or discrete time Markov Chain, DTMC)
马尔可夫链 或离散时间马尔可夫链,算是BMs和HNs的雏形。
对应的代码:
Markov chains:https://github.com/jsvine/markovify
DTMC:https://github.com/AndrewWalker/dtmc
2.5 Boltzmann machines (BM)
玻尔兹曼机,和Hopfield网络很类似,但是:一些神经元作为输入神经元,剩余的是隐藏层。
对应的代码:
https://github.com/yell/boltzmann-machines
2.6 Restricted Boltzmann machines (RBM)
受限玻尔兹曼机,和玻尔兹曼机 以及 Hopfield网络 都比较类似。
对应的代码:
https://github.com/echen/restricted-boltzmann-machines
2.7 Autoencoders (AE)
自动编码,和FFNN有些类似,它更像是FFNN的另一种用法,而不是本质上完全不同的另一种架构。
对应的代码:
https://github.com/caglar/autoencoders/blob/master/ae.py
2.8 Sparse autoencoders (SAE)
稀疏自动编码,跟自动编码在某种程度比较相反。
对应的代码:
https://github.com/caglar/autoencoders/blob/master/sa.py
2.9 Variational autoencoders (VAE)
变分自动编码,和AE架构相似,不同的是:输入样本的一个近似概率分布。这使得它跟BM、RBM更相近。
对应的代码:
https://github.com/mattjj/svae
2.10 Denoising autoencoders (DAE)
去噪自动编码,也是一种自编码机,它不仅需要训练数据,还需要带噪音的训练数据。
对应对应的代码:
https://github.com/caglar/autoencoders/blob/master/da.py
2.11 Deep belief networks (DBN)
深度信念网络,由多个受限玻尔兹曼机或变分自动编码堆砌而成。
对应的代码:
https://github.com/albertbup/deep-belief-network
2.12 Convolutional neural networks (CNN or deep convolutional neural networks, DCNN)
卷积神经网络,这个不解释也都知道。
对应的代码:
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)
去卷积网络,又叫逆图形网络,是一种逆向的卷积神经网络。
对应的代码:
https://github.com/ifp-uiuc/anna
2.14 Deep convolutional inverse graphics networks (DCIGN)
深度卷积逆向图网络,实际上是VAE,且分别用CNN、DNN来作编码和解码。
对应的代码:
https://github.com/yselivonchyk/TensorFlow_DCIGN
2.15 Generative adversarial networks (GAN)
生成对抗网络,Goodfellow的封神之作,这个模型不用解释也都知道。
对应的代码:
https://github.com/devnag/pytorch-generative-adversarial-networks
2.16 Recurrent neural networks (RNN)
循环神经网络,这个更不用解释,做语音、NLP的没有人不知道,甚至非AI相关人员也知道。
对应的代码:
https://github.com/farizrahman4u/recurrentshop
2.17 Long / short term memory (LSTM)
长短期记忆网络, RNN的变种,解决梯度消失/爆炸的问题,也不用解释,这几年刷爆各大顶会。
对应的代码:
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的简化版。
对应的代码:
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的内部细节。具有读取、写入、修改状态的能力。
对应的代码:
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层)。
对应的代码:
https://github.com/KaimingHe/deep-residual-networks
2.22 Echo state networks (ESN)
回声状态网络,是另一种不同类型的(循环)网络。
对应的代码:
https://github.com/m-colombo/Tensorflow-EchoStateNetwork
2.23 Extreme learning machines (ELM)
极限学习机,本质上是随机连接的FFNN。
对应的代码:
https://github.com/dclambert/Python-ELM
2.24 Liquid state machines (LSM)
液态机,跟ESN类似,区别是用阈值激活函数取代了sigmoid激活函数。
对应的代码:
https://github.com/kghose/Liquid
2.25 Support vector machines (SVM)
支持向量机,入门机器学习的人都知道,不解释。
对应的代码:
https://github.com/ajtulloch/svmpy
2.26 Kohonen networks (KN, also self organising (feature) map, SOM, SOFM)
Kohonen 网络,也称之为自组织(特征)映射。
对应的代码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”,了解票务以及会务详情。
推荐阅读
赌5毛钱,你解不出这道Google面试题
@程序员,别再自己闷头学了
人工智能的浪潮中,知识图谱何去何从?
你在B站看番,她却在B站学习!爬一爬B站高播放量编程类视频
“踏实工作 7 年,辞职时老板头都不抬”
10 种最流行的 Web 挖掘工具 | 程序员硬核评测
阿里云的物联网之路
60倍回报! AI工程师用OpenAI创建了一个比特币自动交易工具! 这里是详细做法 | 技术头条
小姐姐公开征婚高智商 IT 男:微信号竟要质数解密?
点击阅读原文,了解「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导语:如今基于深度学习的目标检测已经逐渐成为自动驾驶、视频监控、机械加工、智能机器人等领域的核心技术,而现存的大多数精度高的目标检测算法,速度较慢࿰…

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

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

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

【Ubuntu】使用过的ubuntu工具记录
1、UnixBench UnixBench性能测试,和windows的鲁大师差不多。 2、smartctl 测试磁盘性能 sudo apt install smartmontools 3、cpufrequtils cpu频率查看、设置工具集:cpufreq-inf、cpufreq-set sudo apt install cpufrequtils 4、stress cpu满负荷…

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

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

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

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

【Qt】Qt再学习(一):Application Example
1、QCommandLineParser 命令行解析类 常用接口 QApplication app(argc, argv);QCommandLineParser parser;parser.setApplicationDescription(QCoreApplication::applicationName());parser.addHelpOption(

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

《人月神话》——外科手术队伍——笔记!
本章讨论了一个问题“如何在有意义的时间进度内创建大型的系统?” 软件经理测试出来的数据显示“经验和实际的表现没有相互的联系”。 *需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟…

直接上手!不容错过的Visual Studio Code十大扩展组件
作者 | David Neal译者 | 谭开朗,责编 | 屠敏转载自CSDN(ID:CSDNnews)各大平台与各种语言的开发人员都在使用Visual Studio Code,我对此感到惊讶。Stack Overflow发布的2019年开发者调查结果显示,VS Code占…

【Qt】Qt再学习(二):Bars Example(Q3DBars)
1、简介 Bars example显示了如何使用Q3DBars制作3D条形图,以及如何结合使用小部件来调整几种可调节的质量。该示例显示了如何: 使用Q3DBars和一些小部件创建应用程序 使用QBar3DSeries和QBarDataProxy将数据设置为图形 使用控件调整一些图形和系列属性…

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

android中PreferencesActivity的使用(一)
在使用android手机的时候,尤其是在操作软件设置时,我们经常见到这样的界面: 这是怎么来实现的的呢?其实android已经提供了相应的类和方法,当进行简单数据存储时(比如:软件配置参数)a…

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

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

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

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

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搜索背后的关键算法
【导读】随着互联网的普及,搜索成为人们最常用的基本功能之一,但这背后的秘密是什么呢?近日,微软公司介绍了他们是其如何应对用户搜索习惯的改变,并开源了支撑 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 日,由中国 IT 社区 CSDN 与数字经济人才发展中心联合主办的第一届 CTA 核心技术及应用峰会将在杭州国际博览中心召开。近 500 名开发者将齐聚于此,共同交流探讨机器学习和知识图谱的技术及行业落地趋势。会议将聚焦机器学习和知识图…

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

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