机器学习 Study Jam:第二季课程总结与回顾

TensorFlow 2020-09-17 17:49

不知不觉 夏天过去

机器学习 Study Jam 第二季

要跟大家正式告别啦


我们特别整理了几个关键词

希望记录下这一季的精彩瞬间

快来看看哪个让你最记忆深刻吧


「学习小队」

社群和朋友圈里的学习邀请,报名招募帖下的火热留言,主动承担更多职责的队长和热心队员,五个人自发组织的课后讨论和钻研...学习新知识的过程也许不会一帆风顺,和队友共同努力的经历却可能是这个夏天的一份难忘回忆。



「TensorFlow 2」

第二季课程以《简单粗暴 TensorFlow 2》系列内容为基础,带大家步入机器学习的世界。


我们从机器学习的基本原理和应用入手,了解了如何用 TensorFlow 2 构建神经网络;并通过实践,尝试完成了基础模型的建立和训练,以解决对应场景下的简单问题。此外,我们还带大家学习使用了 TensorFlow 2 中最近更新的一些强大功能。


对上述知识点都感到轻车熟路?恭喜,你的 TensorFlow 精通之路已经成功迈出第一步啦。



「Office Hours 在线答疑」

值得一提的是,两位课程设计者 —— 机器学习方向的谷歌开发者专家 (GDE) 李锡涵和李卓桓,也在课程中途为初学者们带来了干货满满的 Office Hours 在线答疑。


PS:直播视频将上传 B 站 Google中国的 TensorFlow 频道(https://space.bilibili.com/64169458/channel/detail?cid=41910),敬请关注!



除去基本的重点难点分析,两位老师还解答了大家提出的多个代表性问题。比如⬇️


Q1:TensorFlow 2.0 有 C 语言的版本吗?

A1: 简单来说,有,TensorFlow 2.0 C 语言版本的安装方法可以直接这里找到 。

  • 这里
    https://tensorflow.google.cn/install/lang_c  


这里扩展一下关于 TensorFlow 2.0 的语言支持。TensorFlow 2.0 支持很多语言,不仅支持 Python、C、Java、Go 等语言。首先要理解一点,TensorFlow 本身并不是由 Python 或 Java 等语言写的,它的底层语言一定是 C++ 等更加底层的语言,这使得它的框架更加高效。TensorFlow 之所以支持多种语言,不是因为用其他语言重新写了一遍 TensorFlow,而是因为用了某种 binding 的方式,将各种语言与 TensorFlow 核心的部分绑定在一起。相当于 TensorFlow 2.0 的底层是用 C++ 写的,但在上面暴露出一些 API 接口,而这些接口可以在任何语言下都去实现。这些接口的目的就在于把其他语言写的内容转化成 TensorFlow 看得懂的内容,通过这种架构使得 TensorFlow 支持多种语言。


Q2:怎样理解 tf.function?

A2: 这是一个比较大的问题。tf.function 可以简单理解为一个桥梁,桥梁的作用在于把用即时执行模式写出的模型转化成用图模式来实现的模型,转化的主要目的是服务于模型的部署以及让模型的运行更加高效,从 high level 的角度理解的话就是一个桥梁的作用,构建了一个从即时执行到图模式的桥梁。

Q3:TensorFlow Lite 和 TensorFlow 2.0 使用方法是否相同?

A3: 两者差别有点大,首先要理解 TensorFlow Lite 是服务于模型部署的工具,也即是说在使用 TensorFlow Lite 之前,你的模型应该已经训练好了,并且导出成一个统一的 savedmodel。我现在想做的任务是我有一个训练好的模型,想在移动端部署,在这个过程中就可以用到 TensorFlow Lite;但它本身是不能用来模型训练的,至少暂时不行。TensorFlow Lite 的存在就是为了使模型部署在移动端更加高效,因为移动端与电脑端的要求不一样,移动端对效率是非常敏感的,因为电池容量有限,无法支持计算量非常大的运算,比如手机识别图片半小时就没电了,或者手机会发热像暖手宝一样,TensorFlow Lite 就是要解决这样的问题。TensorFlow Lite 希望把这些模型部署在手机上,可能一定程度上会有性能的损失,比如之前图片识别率是 95%,现在是 94%,但是模型部署是非常高效的,花费很少的计算资源就可以让模型跑起来,由此可见二者的区别在于 TensorFlow 2.0 主要用来做模型训练,TensorFlow Lite 主要服务于模型部署。


Q4. 请问 tf.js 是不需要冻结模型了吗?

A4: 在浏览器里跑的话,还是要冻结之后 SavedModel 出来,前端浏览器里加载之后才可以。如果是在后端用 node 跑的话,可以试一下 TensorFlow 的 SavedModel 直接把模型转过来,也可以在 JavaScript 里进行后续训练。当然在前端浏览器也可以做后续训练,但性能会稍微差一些。所以一般来讲,我们在 html 里会部署一个模型,模型会压缩,会想办法让它变得更小,到页面里做 inference,但在后端页面的话,在 node.js 里可以做任何 Python 的 TensorFlow 可以做的事。


Q5. 请问跑在浏览器上会有性能问题吗?

A5: 性能问题是绝对存在的,取决于我们如何优化它达到最终的实际效果。如果在浏览器中加载 BERT 模型,虽然 BERT 有点太重了,比如有 1G 的参数,到正式使用时可能要压缩到 100M 才能正式使用。那么在前端浏览器也是一样,我们有很多 TensorFlow Lite 各种模型的压缩和精简,我们把精简的模型拿过来放到合适的场景下用,这是现阶段比较好用的。如果是模型很大的话,放在后端去做训练微调,如果在前端应用的话要压缩得尽量小才行。


Q6. TensorFlow 方便训练 transformer 吗?

A6: 不太容易,但不排除以后可以,如果用了 TensorFlow 的 binding ,又可以在 Google Cloud 上用 TPU 的话,那时候你用的是 JavaScript 还是 Python,本质区别就不大了。目前还是建议大家把 tf.js 用做一个 deployed 的部署工具,把它用起来,去解决一些前端领域的问题,不要去挑战算力和性能。

想要全部复习答疑内容?点击对应文章就可以回顾啦。



「结课小测」

实践是检验知识的重要标准。在课程尾声,结课小测验也随之公布。各个学习小队需要齐心协力,争取全员完成提交结课小测验,从而参与最终评奖带走夏日礼包。小测验通过人数大于等于 3 人的小队,优秀队长还将额外获得一份特别礼。

夏季礼包:悠悠球、笔记本、帆布袋、帽子、折扇


Study Jam

队长特别礼


对啦,友情提醒所有成功报名(即收到组队成功邮件通知)的小伙伴,小测验结果通知邮件本周已陆续发出,别忘了检查收件箱噢。除了小测验结果,邮件里还附有 Study Jam 第二季的课后调查,欢迎大家积极填写,将你最真实的感受和建议都反馈给我们。


如果你的学习小队符合评奖资格,通过了评定且收到了对应通知邮件,记得留意最近的快递提醒,我们的礼物正在发出中~如果一周后仍未收到礼物,你可以在公众号后台留言,我们会尽快联系你。


一个月的课程圆满结束

曾组队同行的开发者们

在收获了充满知识和友谊的旅途后

也将回到各自的领域当中

开始 TensorFlow 的更多应用


对机器学习 Study Jam 项目而言

结课也并不代表结束

我们会继续改进和提升

努力为大家带来更多干货和惊喜


那么,期待在未来的下一次相见



推荐阅读