2020-02-27 14:37:02

机器之心报道

参与:思

感觉深度学习建模只不过调库与堆叠层级?你需要谷歌大脑维护的这条路径 Trax,从头实现深度学习模型。

从最开始介绍卷积、循环神经网络原理,到后来展示各种最前沿的算法与论文,机器之心与读者共同探索着机器学习。我们会发现,现在读者对那些著名的深度学习模型已经非常熟悉了,经常也会推导或复现它们。

而对于最前沿的一些实现,包括 Transformer 或其它强化学习,我们通常都需要看原作者开源的代码,或者阅读大厂的复现。出于速度等方面的考虑,这些实现通常会显得比较「隐晦」,理解起来不是那么直白。这个时候,你就需要谷歌大脑维护的 Trax,它是 ML 开发者进阶高级 DL 模型的路径。

Trax 是一个开源项目,它的目的在于帮助我们挖掘并理解高一阶的深度学习模型。谷歌大脑表示,该项目希望 Trax 代码做到非常整洁与直观,并同时令 Reformer 这类高阶深度学习达到最好的效果。

项目地址:https://github.com/google/trax

什么是 Trax

简单来说,Trax 就是一个代码库,它有点类似于一个极简的深度学习框架。只不过 Trax 关注什么样的代码能让读者更好地理解模型,而不只是关注加速与优化。

Trax 代码及其组织方式希望让我们从头理解深度学习,而不只是简单地调库。整个项目从最基础的数学部分开始,然后向上依次构建层级运算、模型运算,以及有监督与强化学习训练任务。

因为是进阶深度学习高级建模,Trax 还囊括了最前沿的研究结果,例如在 ICLR 2020 上做演讲报告的 Reformer。如下展示的是该项目的代码文件结构:

如果要从头理解并进阶深度学习,那么 Trax 代码主要可以分为以下 6 部分:

  • math/:最基本的数学运算,以及通过 JAX 和 TensorFlow 加速运算性能的方法,尤其是在 GPU/TPU 上;
  • layers/:搭建神经网络的所有层级构建块;
  • models/:包含所有基础模型,例如 MLP、ResNet 和 Transformer,还包含一些前沿 DL 模型;
  • optimizers/:包含深度学习所需要的最优化器;
  • supervised/:包含执行监督学习的各种有用模块,以及整体的训练工具;
  • rl/:包含谷歌大脑在强化学习上的一些研究工作;

每一个文件夹下都有对应的实现,例如在 Layers 中,所有神经网络层级都继承自最基础的 Layer 类,实现这个类花了 700 行代码。而后新的层级在继承它后只要实现以下两个方法就行:

通过 900 行代码(包括 Err 处理),基础的 Layer 类能完成其它所有处理,包括初始化与调用等。

使用 Trax

我们可以将 Trax 作为 Python 脚本库或者 Jupyter Notebook 的基础,也可以作为命令行工具执行。Trax 包含很多深度学习模型,并且绑定了大量深度学习数据集,包括 Tensor2Tensor 和 TensorFlow 采用的数据集。同时,如果我们在 CPU、GPU 或 TPU 上运行这些模型,也不需要改变。

如果读者想要了解如何快速将 Trax 作为一个库来使用,那么可以看看如下 Colab 上的入门示例。它介绍了如何生成样本数据,并连接到 Trax 中的 Transformer 模型。在训练或推断时,我们可以选择 GPU,也可以选择 8 核心的免费 TPU。

入门简介地址:

https://colab.research.google.com/github/google/trax/blob/master/trax/intro.ipynb

如果要在命令行中使用 Trax,那么带上参数就可以了,例如模型类型、学习率等超参。谷歌大脑团队建议我们可以看看 gin-config,例如训练一个最简单的 MNIST 分类模型,可以看看 mlp_mnist.gin,然后如下运行就行了:

python -m trax.trainer --config_file=$PWD/trax/configs/mlp_mnist.gin

如果你觉得上面的训练太简单,也可以在 ImageNet64 上训练一下 Reformer:

python -m trax.trainer --config_file=$PWD/trax/configs/reformer_imagenet64.gin

最后,这个项目最重要的还是它的实现代码,我们并不是因为可以直接运行而使用它。相反,我们是因为它的代码直观简洁,能帮助我们一步步更深刻地理解模型而使用它。

