python - 现在 tf.keras.backend 有什么用,是否更安全/更面向未来进行编码?
问题描述
keras.backend
我理解在过去的多框架支持的历史需求。但是现在我们正在谈论tf.keras
,并且由于 Keras 计划只支持这个工具包,我想知道今天的用途是什么tf.keras.backend
。从我所见,它只公开了 中可用功能的一小部分tf.*
,而且发展得更慢。
那么,是tf.keras.backend
- 最好避免,因为它是过去的过时残余,可能会在未来的版本中被丢弃?
- 或者,尽可能选择一个面向未来的替代方案
tf.*
,因为这个 API 的变化速度比 TF 本身慢得多,并且不会很快下降? - 或者是其他东西?
解决方案
在这一点上很难说哪个更好。因为 keras 后端提供了独特的功能(仍然)。
例如,K.rnn
是 Keras 后端提供的一个非常有价值的功能。这可用于在时间维度上迭代顺序模型 (LSTM/GRU) 的时间输出。map()
当您必须对序列模型的每个时间输出(例如,为编码器的每个 LSTM 输出计算注意力向量)执行类似功能时,这非常有用。这是实现上述功能的一个非常方便的功能,因为(据我所知)这样做tf.*
涉及到tf.gather
并且会变得丑陋(尤其是在 TF 1.x 中)。我不太确定其他可能比tf.*
. 但可能有一些(例如K.foldl
)。
另一方面,tf.*
它确实提供了比 Keras 后端提供的更多的功能。
总之,我认为完全避免 Keras 后端还为时过早。但我确实觉得 keras 后端会tf.*
在某个时候合并,以提供更一致的 API。
推荐阅读
- unity3d - Unity Build 的构建性能问题
- java - 源服务器没有找到目标资源的当前表示,或者不愿意透露 eclipse 中存在的表示
- ios - 从闭包返回函数
- amazon-web-services - Elastic Beanstalk 条件 container_commands 不起作用
- python-3.x - 如何解决错误'WSGIRequest'对象在django 2.0.2中没有属性'Files'
- c++ - 为什么g ++在返回-1时不返回错误
- mysql - 如何获得所有相关行数的行?
- android - Android活动不是getyfull screen
- c# - 如何声明一次 lambda 属性以供重复使用?
- java - 带有 SQL 的 Android 警报管理器