码上作答第一期(下)| 专家解答新鲜出炉,你学到了吗?

2020 年 6 月 18 日 TensorFlow

“码上作答”现已登陆 TensorFlow 微信公众号!

每月一位专家隔空 “面授机宜”

这样珍贵的机会你可不要错过~


在上周推送的栏目第一期内容中,

我们邀请谷歌开发者专家彭靖田

《学好 TensorFlow 2.2 的十个理由》

在总结分享他自己丰富实战经验的同时,

向广大 TensorFlow 开发者们开放征集提问。


👇 戳图片重温👇


我们除了在微信后台收到一系列问题,

还搜集了知乎等其他平台上的提问,

现在,彭靖田已经对它们作出了答复。

就让我们一起打开这份新鲜出炉的专家解答,

汲取更多 TensorFlow 进阶之路上的灵感吧。


🔔


在点开专家解答前,


也不妨试着自己先回答一下吧~



0

1


微信ID: 王玲

请问输入数据中既有序列数据(如一段文字),又有非序列数据(如一张图片),如何设计有效模型架构实现:图片+文字->情感分类?

彭靖田:

工程方面:两种类型的数据都可以使用 TFRecord 统一序列化。


模型方面:一个直观想法是文本可以通过语言模型或 Word2vec 转换为词向量,图像则可以通过 CNN 抽象特征向量。然后将两种特征向量融合作为分类器的输入。


点击空白处查看答案

0

2


微信ID: DXD

(此问题为英文)Hello, thanks in advance. May I ask a question about an example about text generation with RNN in the tutorials (https://tensorflow.google.cn/tutorials/text/text_generation). I was wondering why an embedding layer of 256 output dimensions is added to the model. Is there a particular reason? Thanks a lot 

彭靖田:

经验值(比如 vocab_size 的平方根),跟数据规模和模型复杂度有关。

点击空白处查看答案

0

3


微信ID: Devil KAI

我曾经使用过其他的深度学习框架,现在开始使用 TensorFlow,请问是建议使用 Keras Sequential API 来定义模型还是使用 Keras Subclassing API 来定义模型,两种方法之间可以转换吗? 尤其对于使用类继承的方式,我看到相关的教程很少,请问能否提供更多案例来让我们学习?

彭靖田:

1. 如果模型结构和训练流程简单,建议使用 Sequential 上手更快。

2. 两种 API 训练出来的模型最终都可以保存为 H5 和 SavedModel 格式,我理解这个层次打通是可以的。

3. 查看示例:

https://tensorflow.google.cn/guide/keras/custom_layers_and_models 

更多延伸内容请参考:

https://keras.io 

点击空白处查看答案

0

4


微信ID: Albert

请问功能上 TF 能否完全取代 scikit 呢,如果不能,哪些方面还不能?

彭靖田:

大部分机器学习模型已经可以通过 TensorFlow 实现。关于取代与否,我的理解是工具的本质不是互相取代,而是找到使用工具的场景。TensorFlow 适合 CNN,RNN,GAN 等深度学习模型,Scikit 较适合统计和数值处理。


另外,scikit-learn 和 Keras 进行了集成,可参考:

https://keras.io/examples/mnist_sklearn_wrapper/

TF在 BoostedTrees 上有所缺失,但 XGBoost 是一个很好的替代方案。

点击空白处查看答案

0

5


微信ID:愚鱼

1. 使用 tf2.x 的时候 tf.function 中设置 experiment compile 为 true 和设置全局的 jit 有什么具体区别?

2. 我最近训练一个项目由于需要同时更新多个模型,tf.function 中的代码比较复杂,如果开启jit启动训练需要近 30 分钟,有没有办法加快 autograph 的编译?

3. 关于 TensorFlow 显存占用量,如果使用 channel first 的格式可以降低显存使用量吗?之前尝试过一次貌似没有看到明显减少。

4. 关于自定义层的混合精度训练,一般来讲直接定义一个权重参与运算是可以自动半精度的,但是最近我尝试定义权重 trainable 为 flase,而手动更新值会是 fp16,报错无法更新。如果强行 cast 到 fp32 进行更新就会导致损失 nan。这个问题有什么好的解决方案吗?

1.彭靖田:

涉及 XLA 相关领域问题,我不是特别的了解。邀请 GDE Leo 进行补充: 

在 TF1 中,可以设置全局 jit,而在 TF2 中,jit 可以是为 tf.function 或 jit_scope。@tf.function 默认会采用 jit 编译,tf.function 的 experiment_compile 参数是是用于强制以 xla 进行编译优化。更多细节请参考文档:

1)https://tensorflow.google.cn/api_docs/python/tf/xla/experimental 

