tf.keras.layers与tf.layers有什么区别?

问题描述 投票:8回答:3

tf.keras.layers与tf.layers有什么区别?例如。他们两个都有Conv2d,它们提供不同的输出吗?如果将它们混合使用,会有什么好处(在一个隐藏层中是tf.keras.layers.Conv2d,在下一个隐藏层中是tf.layers.max_pooling2d)?

python tensorflow keras
3个回答
12
投票

由于TensorFlow 1.12,tf.layers只是tf.keras.layers的包装器。

一些示例:

卷积tf.layers只是从卷积tf.keras.layers继承,请参见源代码here

@tf_export('layers.Conv2D')
class Conv2D(keras_layers.Conv2D, base.Layer):

[[0]都适用,例如:

core tf.layers

通过将Keras集成到TensorFlow中,维护几种不同的层实现几乎没有意义。 tf.layers正在成为TensorFlow的事实上的高级API,因此@tf_export('layers.Dense') class Dense(keras_layers.Dense, base.Layer): 现在只是tf.keras的包装。


9
投票

[tf.layers是张量流角膜层,而tf.keras.layers是张量流“本征层”

您不能直接在Keras模型中使用本机层,因为它将缺少Keras API所需的某些属性。

但是,如果包裹在张量流-keras tf.keras.layers.Conv2d层中,则可以使用本机层。指向此文档的链接如下。

tf.layers.max_pooling2d


7
投票

Lambda模块是Tensorflow尝试创建类似Keras的API,而https://www.tensorflow.org/api_docs/python/tf/keras/layers/Lambda是兼容性包装器。实际上,大多数实现都引用回tf.layers,例如tf.keras.layers继承了tf.layers

tf.keras.layers.Dense

由于core implementation兼容性模块已单独检入Tensorflow存储库中,因此可能缺少Keras实际提供的功能。我会直接使用Keras或@tf_export('keras.layers.Dense') class Dense(tf_core_layers.Dense, Layer): # ... ,但不一定要混合使用。

© www.soinside.com 2019 - 2024. All rights reserved.