GitHub 上 57 款最流行的开源深度学习项目

本文整理了 GitHub 上最流行的 57 款深度学习项目(按 stars 排名)。最后更新:2016.08.09使用数据流图计算可扩展机器学习问题TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow 的表现比第一代的 DistBelief 快了2倍。TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用 TensorFlow。任何基于梯度的机器学习算法都能够受益于 TensorFlow 的自动分 化(auto-differentiation)。通过灵活的 Python 接口,要在 TensorFlow 中表达想法也会很容易。GitHub 上 57 款最流行的开源深度学习项目Stars:11799Caffe是一个高效的开源深度学习框架。由表达式,速度和模块化组成。Stars:10148Torch实现的神经网络算法。Neural style 是让机器模仿已有画作的绘画风格来把一张图片重新绘制的算法。GitHub 上 57 款最流行的开源深度学习项目Stars:9042Deep Dream,一款图像识别工具Stars:7502一款Python实现的深度学习库,包括卷积神经网络、递归神经网络等。运行在Theano和TensorFlow之上。Keras是一个极简的、高度模块化的神经网络库,采用Python(Python 2.7-3.5.)开发,能够运行在TensorFlow和Theano任一平台,好项目旨在完成深度学习的快速开发。Stars:7170学生主导的一个独立项目,从新实现了 DeepMind在2016 Nature发表的内容, 《用深度神经网络和树搜索学习围棋》 (Nature 529, 484-489, 28 Jan 2016).Stars:6671基于TensorFlow开发的模型Stars:6275运用深度神经网络将涂鸦变为优雅的艺术品,从照片生成无缝纹理,转变图片风格,进行基于实例的提升,等等…还有更多!(语义风格传递的实现)GitHub 上 57 款最流行的开源深度学习项目Stars:5957深度学习工具包 。来自微软公司的CNTK工具包的效率,“比我们所见过的都要疯狂”。 这部分归功于CNTK可借助图形处理单元(GPU)的能力,微软自称是唯一公开“可扩展GPU”功能的公司。(从单机上的1个、延伸至超算上的多个) 在与该公司的网络化GPU系统(称之为Azure GPU Lab)匹配之后,它将能够训练深度神经网络来识别语音,让Cortana虚拟助理的速度达到以前的十倍。Stars:5872适合初学者的 TensorFlow 教程和代码示例,做了相关笔记和代码解释。Stars:5231ConvNetJS 是用 JavaScript 实现的神经网络,同时还有基于浏览器的 demo。Stars:5133Torch7,深度学习库。Torch7 是一个科学计算框架,支持机器学习算法。易用而且提供高效的算法实现,得益于 LuaJIT 和一个底层的 C 实现。Stars:4855基于深度学习网络的面部识别。Stars:4685轻巧、便携、灵活的分布式/移动深度学习框架,支持Python, R, Julia, Scala, Go, Javascript等等语言。MXNet是一款设计为效率和灵活性的深度学习框架。它允许你混合符号编程和命令式编程,从而最大限度提高效率和生产力。在其核心是一个动态的依赖调度,它能够自动并行符号和命令的操作。一个图形优化层,使得符号执行速度快,内存使用高效。这个库便携,轻量,而且能够扩展到多个GPU和多台机器。GitHub 上 57 款最流行的开源深度学习项目Stars:4286Theano 是一个 Python 库,用来定义、优化和模拟数学表达式计算,用于高效的解决多维数组的计算问题。Stars:4281黑客的开源机器智能框架。GitHub 上 57 款最流行的开源深度学习项目Stars:3820多层递归神经网络的字符级别语言模型,基于Torch开发。Stars:3694NeuralTalk是一个Python+numpy项目,用多模式递归神经网络描述图像。Stars:3673基于Hadoop 和 Spark的Java, Scala & Clojure深度学习工具。Deeplearning4j(简称DL4J)是为Java和Scala编写的首个商业级开源分布式深度学习库。DL4J与Hadoop和Spark集成,为商业环境(而非研究工具目的)所设计。Skymind是DL4J的商业支持机构。Deeplearning4j 技术先进,以即插即用为目标,通过更多预设的使用,避免太多配置,让非研究人员也能够进行快速的原型制作。DL4J同时可以规模化定制。DL4J遵循Apache 2.0许可协议,一切以其为基础的衍生作品均属于衍生作品的作者。Stars:3368深度学习库,包括高层次的TensorFlow接口。Stars:3352神经网络模型示例。Stars:3020一种用于开发和比较强化学习算法的工具包。Stars:2914Magenta: 音乐和艺术的生成与机器智能Google Brain团队的一组研究人员发布了一个项目Project Magenta,其主要目标是利用机器学习创作艺术和谱写曲子。Project Magenta使用了 TensorFlow系统,研究人员在GitHub上开源了他们的模型和工具。研究人员称,机器生成的音乐已经存在了许多年,但它们在都缺乏长的叙事艺术。Project Magenta就试图将故事作为机器生成音乐的重要部分。Google公布了一个DEMO(MP3)表现Magenta项目的成果。GitHub 上 57 款最流行的开源深度学习项目Stars:2798用神经网络模型给灰度图上色。GitHub 上 57 款最流行的开源深度学习项目Stars:2666基于node.js和浏览器的免架构神经网络库。Stars:2550Torch开发的图像简介生成代码,运行在GPU上。GitHub 上 57 款最流行的开源深度学习项目Stars:2540使用神经匹配和融合生成相似图形。GitHub 上 57 款最流行的开源深度学习项目Stars:2413Tensorflow,从基础原理到应用。Stars:2355基于Theano训练和构建神经网络的轻型函数库。Stars:2153基于Theano的机器学习库。Stars:2134深度学习教程笔记和代码。详情参见wiki页面。Stars:2121Nervana™开发的一款快速、可扩展、易上手的Python深度学习框架.neon 是 Nervana System 的深度学习软件。根据Facebook一位研究者的基准测试,Nervana的软件比业界知名的深度学习工具性能都要高,包括Facebook自己的Torch7和Nvidia的cuDNN。Stars:2032Matlab/Octave的深度学习工具箱。包括深度信念网络、自动编码机、卷积神经网络、卷积自动编码机和vanilla神经网络等。每种方法都有入门示例。Stars:1721使用深度强化学习破解Flappy Bird游戏(深度 Q-学习).GitHub 上 57 款最流行的开源深度学习项目Stars:1607在深度学习机上设置软件说明。Stars:1573一款灵活的深度学习神经网络框架。Chainer是深度学习的框架,Chainer在深度学习的理论算法和实际应用之间架起一座桥梁。它的特点是强大、灵活、直观,被认为是深度学习的灵活框架。Stars:1514看图讲故事的递归神经网络模型。Stars:1353深度学习GPU训练系统。Stars:1229基于Keras和Theano生成jazz的深度学习模型!GitHub 上 57 款最流行的开源深度学习项目Stars:1183仅引用头文件,无依赖且使用 C ++ 11 的深度学习框架GitHub 上 57 款最流行的开源深度学习项目Stars:1143快速、灵活、有趣的神经网络。Stars:1044一个用于深度学习的一体化 Docker 镜像。 包含所有流行的 DL 框架(TensorFlow,Theano,Torch,Caffe等)。Stars:937C语言版本的开源神经网络。GitHub 上 57 款最流行的开源深度学习项目Stars:904基于Theano的机器学习入门教程,从线性回归到卷积神经网络。Stars:904一款生成古典音乐的递归神经网络工具。Stars:866用于构建和训练神经网络模型的Theano框架Stars:860TensorFlow的交互式、节点调试和可视化的工具。TensorDebugger (TDB) 是深度学习调试器,使用断点和计算机图形化实时数据流可视化扩展 TensorFlow(谷歌的深度学习框架)。特别的是,TDB 是一个 Python 库和 一个 Jupyter Notebook 扩展的结合,构建 Google 的 TensorFlow 框架。GitHub 上 57 款最流行的开源深度学习项目Stars:849深度神经网络入门工具,类似scikit-learn的分类器和回归模型。GitHub 上 57 款最流行的开源深度学习项目Stars:760分布式机器学习平台(Python, CUDA, OpenCL)VELES 是分布式深度学习应用系统,用户只需要提供参数,剩下的都可以交给 VELES。VELES 使用 Python 编写,使用 OpenCL 或者 CUDA,利用基于 Flow 的编程。它是三星开发的另一个 TensorFlow。Stars:759基于C++11的深度学习接口和服务器,与Python绑定并支持Caffe。Stars:759基于Google Tensorflow的深度Q学习演示。Stars:724基于Spark的Caffe。雅虎认为,深度学习应该与现有的支持特征工程和传统(非深度)机器学习的数据处理管道在同一个集群中,创建CaffeOnSpark意在使得深度学习训练和测试能被嵌入到Spark应用程序中。CaffeOnSpark被设计成为一个Spark深度学习包。GitHub 上 57 款最流行的开源深度学习项目Stars:702神经网络库的抽象,著名的Lasagne。Stars:568基于tensorflow实现的深度卷积生成对抗网络。GitHub 上 57 款最流行的开源深度学习项目Stars:479MATLAB CNN 计算机视觉应用工具箱。Stars:413用于训练深度卷积神经网络模型的OpenCL库。Stars:304可视化搜索服务器。一个简单使用TensorFlow,InceptionV3模型和AWS GPU实例实现的视觉搜索服务器。代码实现两个方法,一个处理图像搜索的服务器和一个提取pool3功能的简单索引器。 最近邻搜索可以使用近似(更快)或使用精确方法(更慢)以近似方式执行。GitHub 上 57 款最流行的开源深度学习项目英文:Top Deep Learning Projects