2)https://tensorflow.google.cn/guide/effective_tf2?hl=zh-cn#functions_not_sessions  

3)https://tensorflow.google.cn/api_docs/python/tf/function#args_1 

2. GDE Leo:

提问的场景比较模糊,可能有多种原因导致。可以试试通过这个强制关闭

with tf.xla.experimental.jit_scope(compile_ops=False):

 建议在 GitHub 提交更多信息(如代码等)。

3. 彭靖田:

channel-first 我理解应该只改变了张量各维度的存储顺序,不影响显存大小。因此,不会显著降低显存使用量。

4. 彭靖田:

这个问题非常具体,我们需要更多的信息来定位问题,建议在 GitHub 提交更多信息(如代码等)。

点击空白处查看答案

0

6


微信ID: 骆杰豪

请问 TF2 在 custom training loop 的情况下如何可视化网络运行的 timeline?

彭靖田:

1. 如果是指的模型训练时各 metrics 的变化,应该可以用 TensorBoard 回调函数获取日志,并在 TensorBoard 中可视化。

2. 如果要看 timeline 可以使用新的 TensorFlow 性能分析工具 -  TensorFlow Profiler

点击空白处查看答案

0

7


微信ID: 帅帅

请问我有一个特征是“用户看过的视频 ID”列表,对每个人来说它是不定长的,请问该怎么输入到 keras 啊,我看到 keras 接受 numpy 数组进行训练,然而 numpy 数组的 shape 是确定的,对于变长特征该怎么做呢,求教。

彭靖田:

