Study Jam 答疑精选 01:TensorFlow 2 基础入门

2020 年 8 月 15 日 TensorFlow


7 月 31 日上线以来

机器学习 Study Jam 第二季

吸引了一波又一波小伙伴的关注与参与


本期报名的开发者们组成了多个 5 人一组的学习小队,在为期三周的课程中,了解机器学习的基本原理和应用,包括如何用 TensorFlow 构建神经网络、搭建基础模型、解决不同场景下的简单问题等。

简单粗暴 TensorFlow 2 课程链接

https://tf.wiki/zh_hans/mlstudyjam2nd.html


同时,各学习小队的成员需要互帮互助,一起观看答疑、讨论问题,并在课程尾声时,让小队的每位成员都能完成通过结课小测验,参与最终评奖。


←夏日礼包


长特别礼



5 位成员均完成结课小测验的小队,全员都将有机会获得夏日礼包一份


上周日,本期课程 

第一次 Office Hours 在线答疑顺利举行

谷歌开发者专家 (GDE) 李锡涵为直播间众多小伙伴

带来了如何上手 TensorFlow 2 的满满干货


话不多说,让我们一起回顾本次答疑的精彩重点

看看有没有你正疑惑的问题吧!









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

简单来说,有,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?

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









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

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




Q4:TensorFlow Lite 的应用场景有哪些?

例如手机上看到的 OCR:用手机拍照,无需联网,自动将图片中的文字提取出来;再或者用手机做机器翻译:在手机上输入中文,无需联网可离线翻译成英文。









Q5:可以展示一下使用 TensorFlow 2.0 建立 LSTM 回归预测模型吗?

大家如果看过我之前写过的《简单粗暴 TensorFlow 2》的话,可能会注意到我已经写过 RNN 的例子,但我当时举的这个例子是一个语言模型,语言模型是相对离散的,例如从 26 个字母中选择其中的一个作为预测结果,这是一种比较离散化的预测,但回归预测是更加连续的,因为你要输出一个 float 值,是小数的值,而不是整数的值。相对来讲比较容易,如果想做回归预测的模型,只需要把离散的语言模型当中最后的一层换成加一个 dense 的全连接层,让输出的 unit 大小为 1,最后模型输出的就是一个实数值,让实数值去计算损失函数,其实就做出了 LSTM 的回归预测模型了。


TensorFlow 的官网提供了相关教程,这部分写的比较详细,大家可以去看一下。

  • 相关教程
    https://tensorflow.google.cn/tutorials/structured_data/time_series









Q6:tf.data 如何读取本地的大型数据集(几百 G)?

问题在于一旦数据达到上百 G 的情况下,基本无法直接把数据全部读到内存里来做训练,内存是一定会炸掉的。但一个一个的手动去构建训练的 pipeline,比如把图片一张张读进来,然后再训练,如果你的编程能力不太好的话,很可能造成读数据的时间比训练时间长。针对这种情况,比较好的办法是用 tf.data,它是专门针对大型数据集去设计的 input pipeline 的框架,它可以帮助你维持输入数据流,无需你把整个数据流读到内存里面,它会在适当的时候读取适当的数据,维持在内存里面,使得数据送入的过程能够跟得上自己做训练的过程。这里给出链接,以图像为例,如何使用 tf.data 来读取本地的数据集,用这种方式读取数据过程会比较高效。

  • 链接
    https://tensorflow.google.cn/tutorials/load_data/images#using_tfdata_for_finer_control






Q7:TensorFlow 2.0 是否有 slim,感觉 slim 模块自带的 demo 挺好用的,是否有相应的替代品?


TensorFlow 2.0 版本确实没有 slim,2.0 版本已经取消了 1.0 版本之前有的 contrib 的模块,跟随而来的 slim 也没有。slim 属于上层的深度学习的 API 框架,与 Keras 的定位比较相似。在 TensorFlow 1.0 版本还没有跟 Keras 深度整合时,slim 更像 TensorFlow 中与 Keras 相似的东西去帮助我们构建模型。现在 2 深度整合了 Keras,推荐大家使用 Keras 构建模型。如果你之前已使用 slim,想转到 2.0 版本的话,可以参考官网,专门提到如何从 slim 转到 2.0 的文档,简单来说,先把 tf.slim 转到 tf.compat.v1.layer, 再看怎么转换到 Keras,一般来讲,转到 2.0 会花点时间。





Q8:深度学习需要哪些数学知识?


主要在于线性代数,最起码要知道向量、矩阵,另一部分是微积分,主要在于如何求导,尤其是多元求导,函数的自变量,向量,矩阵,如何求导,这部分用的非常多。再包括统计学,比如线性回归,梯度下降等优化算法,凸优化或者非凸的,优化算法要稍微了解一些。只是入门的话,大概需要这些,如果是做前沿工作的话,需要更深入的数学知识。







Q9:既然 TensorFlow 2.0 鼓励使用 eager 模式,那么 estimator 处于什么地位?