最让程序员沮丧的 10 件事,你中了几枪?

软件开发是一个挺不错的工作,不过同时也像任何其他工作一样有着不好的一面。这里列出了大部分程序员对于写代码无法忍受的 10 件事。对于非程序员来说,他们的工作看起来非常幸福。需求很高、待遇很好,公司提供各种各样的补贴福利等等。然而实话实说,虽然以上所说都不为虚,这份工作就像其他任何工作一样充满了让程序员们抓狂地扯下仅存的几根头发的烦恼。一天当中可以有好几件事能把一个普通程序员逼迫到处于崩溃的边缘。基于来自在线论坛里真实程序员们的评论和投票,请浏览十大程序员最感到沮丧的事。如果看过之后,你还对成为他们的一员执迷不悟的话,请别说没有被警告过哦。在没有了赖以生存的硬件之后,软件当然是什么也干不了的。尽管一些程序员愿意去忽略硬件端,但他们不可避免地或早或晚会在搭建或者调试程序时面对硬件特定性的问题。这是为什么有些程序员,强烈建议新程序员们熟悉他们代码之下底层的硬件和系统,来减少未来类似问题的恶化。网友的遭遇:“任何一个曾经被呼叫来调试一个诡异的数据库服务器崩溃,或是为什么 RAID 驱动程序没有正常工作的程序员,都知道处理硬件问题是多么痛苦。” Steve Borthwick“程序员痛恨硬件:因为他们不能总是指责硬件。” 匿名「我跳槽是因为他们的显示器更大。」除非你有一个跑步机功能的办公桌,软件开发的工作基本不是一个有氧健身活动。大部分程序员长时间坐着,弯腰驼背地操作着键盘,目不转睛地盯着电脑屏幕。所有这一切只需一会儿就会变得不舒适。如果你不至少换换在哪里坐着,这也能变得非常压抑。网友的遭遇:“坐在一把椅子上一整天并且盯着屏幕。一段时间之前毛病开始了。一开始是背,然后是脖子,接下来眼睛开始灼伤疲劳,脑袋开始疼…人开始坐立不安…即便我开始用健身,打太极、瑜珈、气功、骑自行车去上班。我也不能再每天八个多小时这样坐着了。一整天困在办公室里…看着太阳朝升夕落,却仍然坐在那把傻了吧唧的椅子上虚度光阴。” Markus Toman伯乐在线推荐阅读:《程序员的常见健康问题》。即使是最好的,最小心翼翼打造出来的代码也免不了错误。自然而然的,开发者们必须经常地花费时间追踪并且修复软件的 Bug;不管源自自己的代码还是别人的 。有些错误能被迅速发现并修复,其他的隐藏得太深,可能会令人发狂,进而导致浪费了数小时宝贵的开发时间,更别说因此损失的码农的理智了。网友的遭遇:“发现一个难以重现的 Bug,甚至更糟,一组相同的代码在集成测试中随机地通过或失败!之后你就会感觉你可能永远也不会发现那些神秘潜伏在某处着的恶魔代码。WTF!” Emmanuel Ngwane“我们写出了如此庞大的程序(甚至有时很小的程序),以至于当调试过程中我们去睡觉之后,我们遗忘了当初的错误是什么。” Ayush Bhatnagar“调试程序,特别是当你在一个包含了上千行代码的大项目里工作时,大多数的极客(比如我)倾向于用一个投影仪来调试。因为我们的眼睛会舒服多了。”Isaac Perez“Heisenbugs /海森堡(不确定原理)。”Awal Garg与其他开发者的代码共事可能令人沮丧。不过如果代码至少有个清晰的文档,那就不会那么的令人讨厌。不幸的是实际情况不总是这样。那些注释蹩脚,亦或是缺少文字描述如何工作的软件,想要调试、增进、或者整合这些软件所需要的时间大大延长。更进一步来说,这对程序员的血压更是有害无益。
最让程序员沮丧的 10 件事,你中了几枪?
网友的遭遇:“最令人沮丧的事就是被雇佣来为一个文档拙劣的软件工作。这使得接受的人举步维艰。它们缺少注释,有着糟糕的代码语义,尤其是当前面的程序员们留下了一大堆缺陷和错误。”Angel Angeles III
“理解某个白痴写的没有文档没有注释的代码。” Abhishek Chauhan
“我跟绝大多数程序员一样,大部分时间花在了维护缺乏文档的代码上,而不是编写新的代码。”  Walt Karas伯乐在线推荐阅读:《程序员到项目经理(29):怎样写文档》源代码控制系统,比如 Git 或 Subversion,是使得多个开发者同时操作同一份代码的绝佳工具,避免了大家互相掣肘。可是,最终代码的改变需要提交到版本库里。此时冲突可能发生,比如说两个程序员修改了相同的文件或者子程序。在这些情况下这些修改需要被整合起来。有时整合这些冲突可以很快就解决,有时就没有这么乐观了。网友的遭遇:“我讨厌整合,因为这就好比,你想这么改代码,我想这么改代码。那么我们到底怎么改呢?我总能找到一个办法合并我们所有的修改。但是如果真的存在一个直接冲突,这将会变成一个尴尬的过程。”Jessica Su
“整合冲突纯粹是恶魔。” Koustuv Sinha软件开发者通常被认为是相当聪明的家伙。不幸的是,这常常导致老板们,项目经理们,还有销售人员对程序员/程序员团队,可以合理地在一个确定时间点之前的产出有着不切实际的期望。因而夸大了可以交付的成果。这反过来可以导致开发者被榨干并且引发了码农们普遍不满。
最让程序员沮丧的 10 件事,你中了几枪?
网友的遭遇:“你的老板对你和你的同事有着极高的期望,但却远远没有哪怕接近于期待的时间和资源。” Kevin Sekin
“项目经理或者业务分析师们许诺了一个月亮给客户。然后程序员们无论如何被迫得去做出来。” Ratnakar Sadasyula
“我特别喜欢当某个人问了个看似无关紧要的问题,然后就随随便便地抛下了一个需要计算机科学领域进步几十年才能满足的特性的时候。”Vladislav Zorov每一个开发者的代码在某一刻都必须与其他开发者所写的代码协同工作。不论是同一个软件的不同部分,还是第三方软件库或工具,还是另一个完全的应用。没有哪个开发者的代码是座孤岛。不幸的是,这意味着一个程序员的代码可以通过轻率、糟糕的沟通、或者仅仅是简单的疏忽大意,破坏了另一个程序员的代码。这能引起紧张、压力、以及更常见的诅咒。网友的遭遇:“我经历的最令我沮丧的事,是和别人一起写一个程序。他擅自更改了我们二人都连接使用的工具库,而没有告知我工具库已经被修改。这意味着我在呼叫着缺少或者增加了参数的子程序,或者更糟糕的情况里,代码会在我没有权限的工具库里崩溃。” Sheri Fresonke Harper
“当你的部分代码因为别人改变了代码而停止工作时。常见的情况是他们的函数使用了比之前更多的参数,有时候程序被完全移除了或者放到了另一个位置。” Jessica Su
“时常被迫退回重改几天前写的现在突然损坏的代码 (第N次),因为更大的系统被某人修改了(没有跟你讨论)。他要么没有进行测试,要么不介意测试失败了。你听到的第一句话就是‘你的代码有问题。’” Simon Hayes尽管软件开发者的数量与日俱增,更不用提我们日常所需的一切都愈发依赖着软件。很多非技术背景的人仍然不理解软件开发者到底在做什么。对于非技术背景的人们来说,开发者们就是一群“技术人员”。很少有人关注,比如说那些开发软件和开发硬件的人的区别。这些随处可见的误解和错误的期待,尤其是来自家庭和朋友,可以真的逼疯一个程序员。网友的遭遇:“非技术人员的一个常见误解就是,既然程序员整天和电脑打交道,那我们一定知道怎么修理电脑。这就好比:迈凯轮车队简森·巴顿知道如何拆解和组装一个赛车齿轮箱,仅仅因为他会开 F1 赛车。” Steve Borthwick
“嗯,我是写代码为生的。但我帮不了你的打印问题或者打不开一个附件或者笔记本无法开机。除非你愿意请我一顿午饭或者一瓶啤酒。那么也许我能帮上忙。” Phil Johnson
“要给人们解释我可不是在街角开一个店,给他们安装盗版操作系统和软件到电脑上的人。” Anbalagan Jeyabalachandran,
“家人朋友们认为你可以搞定任何和电脑有千丝万缕联系的问题。不管是硬件还是软件。他们才不关心。你最终变成了听他们奚落。比如‘,如果你连我的 DVD 盘都修不好,那你算什么软件工程师。’” Jazib Babar
“1% 到 2% 的人知道你真的在做什么。” Yasin Pekşen像其他大部分费劲的事一样,打造好的软件需要时间。不幸的是,又像大部分费劲的事一样,上层管理层与/或客户经常不愿意为了一个理想的解决方案正确实施而长时间地等待。结果软件开发者经常被逼着把某件事快点搞定。这将导致丑陋的做法、技术债,并且缺少文档。这些都会在未来引发问题,特别是那些将来要被迫面对这些代码的程序员们。网友的遭遇:“我想把事情做好。但是对于把事情快点做完,按熟悉的方法做有着巨大的压力。有时这是常理之中。但这感觉如今的程序/商业文化已经偏向那个方向太多了。” Tikhon Jelvis
“对我来说这就像赛跑一样,写出来我称之为拼凑代码的代码,然后在生产中意识到我真希望当初写得更优雅一些。这里面有一个持续的时间压力…” Gene Sewell
“当你做了许多你甚至不认为和好的编程习惯沾一点边的事情时候,这是因为快比质量更为重要。你必须照着被要求的去做。” Jose Palala
“从来没有时间和金钱去找到正确的解决方案,但是又足够去找到临时应急的粗制滥造方案。这一切一遍又一遍地重复着。” Romi Awasthy作为一个软件开发者,或早或晚,你都将与别人的代码一起工作。不管是继承自工作中前辈的遗留代码,还是第三方API,还是技术顾问写的代码,你不可能完全逃离被迫着去修改、改进、或者/以及整合别人的程序。更不用说被逼着做经常导致开发者扯下一些或很多青丝的事。网友的遭遇:“最糟糕的部分就是被迫去浏览别人的代码,搞明白、调试好、反复调整。更糟糕的是,如果这个写代码的人已经离开了公司,而你当真没有任何相关的知识迁移。” Ratnakar Sadasyula
“尝试去解密上千行没有注释的代码。” Simon Zhu
“我处理过好几次顾问们写得一塌糊涂的代码。”Joe Samson
“另一个我觉得能令人沮丧的问题是第三方的API。你如此仰赖它们。有时你注意到一个问题,或者需要一个新特性,但那个 API 没有给出任何源码去修改。因此你得去友好地问问 API 的作者,然后盼望最好的结果。” Kevin Sekin
“语言和框架的 Bug。你花了几天琢磨为什么你的代码不能工作。结果只发现原来你触发语言或者框架本身的 Bug。” John Paul Alcala
“忍着看那些一群远远没有达到应有水准的人所写的代码。” Nani Tatiana Isobel

趣文:当程序员遇上智力题(第3季)

本系列:趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)小灰陷入回忆当中……趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季) 题目一: 10,15,22,34,53,84,__求横线位置的整数。趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季) 题目二: 21,29,45,57,71,___求横线位置的整数。趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季) 题目三: 11,14,10,17,50,1090,__求横线位置的整数。趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)小灰的回忆到此结束……趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)趣文:当程序员遇上智力题(第3季)这段时间先后发布了《当程序员遇上智力题》第一季和第二季,有很多热心读者积极参与进来,非常感谢诸位的热情。这些题目并不是很难,但每一道题都经过了笔者绞尽脑汁的思考,力求让题目的规律尽可能有趣、独特。打赏支持我写出更多好文章,谢谢!
趣文:当程序员遇上智力题(第3季)