针对这个问题可以使用 ragged tensor (https://tensorflow.google.cn/guide/ragged_tensor)或把视频  ID 变 embedding 然后取平均值;也可参考 RNN 针对 NLP 问题的做法。

针对推荐相关的问题强烈推荐阅读论文《Deep Neural Networks for YouTube Recommendations》

(https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/45530.pdf)这篇文章非常详细的做了解答。

点击空白处查看答案

0

8


微信ID: Luis

请问 h5 或 pb 模型转换为 TensorFlow Lite的 tflite 模型时有哪些需要注意的事项(如一些兼容性的处理,常见报错的处理等)?谢谢

彭靖田:

需要注意算子是否完全支持,如果要做模型量化,需要平衡模型大小和准确率高低。建议参考如下,可以尝试最新的一些转换器:

https://tensorflow.google.cn/lite/convert

点击空白处查看答案

0

9


微信ID: IsThatSo

我的神经网络模型:训练数据 880 组,输入维度 30,输出维度 1,三个隐藏层,训练步数 500,opmtimizer=adam,loss=mse

问题:损失函数的下降效果不理想,训练样本是越来越小接近零的但是验证样本的下降曲线很早就平了 loss 大概在 5 浮动,可以通过什么方式改进呢?

彭靖田:

1. 可以先尝试一下正则化(regularization)

2. 也有可能是训练/验证数据集分布不一致,可以重新 shuffle 一下

3. 另一种可能是训练数据太小导致过拟合了。如果是图像数据可以做增强,要么补充数据。或者降低神经元个数和网络层数。

点击空白处查看答案


1

0


来源:知乎

https://www.zhihu.com/question/290231959

TensorFlow Lite 可以编译和运行在非移动设备上么,比如 ubuntu centos 等?

彭靖田:

TFLite 虽然主要针对移动端和 IoT 设备,但它是跨平台的,Android/iOS/Linux/Windows/Mac 上跑都不会有问题。

点击空白处查看答案

1

1


来源:极客时间

https://time.geekbang.org/course/detail/100053201-244110

关于 TF2,听到的比较多的声音就是 API 的稳定性存在一些问题,老师对这个是怎么看的?还有就是 TF2 目前的生产应用情况,希望老师可以给出一些指导和建议。

彭靖田:

很多人提到稳定性问题主要是指 TensorFlow 1.x 到 TensorFlow 2 废弃了很多冗余 API。如果从零到一开始新项目,建议使用 TensorFlow 2。因为新版本的API 封装性更好,层次结构清晰明朗。生产环境如果已经使用了  TensorFlow 1 稳定运行,但是对性能不满意或者需要实现新网络,建议使用TensorFlow 2 并充分进行模型评估和服务压力测试。长线来看,TensorFlow 2 不断完善,性能不断提高,越来越多的在生产环境使用,是大势所趋。

点击空白处查看答案

1

2


来源:Bilibili

https://www.bilibili.com/video/BV1kK411W72G

什么时候讲一下 featurecolumns,2.0 上根本没有办法输入给 keras 的非贯序子定义模型” 

彭靖田:

请参考专门针对这个问题的RFC:

https://github.com/tensorflow/community/blob/master/rfcs/20191212-keras-categorical-inputs.md

点击空白处查看答案

对于本期答疑,

你还有哪些想法?

或是有更好的解答?

欢迎在留言区分享


想要看更多答疑内容?

1

指路《机器学习 Study Jam 答疑贴》

第一期 | 第二期

2

后台回复关键词 “手册”

你将收到一篇 TensorFlow 2.0 入门指导手册,

其中也包括谷歌工程师和 GDE 对一系列代表性问题的解答。


如果你还想要提问,

「 欢迎加入 TFUG 」 

后台回复关键词
TFUG

结交更多 TensorFlow 开发者,

在思维的交流碰撞中共同进步!


期待参与栏目互动、向专家提问,

记得扫描下方二维码,

密切关注 TensorFlow 官方公众号

与我们相约下个月的 “码上作答” 第二期


点击 “阅读原文 看官方 TensorFlow 小技巧。

登录查看更多
0

相关内容

Google发布的第二代深度学习系统TensorFlow
模型优化基础,Sayak Paul,67页ppt
专知会员服务
74+阅读 · 2020年6月8日
简明扼要!Python教程手册,206页pdf
专知会员服务
46+阅读 · 2020年3月24日
机器学习速查手册,135页pdf
专知会员服务
337+阅读 · 2020年3月15日
谷歌机器学习速成课程中文版pdf
专知会员服务
143+阅读 · 2019年12月4日
【机器学习课程】Google机器学习速成课程
专知会员服务
162+阅读 · 2019年12月2日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
机器学习入门的经验与建议
专知会员服务
91+阅读 · 2019年10月10日
论文浅尝 | 利用问题生成提升知识图谱问答
开放知识图谱
20+阅读 · 2019年11月5日
7轮面试,入职阿里,他做对了什么?
码农翻身
7+阅读 · 2019年9月5日
盘一盘 Python 系列 10 - Keras (上)
平均机器
5+阅读 · 2019年8月26日
年薪48万的程序员,他究竟做对了什么?
机器学习算法与Python学习
7+阅读 · 2018年12月28日
OpenCV 3.0 三年半后,OpenCV 4.0 终于出炉
Python开发者
5+阅读 · 2018年12月1日
资源 | Python程序员深度学习“四大名著”之一
AI研习社
94+阅读 · 2018年8月25日
2017年度图灵最受欢迎Python图书TOP10
图灵教育
5+阅读 · 2017年12月22日
Arxiv
5+阅读 · 2018年10月23日
Arxiv
5+阅读 · 2015年9月14日
VIP会员
相关VIP内容
模型优化基础,Sayak Paul,67页ppt
专知会员服务
74+阅读 · 2020年6月8日
简明扼要!Python教程手册,206页pdf
专知会员服务
46+阅读 · 2020年3月24日
机器学习速查手册,135页pdf
专知会员服务
337+阅读 · 2020年3月15日
谷歌机器学习速成课程中文版pdf
专知会员服务
143+阅读 · 2019年12月4日
【机器学习课程】Google机器学习速成课程
专知会员服务
162+阅读 · 2019年12月2日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
20+阅读 · 2019年11月7日
机器学习入门的经验与建议
专知会员服务
91+阅读 · 2019年10月10日
相关资讯
论文浅尝 | 利用问题生成提升知识图谱问答
开放知识图谱
20+阅读 · 2019年11月5日
7轮面试,入职阿里,他做对了什么?
码农翻身
7+阅读 · 2019年9月5日
盘一盘 Python 系列 10 - Keras (上)
平均机器
5+阅读 · 2019年8月26日
年薪48万的程序员,他究竟做对了什么?
机器学习算法与Python学习
7+阅读 · 2018年12月28日
OpenCV 3.0 三年半后,OpenCV 4.0 终于出炉
Python开发者
5+阅读 · 2018年12月1日
资源 | Python程序员深度学习“四大名著”之一
AI研习社
94+阅读 · 2018年8月25日
2017年度图灵最受欢迎Python图书TOP10
图灵教育
5+阅读 · 2017年12月22日
Top
微信扫码咨询专知VIP会员