这两者不矛盾,eager 模式主要是更方便地构建模型,尤其会使用 Keras 等 high level 的 API 去构建模型,estimator 更多地服务于工业界的模型部署或者 TPU 使用的层面。用 estimator 封装之后,可以把模型的训练、评估、部署等一切封装好,属于开包即用的东西。TensorFlow 2.0 依然有 estimator 模块,可以继续使用,它也提供从 Keras 模型到 estimator 模型的转换,也就是说模型可以用 Keras 写,TensorFlow 提供一种能把 Keras 模型转化成 estimator 支持的方式的机制,还是推荐大家统一用 Keras 写模型,但是当你需要使用到 estimator 的一些特性时,一样可以把 Keras 模型转化成 estimator。









Q10:Hub 和 application 的区别?


我不太清楚 application 指什么,TensorFlow Hub 有个网站,直接去网站获取预训练的模型,它有开包即用的特性,可以下载下来,重新训练一下,refine 参数后可以直接应用。


相比较 tf.keras.application,TensorFlow hub 是更加 extended 的版本,你能在这里找到更大规模的、训练得更好的、更前沿的模型,模型种类也更多。tf.keras.application 更聚焦于 VGG、MobileNet 等非常经典的模型。我之前有介绍到 tf.keras. application 和 TensorFlow Hub,关于 tf.keras. application,可以看我在「TensorFlow 模型建立与训练」这一章的卷积神经网络中有提到过如何使用 Keras 预定义的经典卷积神经网络去做图像方面的模型。


以上,就是 第一次 Office Hours 中我们所收集到的重点问题与老师在直播中给出的回答。


如果你还有其他问题,可以点击在线课程底部的 “开始讨论 (Start Discussion)” 按钮前往论坛留言提问。在本周末的第二次 Office Hours 在线答疑中,我们会继续挑选部分代表性问题,在直播时请到另一位 GDE 李卓桓重点解答。别忘了继续关注噢!

  • 在线课程
    https://tf.wiki/zh_hans/mlstudyjam2nd.html


了解更多,请点击“相关阅读”查看。



— 相关阅读 —





登录查看更多
0

相关内容

Google发布的第二代深度学习系统TensorFlow
【干货书-IBM推荐】机器学习傻瓜式入门,75页pdf
专知会员服务
45+阅读 · 2020年9月29日
【2020新书】现代C++初学者指南,301页pdf
专知会员服务
156+阅读 · 2020年7月24日
【干货书】现代数据平台架构,636页pdf
专知会员服务
250+阅读 · 2020年6月15日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
Tensorflow官方视频课程-深度学习工具 TensorFlow入门
深度学习与NLP
12+阅读 · 2019年3月12日
如何快速入门TensorFlow ?丨极客时间
InfoQ
4+阅读 · 2019年1月8日
程序员精选:TensorFlow和ML前5名的课程
云栖社区
8+阅读 · 2018年8月27日
深度学习已入门?请用这本来深入!
图灵教育
6+阅读 · 2018年5月11日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
Tensorflow Eager Execution入门指南
专知
6+阅读 · 2018年4月16日
从基础概念到实现,小白如何快速入门PyTorch
机器之心
13+阅读 · 2018年2月26日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
Arxiv
0+阅读 · 2020年10月14日
Arxiv
0+阅读 · 2020年10月9日
Large-Scale Study of Curiosity-Driven Learning
Arxiv
8+阅读 · 2018年8月13日
VIP会员
相关VIP内容
【干货书-IBM推荐】机器学习傻瓜式入门,75页pdf
专知会员服务
45+阅读 · 2020年9月29日
【2020新书】现代C++初学者指南,301页pdf
专知会员服务
156+阅读 · 2020年7月24日
【干货书】现代数据平台架构,636页pdf
专知会员服务
250+阅读 · 2020年6月15日
TensorFlow Lite指南实战《TensorFlow Lite A primer》,附48页PPT
专知会员服务
68+阅读 · 2020年1月17日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
160+阅读 · 2019年10月28日
相关资讯
Tensorflow官方视频课程-深度学习工具 TensorFlow入门
深度学习与NLP
12+阅读 · 2019年3月12日
如何快速入门TensorFlow ?丨极客时间
InfoQ
4+阅读 · 2019年1月8日
程序员精选:TensorFlow和ML前5名的课程
云栖社区
8+阅读 · 2018年8月27日
深度学习已入门?请用这本来深入!
图灵教育
6+阅读 · 2018年5月11日
基于TensorFlow的深度学习实战
七月在线实验室
9+阅读 · 2018年4月25日
Tensorflow Eager Execution入门指南
专知
6+阅读 · 2018年4月16日
从基础概念到实现,小白如何快速入门PyTorch
机器之心
13+阅读 · 2018年2月26日
TensorFlow神经网络教程
Python程序员
4+阅读 · 2017年12月4日
发布TensorFlow 1.4
谷歌开发者
7+阅读 · 2017年11月23日
Top
微信扫码咨询专知VIP会员