谷歌大脑开源Trax代码库,你的深度学习进阶路径相关推荐

  1. 阿里巴巴研究院开源的代码库有哪些

    阿里巴巴研究院开源的代码库有以下几个: X-DeepLearning:阿里巴巴自研的深度学习框架,支持分布式训练和推理,具有高效.易用等特点.该框架已经在阿里巴巴内部广泛应用. EasyTransfe ...

  2. 脑电EEG代码开源分享 【6. 分类模型-深度学习篇】

    往期文章 希望了解更多的道友点这里 0. 分享[脑机接口 + 人工智能]的学习之路 1.1 . 脑电EEG代码开源分享 [1.前置准备-静息态篇] 1.2 . 脑电EEG代码开源分享 [1.前置准备- ...

  3. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

  4. 《深度学习进阶:自然语言处理》natural language processing 的 jupyter notebook代码及笔记

    在<深度学习进阶:自然语言处理>这本书过程中,运行了书籍提供的所有代码并做了笔记.同时,原书提供的代码是python文件,我在学习的过程中转换成了jupyter notebook的ipyn ...

  5. 谷歌大脑开源「数据增强」新招数:ImageNet准确率达85%,大神Quoc Le出品

    十三 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你的数据还不够强. 玩深度学习的人都知道,AI算法大部分是数据驱动.数据的质量一定程度上决定了模型的好坏. 这就有了深度学习天生的一个短板 ...

  6. 【PySlowFast】Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 在近些年的视频理解研究中,Facebook AI Research 贡献了许多精彩 ...

  7. Facebook开源算法代码库,轻松复现前沿视频理解模型

    在近些年的视频理解研究中,Facebook AI Research 贡献了许多精彩的工作.近日,FAIR视频团队在 ICCV 相关研讨会上开源了视频识别检测代码库 PySlowFast,并同时发布了预 ...

  8. Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自机器之心. 在近些年的视频理解研究中,Facebook AI Research 贡献了许多精彩的工作.近日,FAIR视频团队在 ICCV 相关 ...

  9. ImageNet准确率超过90%!谷歌大脑开源V-MoE,用稀疏条件计算来训练目前最大的视觉模型!(NeurIPS 2021)...

    关注公众号,发现CV技术之美 ▊ 写在前面 稀疏的专家混合网络 (Sparsely-gated Mixture of Experts networks (MoEs)) 在自然语言处理中显示出出色的可扩 ...

最新文章

  1. 如何提高模型性能?这四大方法值得尝试 | CSDN 博文精选
  2. 2015级C++第10、11周程序阅读 继承和派生
  3. MySQL高级 - 常用工具 - mysql
  4. 编写干净的测试–分而治之
  5. httpcode状态码
  6. 文言文编程可以编译成PHP吗,阁下可知文言编程之精妙?CMU本科生开源文言文编程语言,数天2K星...
  7. 虎牙直播电影一天收入_电影收入
  8. 2.4 数值分析: Doolittle直接三角分解法
  9. php h5微信支付签名错误,微信H5支付签名错误
  10. 如何关闭勒索病毒端口
  11. FFmpeg之视频转码
  12. DHCP/Netbios
  13. php 实现游戏开发
  14. 2023最新仿蓝奏云合集下载页面系统源码+有PHP后台版的
  15. 华为云数据转发与分析
  16. Mac下brew的安装
  17. 【域名检测】使用CNN实现DGA恶意域名检测(TensorFlow)【代码】
  18. java 生成ecc证书_升级支持ECC证书指南
  19. 微信小程序wx.request请求接口需设置header: { accept: */*,content-type: application/json },
  20. Servlet session: 用session实现简单 购物车

热门文章

  1. 金三银四面试题来一波,持续更新
  2. 分清向量的点乘和叉乘
  3. 标识符命名规则和命名风格
  4. 【工具】vscode注释插件koro1FileHeader
  5. linux 7z打包排除特殊文件夹,7-zip的压缩的时候排除某目录
  6. 北京大学程序设计MOOC-魔兽世界大作业(二)
  7. HTML连载27-层叠性优先级!important用法
  8. python msgpack_windows 安装msgpack-python
  9. ubuntu upstart任务崩溃,错误提示:exception basic_string::_M_construct
  10. 早期贝尔实验室中UNIX办公室是什么样的?