TensorLayer2.0发布:开放的深度学习开发平台
近日,TensorLayer人工智能开源社区发布了TensorLayer 框架的2.0版本,由即将加入北京大学前沿计算研究中心的董豪博士主持开发,以支持动态训练模式和动/静态神经网络模型切换,以及TensorFlow2.0。本次2.0的大更新主要贡献来自北京大学和帝国理工学院的核心团队,包括吴润迪(@ChrisWu1997)、张敬卿(@JingqingZ)、吴睿海(@warshallrho)、董豪(@zsdonghao)。新的设计在支持动态训练模式的同时,大大简化了自定义神经网络的实现,利于协同扩展和维护。
TensorLayer的前世今生
深度学习开发缺乏透明、灵活和易定制的框架,同时公司主导开发的框架往往对支持最新的神经网络有滞后性,并对其他公司的工作有排斥性,不利于研究者使用。这催生了独立开发不隶属于任何组织的深度学习开源框架,以分享最新的神经网络设计、数据处理工具、训练函数和代码样例等,支持开发日益复杂的深度神经网络。2016年,董豪在帝国理工读博期间在导师郭毅可院士的领导和支持下,在Github上开源了第一个版本的TensorLayer,并于2017年获得ACM MM最佳开源软件奖,目前已获得17万次下载,成为主流框架之一。TensorLayer提供了易用性、拓展性和兼容性并存的高层设计抽象,便于广大研究人员和工程师从事开发和前沿研究工作,大大拉近了工业界和学术界的距离。
深度学习推动了计算机视觉、自然语言处理和多媒体等领域的发展,然而开发一个深度学习算法通常十分困难,因为它涉及到构建神经网络架构、训练流程、数据处理、以及生命周期管理等。TensorLayer是一个通用型Python库,旨在帮助研究者和工程师高效地开发深度学习算法。它为神经网络搭建、开发流程、以及生命周期管理提供了丰富的抽象方法,在提高效率的同时,还保留性能和可拓展性。TensorLayer开源三年来,已经在学术界和工业界得到了很好的验证,帮助国内外研究人员和产品工程师实现各类深度学习功能。
2.0版本主要在北京大学前沿计算研究中心的支持下完成。
TensorLayer由底层到上层可以分为三大模块:
1. 神经网络模块:层是神经网络的核心单元,TensorLayer提供了大量工业界和学术界需要的参考层实现(比如 CNN、RNN、BinaryNet等),提供类似Pytorch的“动态”声明方式,也提供类似Lasagne的堆叠式“静态”声明方法来建立模型,并支持动态图和静态图两种训练模式,以支持不同的开发需求。
2. 工作流模块:神经网络只是深度学习系统中的基础部分,为了支持整个深度学习开发流程,TensorLayer提供了大量数据处理和训练流程所需的工具。此外,为了管理整个深度学习开发,以支持项目的存储、比较、溯源等,TensorLayer提供了生命周期管理功能,包括模型、数据和训练流程的管理,以及支持任务分发以实现多任务并行执行,以加快训练(比如 超参数选取)和自动产品化部署。
3. 应用模块:为了促进产业界和学术界的交流,TensorLayer社区提供了大量应用和预训练模型,包括医疗图像分析、图像增强、人体姿态估计、文本生成、风格迁移、各类增强学习算法,等等。
董豪在国际研讨会上介绍 TensorLayer 的工作
此外,与 Keras 和 Pytorch 相比,TensorLayer 提高了神经网络模块的抽象化设计,同时实现了降低使用现有层和开发新层的工作量,既不需要开发者编写函数以计算层的输出尺寸(Keras需要),也不需要在使用层时输入上一层的输出尺寸(Pytorch需要)。这些设计大大方便了框架的拓展。更重要的是TensorLayer提供了整套端到端的工作流,包括数据预处理、训练、服务模块、数据库管理,以及任务自动发放和收集,这些都是开发者构建整个系统的关键。开发流程采用小步快跑的开发模式,能够快速地支持最新的神经网络,极大地方便了广大开发者的开发贡献。得利于众多一线科研人员的参与,截止目前为止,TensorLayer一直保持着最多的官方神经网络层。
TensorLayer的后台目前基于TensorFlow计算引擎和MongoDB数据库,但这些模块设计可以拓展到其他的计算引擎和数据库中。
TensorLayer开源社区
本次2.0更新值得注意的是来自北京大学信息科学技术学院的两位大三同学,吴润迪(16级图灵班)和吴睿海。他们在今年1月份加入开发团队,经过4个月的努力,在神经网络模块和工作流模块中做出了重大的贡献,成为了本次大更新的最核心成员。此外,TensorLayer重视国内社区发展,这次更新非常感谢国内社区的:李国、魏亚东、麦络、柳青林、罗一风等人的支持,也非常感谢电子工业出版社对知识传播的支持,编写《深度学习:一起玩转TensorLayer》一书。
TensorLayer 社区当前正处在一个主动发展的阶段,包括一个“框架开发团队”和一个“应用开发团队”。目前已经从开源社区接收到大量的贡献,贡献者来自帝国理工学院、北京大学、卡内基梅隆大学、斯坦福大学、清华大学、加州大学洛杉矶分校、西安交通大学、西安电子科技大学、爱丁堡大学、瑞典林雪平大学等高校的研究人员,以及谷歌、微软、阿里巴巴、腾讯、ReFULE4、360安全、彭博等公司的工程师。国内的社区交流以微信群和线下聚会为主。此外,TensorLayer社区和很多组织都有保持联系,如London PhD Network, Kubeflow, Clusterone等,社区几位主要成员拿到了OpenAI, Google Brain, Nvidia Research等公司的offer。
开源社区接下来计划增加更多的killer features,比如鉴于目前学界对3D视觉热度上升(如PointNet, PointCNN等工作),计划增加3D视觉所需的模块以更好地支持3D视觉任务和处理mesh、点云等3D数据,敬请期待。我们希望逐步减少对TensorFlow的依赖,开发更高效的数据流,并开发全套的最新计算机视觉、增强学习、自然语言处理等应用,以促进产业界和学术界的交流。
董豪博士简介
董豪博士即将毕业于帝国理工学院,并将于2019年9月加入北京大学前沿计算研究中心。研究领域为深度学习、计算机视觉以及医疗应用。在ICCV,TIFS,TMI,TNSRE,ACM MM等国际会议与刊物发表论文10余篇。同时在SIGGRAPH, TIP, TKDE, Neurocomputing等国际会议与刊物担任审稿人。他致力于推广人工智能技术,是深度学习开源框架TensorLayer的创始人,并获得ACM MM 2017年度最佳开源软件奖。
相关报道:
[1] 机器之心:TensorLayer:控制深度学习开发复杂度
[2] ClusterOne -“Humans of AI”系列: TensorLayer and the Chinese Deep Learning Community