Mic*_*ela 5 tensorflow tf.keras tensorflow2.0
我已经在 TensorFlow 工作了大约一年,我正在从 TF 1.x 过渡到 TF 2.0,我正在寻找有关如何tf.keras.backend
在 TF 2.0 中使用该库的一些指导。我知道过渡到 TF 2.0 应该消除建模和构建图的大量冗余,因为在早期的 TensorFlow 版本中有很多方法可以创建等效层(我非常感谢这种变化!),但我一直在理解何时使用tf.keras.backend
,因为这些操作对于其他 TensorFlow 库来说似乎是多余的。
我发现其中的一些函数tf.keras.backend
与其他 TensorFlow 库是多余的。例如,tf.keras.backend.abs
和tf.math.abs
不是别名(或者至少,它们没有在文档中列为别名),但都取张量的绝对值。查了一下源码,貌似tf.keras.backend.abs
调用了tf.math.abs
函数,所以我真的不明白为什么它们不是别名。其他tf.keras.backend
操作在 TensorFlow 库中似乎没有重复,但看起来有 TensorFlow 函数可以做等效的事情。例如,只要您明确指定 dtype ,tf.keras.backend.cast_to_floatx
就可以替换tf.dtypes.cast
为。我想知道两件事:
tf.keras.backend
库而不是等效的 TensorFlow 函数?tf.keras.backend
我缺少的这些功能(和其他等效功能)有什么不同吗?简短的回答:尽可能选择 TensorFlow 的本机 API,而不是tf.math.*
API tf.keras.backend.*
。
更长的答案:
tf.keras.backend.*
可以被视为 API 的残余。后者是服务于原始(非 TF 特定)keras 的“可交换后端”设计的设计。这与keras的历史有关,keras支持多个后端库,tensorflow曾经只是其中之一。早在 2015 年和 2016 年,其他后端,例如 Theano 和 MXNet 也相当流行。但进入 2017 年和 2018 年,TensorFlow 成为 keras 用户的主要后端。最终 keras 成为了 TensorFlow API 的一部分(在 2.x 和后来的 1.x 的小版本中)。在旧的多后端世界中,API 在无数受支持的后端上提供了独立于后端的抽象。但在 tf.keras 世界中,后端 API 的价值要有限得多。keras.backend.*
backend.*
tf.keras.backend.*
可以分为几类:
对于类别 1,使用本机 Tensorflow API。对于类别2和类别3,您可能想使用API tf.keras.backend.*
,只要您可以在文档页面中找到它: https: //www.tensorflow.org/api_docs/python/,因为文档中的具有向后兼容性保证,这样您就不必担心未来版本的 TensorFlow 会删除它或更改其行为。
归档时间: |
|
查看次数: |
749 次 |
最近记录: |